解题思路: 结合结构体与数组
用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语言训练-字符串正反连接 (C语言代码)浏览:664 |
c primer plus 第十二章 12.1小节浏览:400 |
Pascal三角 (C语言代码)格式错误浏览:551 |
P1001 (C语言代码)浏览:836 |
矩阵加法 (C语言代码)浏览:1768 |
C语言训练-亲密数 (C语言描述,反正怎么都能对)浏览:2256 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:525 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:636 |
字符逆序 (C语言代码)浏览:675 |
简单的a+b (C语言代码)浏览:857 |