内容比较多,请您能耐心看下去帮我解答下问题~
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]);
}