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;
} 展开
②编写函数 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;
} 展开
1个回答
展开全部
#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询