#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX_ORDER 20
struct information{
int Order;
char Name[16];
int Number;
char Location[16];
};
int main()
{
int i,j,n;
struct information Name_information[MAX_ORDER];
struct information temp;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d %s %d %s",&Name_information[i].Order,&Name_information[i].Name,&Name_information[i].Number,&Name_information[i].Location);
for(i=0;i<n-1;i++)
{
for(j<i;j<n-1;j++)
{
if(strcmp(Name_information[i].Name,Name_information[j].Name)>0)
{
temp=Name_information[i];
Name_information[i]=Name_information[j];
Name_information[j]=temp;
}
}
}
for(i=0;i<n;i++)
printf("%d %s %d %s\r\n",Name_information[i].Order,Name_information[i].Name,Name_information[i].Number,Name_information[i].Location);
}
题目描述
2014 年 8 月在南京举行第 2 届奥林匹克青年运动会,每个国家在报名参加时需要填写国家名字,参加的人数,所属的洲,同时系统会自动生成一个报名序号,在开幕式的运动员出场顺序上,按照国家名字的英文字母顺序来出场。请编写一个计算机程序实现国家名字的排序(升序),东道主中国(China)在最后一个出场
输入描述
多组输入,其中每组输入的第一行表示参加国家数 n(占一行),下面 n 行是国家的报名信息(序号、国家名称、参加人数、所属大洲)
输出描述
按国家名字的字母序输出信息(东道主国家名字最后输出)。
样例输入
5
1 France 123 Europe
2 Russia 254 Europe
3 Japan 235 Asia
4 Germany 185 Europe
5 China 560 Asia
样例输出
1 France 123 Europe
4 Germany 185 Europe
3 Japan 235 Asia
2 Russia 254 Europe
5 China 560 Asia
21行你用到了j<i,你确定是这样子的吗还是说应该是j=i?
如果是j<i,那么你j在13行的时候就需要初始化,也就是int j=0,这样你才能在21行用到j<i,不然就是像你的报错那样说j为初始化,如果是j=i,那么这句就相当于是j的初始化,值为i
int j = 0; 即可
是不是在第21行插入j=0;
双重循环的第二重每次是否需要将j重新归0
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html