解题思路: 结合结构体与数组
用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语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:664 |
printf基础练习2 (C语言代码)浏览:567 |
【亲和数】 (C语言代码)浏览:495 |
不容易系列 (C语言代码)浏览:669 |
回文串 (C语言代码)浏览:2859 |
输出正反三角形 (C语言代码)浏览:794 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:1229 |
简单的a+b (C语言代码)浏览:606 |
1126题解浏览:595 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:546 |