用C语言 任意输入五个国家名字再以首字母为序输出?怎么写?

如题所述

1 用二维字符数组存储每个名字,每行一个;

2 输入五个字符串,即五个国家名字;

3 排序,注意用strcmp比较,用strcpy赋值交换;

4 输出结果。

代码如下:

int main()
{
    char s[5][100],t[100];
    int i,j;
    for(i = 0; i < 5; i ++)
        scanf("%s",s[i]);
    for(i = 0; i < 4; i ++)
        for(j = i+1; j<5;j++)
        {
            if(strcmp(s[i],s[j])>0)
            {
                strcpy(t,s[i]);
                strcpy(s[i],s[j]);
                strcpy(s[j],t);
            }
        }
        
    for(i = 0; i < 5; i ++)
        printf("%s ",s[i]);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
用第一个字母来排队就可以了。
if (s[i][0]>s[j][0]){ 交换国家名字;};
程序如下:

#include <stdio.h>
main()
{
char s[5][20]={"Usa","China","India","Egypt","Korea"};
char t[20];
int i,j;
for (i=0;i<4;i++) for (j=i+1;j<5;j++)
if (s[i][0]>s[j][0]){
strcpy(t,s[i]);strcpy(s[i],s[j]);strcpy(s[j],t);
};
for (i=0;i<5;i++) printf("%s\n",s[i]);
}本回答被网友采纳
第2个回答  2015-06-17
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "string.h"
int main(void){
    char nn[6][70],i,j,k;
    printf("Please enter the name of 5 countries...\n");
    for(i=0;i<5;scanf("%s",nn[i++]));
    for(i=0;i<4;i++){
        for(k=i,j=k+1;j<5;j++)
            if(nn[k][0]>nn[j][0]) k=j;
        if(k!=i){
            strcpy(nn[5],nn[k]);
            strcpy(nn[k],nn[i]);
            strcpy(nn[i],nn[5]);
        }
        printf("%s\n",nn[i]);
    }
    return 0;
}

相似回答