一个小问题 谁能帮帮我啊
main(){
char st[20],cs[5][20];
int i,j,p;
printf("input country's name:\n");
for(i=0;i<5;i++)
gets(cs[i]);
printf("\n");
for(i=0;i<5;i++)
{ p=i;strcpy(st,cs[i]);
for(j=i+1;j<5;j++)
if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);}
if(p!=i)
{
strcpy(st,cs[i]);
strcpy(cs[i],cs[p]);
strcpy(cs[p],st);
}
puts(cs[i]);}printf("\n");
}
麻烦哪位大哥告诉我下if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);}
底下这样做不是把前面的st给覆盖了 那上面的循环工作不是白做了吗
if(p!=i)
{
strcpy(st,cs[i])
或者麻烦哪位大哥帮我写下这个程序的过程吧 我都已经想了1夜了没琢磨出来
if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);}
if(p!=i)
{
strcpy(st,cs[i]); 这样的话 上面的j的循环 不是白做了吗 又被底下的cs[i]给覆盖了
这是书上写的题本题编程思路如下:五个国家名应由一个二维字符数组来处理。然而C语言规定可以把一个二维数组当成多个一维数组处理。 因此本题又可以按五个一维数组处理, 而每一个一维数组就是一个国家名字符串。用字符串比较函数比较各一维数组的大小,并排序,输出结果即可。
编程如下:
main()
{
char st[20],cs[5][20];
int i,j,p;
printf("input country's name:\n");
for(i=0;i<5;i++)
gets(cs[i]);
printf("\n");
for(i=0;i<5;i++)
{ p=i;strcpy(st,cs[i]);
for(j=i+1;j<5;j++)
if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);}
if(p!=i)
{
strcpy(st,cs[i]);
strcpy(cs[i],cs[p]);
strcpy(cs[p],st);
}
puts(cs[i]);}printf("\n");
}
我主要就是卡到if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);}
if(p!=i)
{
strcpy(st,cs[i]);这里了 因为st已经被赋值了 下面的cs[i]又给st赋值 那前面的循环不是白做了吗
我分别输入的是 shanghai beijing wuhai sichuan xinjiang
[[it] 本帖最后由 chuexuezhe 于 2008-9-27 09:42 编辑 [/it]]