当前位置: 代码迷 >> C语言 >> [求助]二维数组问题
  详细解决方案

[求助]二维数组问题

热度:173   发布时间:2007-01-08 12:52:41.0
[求助]二维数组问题
输入五个国家的名称按字母顺序排列输出
# include<stdio.h>
#include<string.h>
void 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");
  }
}
我输入了五个国家的名字之后看到的结果有前三个是按我要的顺序排列,后两个就造反了还是原来的顺序
搜索更多相关的解决方案: 二维  字母  include  国家  

----------------解决方案--------------------------------------------------------

不好意思,多试了几下就有问题了

[此贴子已经被作者于2007-1-8 13:58:59编辑过]


----------------解决方案--------------------------------------------------------
# include<stdio.h>
#include<string.h>
void 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");
  }
}
红色的去掉应该就正确了吧?
我试了5次都没错

----------------解决方案--------------------------------------------------------
建议将每部分的功能实现空一行隔开.这样修改起来就一目了然.
----------------解决方案--------------------------------------------------------
为什么啊 我改了还是一样啊

----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<string.h>
void 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");
}
没错了吧?

[此贴子已经被作者于2007-1-8 17:37:27编辑过]


----------------解决方案--------------------------------------------------------
以下是引用wangch364200在2007-1-8 12:52:41的发言:
输入五个国家的名称按字母顺序排列输出

我输入了五个国家的名字之后看到的结果有前三个是按我要的顺序排列,后两个就造反了还是原来的顺序


活了?


----------------解决方案--------------------------------------------------------
  相关解决方案