| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1086 人关注过本帖
标题:关于 递归 ,动态二维数组,动态申请数组进行字符串排序的问题
只看楼主 加入收藏
寒山枫
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-9-6
收藏
 问题点数:0 回复次数:2 
关于 递归 ,动态二维数组,动态申请数组进行字符串排序的问题

内容比较多,请您能耐心看下去帮我解答下问题~
1。递归的问题~书上关于递归的例题就是求n!,这个例子可以看的懂,但是我感觉我没有把递归方法弄懂,说即调用自己~但是一到用此方法来解决问题就无从下手,怎么办?
2。关于二维数组的问题,原本我想对利用动态申请的二维数组来做字符串的排序,但后来发现~用下列方法也可~对于这个已经碰上的问题,我也想弄懂一下~,在百度中找到的解释,我没有看懂~请问下,如何进行动态二维数组的申请,动态二维数组有什么用处吗?


最后一个,附上个程序:(这程序是在VC++下写的) 问题是:运行之后会发现,在“为每个字符串赋值”里面的输入提示,为什么会一连输出两个?我想了好久一直想不通~望有能力解答问题的朋友予以解答,在此向您能耐心看完我的帖子表示感谢!
//动态输入字符串的个数,将输入的这几个字符串按从小到大进行排序
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char a[20],*p[100],*exchange; //定出每个字符串的字符数,不超过20个,*p[100]的每一个指针用来指向申请来的每一个空间
int i,n,j;

/**输入要排序的字符串的个数**/
printf("请输入要排序的字符串的个数n:\n");
scanf("%d",&n);

/**为每个字符串赋值**/
for(i=0;i<n;i++)
{ p[i]=(char *)malloc(sizeof(a)); /**该部分出问题,为什么是那样输出》*/
printf("请输入第%d个字符串\n",i+1);
gets(p[i]);
}

/**字符串的排序**/
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])>0)
{ exchange=p[j];
p[j]=p[i];
p[i]=exchange;
}

/**输出字符串**/
printf("字符串按从小到大排出的序列为:\n");
for(i=0;i<n;i++)
printf("%s\n",p[i]);

}

搜索更多相关主题的帖子: 递归 动态 百度 字符 申请 
2007-10-30 12:18
bigdogme2003
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-6-23
收藏
得分:0 
for(i=0;i<n;i++)
{ p[i]=(char *)malloc(sizeof(a)); /**该部分出问题,为什么是那样输出》*/
printf("请输入第%d个字符串\n",i+1);
gets(p[i]);
}

你这里存在问题!!
可以改成
for(i=0;i<n;i++)
{ p[i]=new char;
//p[i]=(char *)malloc(sizeof(a)); /**该部分出问题,为什么是那样输出》*/
cout<<"请输入第"<<i<<"个字符串\n";
//printf("请输入第%d个字符串\n",i+1);
cin>>p[i];
//gets(p[i]);
}
2007-10-30 18:44
寒山枫
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-9-6
收藏
得分:0 

能告诉我,为什么会是那个样的?能帮我发生错误的原因不~我想把问题弄懂~

2007-10-30 21:43
快速回复:关于 递归 ,动态二维数组,动态申请数组进行字符串排序的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011880 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved