| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6004 人关注过本帖
标题:书上的题目:输入五个国家的名字,然后按照字母表顺序输出。给的答案是感觉是 ...
只看楼主 加入收藏
lupeifeng123
Rank: 2
等 级:论坛游民
帖 子:74
专家分:47
注 册:2012-12-13
结帖率:80%
收藏
已结贴  问题点数:10 回复次数:13 
书上的题目:输入五个国家的名字,然后按照字母表顺序输出。给的答案是感觉是错的 就大神指导!!!
输入五个国家的名字,然后按照字母表顺序输出。
#include<string.h>
main()
{
  char st[20],cs[5][20];
  int i,j,p;
  for(i=0;i<5;i++)
   printf("请输入国家的名字:\n");
   gets(cs[i]);
  for(i=0;i<5;i++)
    {
       p=i;strcpy(st,cs[i]);
       for(j=i+1;j<5;j++)
         if(strcmp(st,cs[j])<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");
}

感觉怎么像是在从大到小排序 而不是 按字母顺序;
我试了一下
输入:
zhong guo
ri ben
mei guo
chao xian
fa guo
输出很坑,求指导,求高手给出正确的答案谢谢了  
搜索更多相关主题的帖子: include 字母表 
2012-12-26 11:13
TUILP_JADE
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2012-10-22
收藏
得分:3 
#include<string.h>
 main()
 {
   char st[20],cs[5][20];
   int i,j,p;
   for(i=0;i<5;i++)
   {
    printf("请输入国家的名字:\n");
    gets(cs[i]);
    }
   for(i=0;i<5;i++)
     {
        p=i;strcpy(st,cs[i]);
        for(j=i+1;j<5;j++)
          if(strcmp(st,cs[j])<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");
 }
 
2012-12-26 11:27
a151141
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:197
专家分:680
注 册:2012-10-19
收藏
得分:3 
错误1
没写#include<stdio.h>
错误2
for(i=0;i<5;i++)
    printf("请输入国家的名字:\n");
    gets(cs[i]);
这个for没写括号
错误3
    for(j=i+1;j<5;j++)
          if(strcmp(st,cs[j])<0)
           {p=j;strcpy(st,cs[j])}
          if(p!=i)
           {
            strcpy(st,cs[i]);
            strcpy(cs[i],cs[p]);
            strcpy(cs[p],st);
            }
这个for 也没加括号
改正如下
#include<stdio.h>
#include<string.h>
 main()
 {
   char st[20],cs[5][20];
   int i,j,p;
   for(i=0;i<5;i++)
   {printf("请输入国家的名字:\n");
   gets(cs[i]);}
   for(i=0;i<5;i++)
     {
        p=i;strcpy(st,cs[i]);
        for(j=i+1;j<5;j++)
        {if(strcmp(st,cs[j])>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");
 }

世界上幸福的事就是抓到一只羊,更幸福的事就是抓到两只羊……
2012-12-26 13:38
lupeifeng123
Rank: 2
等 级:论坛游民
帖 子:74
专家分:47
注 册:2012-12-13
收藏
得分:0 
3楼你看的挺仔细,这不是重点,要写出按照字母顺序输出,这个程序是课本上的,我试过了按照书上的程序结果是不会按照字母顺序输出滴

一步一个脚印,贵在坚持。
2012-12-26 13:54
farewelllan
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2012-12-26
收藏
得分:3 
- -、我会告诉你我在书上找出了很多的神奇错误么。而且、有很多的“错误”,你换个编程软件又是对的了、
2012-12-26 20:52
lupeifeng123
Rank: 2
等 级:论坛游民
帖 子:74
专家分:47
注 册:2012-12-13
收藏
得分:0 
你可以将题目再读一遍吗?明白在过后再看吧???

一步一个脚印,贵在坚持。
2012-12-27 08:46
lupeifeng123
Rank: 2
等 级:论坛游民
帖 子:74
专家分:47
注 册:2012-12-13
收藏
得分:0 
#include<string.h>
main()
{
  char st[20],cs[5][20];
  int i,j,p;
  printf("请输入国家的名字:\n");
  for(i=0;i<5;i++)
   gets(cs[i]);
  for(i=0;i<5;i++)
    {
       p=i;strcpy(st,cs[i]);
       for(j=i+1;j<5;i++)
         if(strcmp(st,cs[j])<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");
}
你帮我加的大括号也不对 你没有看懂这个程序的功能,也没有读懂题目啊 ;这个程序只是将输入的五个国家的名字,按照大小输出排序输出,而不是按照字母表进行排序输出例如
输入:
zhong guo
ri ben
mei guo
chao xian
fa guo
如果要求按照字母表输出,应该是:
chao xian
fa guo
mei guo
ri ben
zhong guo
上面那个程序压根就实现不了,只求个能够实现按照字母顺序输出的程序。
求个个高手指点啊

一步一个脚印,贵在坚持。
2012-12-27 09:01
洋子喻
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2012-12-27
收藏
得分:3 
我还没接触C语言,下学期开课,完全看不懂的说。
2012-12-27 09:08
lupeifeng123
Rank: 2
等 级:论坛游民
帖 子:74
专家分:47
注 册:2012-12-13
收藏
得分:0 
就没有人会的吗

一步一个脚印,贵在坚持。
2012-12-27 11:59
a151141
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:197
专家分:680
注 册:2012-10-19
收藏
得分:0 
回复 4楼 lupeifeng123
再试试这个
#include<stdio.h>
 #include<string.h>
 main()
 {
    char st[20],cs[5][20];
    int i,j,p;
    for(i=0;i<5;i++)
    {printf("请输入国家的名字:\n");
    gets(cs[i]);}
    for(i=0;i<5;i++)
      {
         p=i;strcpy(st,cs[i]);
         for(j=i+1;j<5;j++)
         if(strcmp(st,cs[j])>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");
 }

世界上幸福的事就是抓到一只羊,更幸福的事就是抓到两只羊……
2012-12-27 13:38
快速回复:书上的题目:输入五个国家的名字,然后按照字母表顺序输出。给的答案是 ...
数据加载中...
 
   



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

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