C语言题目:编写程序,输入 10 个国名,按字母字典序排序后输出。 要求:采用函数编程。

①编写函数voidinput(charstr[][N],intm)输入m个国名;②编写函数voidprint(charstr[][N],intm)输出m个国名;③编写函数... ①编写函数 void input(char str[][N],int m)输入 m 个国名;
②编写函数 void print(char str[][N],int m)输出 m 个国名;
③编写函数 CountrySort(char str[][N],int m)对 m 个国名按字母字典序排序;
④在主函数中调用 input()函数输入 10 个国名,然后调用 CountrySort()函数进行排序,
最后调用 print()函数输出排序后的结果。

附上我写的程序代码,请问为什么输入单个字母运行以后没有排序?还是像原来的顺序输出。每行输入多个字母以后,排序就混乱了。

我的代码:
#include<stdio.h>
#include<string.h>
#define M 3
#define N 100
void input(char str[][N],int m)
{
int i;
for(i=0;i<m;i++)
gets(str[i]);
}
void CountrySort(char str[][N],int m)
{
char t[M][N];int a,k,i,j=0;
for(k=m-1;k>0;k--)
for(i=0;i<k;i++)
{
a=str[i][j]-str[i+1][j];
if(a>0)
{
strcpy(t[i],str[i]);
strcpy(str[i],str[i+1]);
strcpy(str[i+1],t[i]);
j=0;
}
if(a==0)
{
i--;j++;
}
}
}
void print(char str[][N],int m)
{
int i;
for(i=0;i<m;i++)
puts(str[i]);
}
int main()
{
char str[M][N];
input(str,M);
CountrySort(str,M);
printf("\n");
print(str,M);
return 0;
}
展开
 我来答
stomachcao
2016-12-08 · TA获得超过6263个赞
知道大有可为答主
回答量:2276
采纳率:75%
帮助的人:734万
展开全部
#include<stdio.h>
#include<string.h>
#define M 3
#define N 100
void input(char str[][N],int m)
{
    int i;
    for(i=0;i<m;i++)
        gets(str[i]);
}
void CountrySort(char str[][N],int m)
 {
     char t[M][N];int a,k,i,j=0;
     for(k=m-1;k>0;k--)
     for(i=0;i<k;i++)
     {
         a=str[i][j]-str[i+1][j];
         if(a>0)
         {
             strcpy(t[i],str[i]);
             strcpy(str[i],str[i+1]);
             strcpy(str[i+1],t[i]);
             j=0;
         }
         if(a==0)
         {
            i--;j++;
         }
    }
 }
void print(char str[][N],int m)
{
    int i;
    for(i=0;i<m;i++)
        puts(str[i]);
}
int main()
{
int i;
    char str[M][N];
    for(i = 0;i<M;i++) scanf("%s",str[i]);
    CountrySort(str,M);
    printf("\n");
    print(str,M);
    return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式