解题思路: 结合结构体与数组
用swap函数替换 达成排序,这里是将小的值排到前面
有些许参考https://blog.dotcpp.com/a/66926 答主的错误点
注意事项: 要不是参考了该答主的错误点,网页做不出,错了好多次 答案错误50
参考代码: #include #include typedef struct { char name[101];//第一个易错点,因为还要多储存一个'\0'; int year; int cj;//成绩 cj }stu;//结构体名为stu 学生student缩写 void swap(stu* a,stu* b)//swap交换函数 { stu t; t=*a;*a=*b,*b=t; } int main() { int n,k; stu a[1000]; while(~scanf("%d",&n)) //多次输入n,测试数据有多组 { for(int i=0;i<n;i++)//存入数据 { scanf("%s%d%d",&a[i].name,&a[i].year,&a[i].cj); } for(int i=0;i<n;i++)//这个循环是来找最小的,找出每次循环的最小,排到每次循环的前面,使数组由小到大排列 { int min=i; for(k=i;k<n;k++) { if(a[k].cj<a[min].cj) min=k; if(a[k].cj==a[min].cj){if(strcmp(a[k].name,a[min].name)<0) min=k;} if(a[k].cj==a[min].cj&&strcmp(a[k].name,a[min].name)==0){if(a[k].year<a[min].year) min=k;} } swap(&a[min],&a[i]); } for(int i=0;i<n;i++)//输出 { printf("%s %d %d\n",a[i].name,a[i].year,a[i].cj); } } }
0.0分
0 人评分
【回文数(二)】 (C++代码)浏览:873 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:435 |
最小公倍数 (C语言代码)浏览:863 |
成绩转换 (C语言代码)浏览:1006 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:661 |
WU-判定字符位置 (C++代码)浏览:1406 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:473 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:569 |
1052题解(链表操作)浏览:674 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:573 |