注意事项: 不止一组输入!!不止一组输入!!!
也就是说输入其实是:
3
xxxx
xxxx
xxxx
5
xxxxx
xxxx
xxxx
xxxx
xxxx
参考代码:
#include<stdio.h>
#include<string.h>
typedef struct student
{
char name[200];
int score;
int age;
}s;
void swap(s *s1, s *s2)
{
s temp;
temp = *s1;
*s1 = *s2;
*s2 = temp;
}
int main(){
int n,cnt;
s A[1000];
while(~scanf("%d",&n))
{
cnt = 0;
while(n--)
{
scanf("%s %d %d",A[cnt].name,&A[cnt].age,&A[cnt].score);
cnt++;
}
//swap(&A[0],&A[1]);
// s temp;
// temp = A[0];
// A[0] = A[1];
// A[1] = temp;
//printf("%s",A[1].name);
//cnt = 3 A读取完毕
for (int i = 0; i < cnt; i++)
{
for(int j = 0; j < cnt - i - 1; j++)
{
if(A[j].score > A[j+1].score)
{
swap(&A[j],&A[j+1]);
}
else if(A[j].score == A[j+1].score)
{
if(strcmp(A[j].name,A[j+1].name)>0)
{
swap(&A[j],&A[j+1]);
}
else if(strcmp(A[j].name,A[j+1].name)==0)
{
if(A[j].age>A[j+1].age)
{
swap(&A[j],&A[j+1]);
}
}
}
}
}
for(int i = 0; i < cnt; i++)
{
printf("%s %d %d\n",A[i].name,A[i].age,A[i].score);
}
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复