#include<stdio.h> typedef struct sort { int a; char s[20]; }t[20],temp; int main() { int b; int i,j; scanf("%d\n", &b); for (i = 0; i < b; i++) { scanf("%s %d",&t[i].s,&t[i].a); } for (i = 0; i < b; i++) { for (j = i + 1;j <= b - 1;j++) if (t[i].a < t[j].a) { //成绩降序排序 temp = t[i]; t[i] = t[j]; t[j] = temp; } else if((t[i].a == t[j].a) && (t[i].s > t[j].s)) { //姓名升序排序 temp = t[i]; t[i] = t[j]; t[j] = temp; } } for (i = 0; i < b; i++) { printf("%s %d\n", t[i].s, t[i].a); // 修改4:使用%c输出单个字符 } return 0; }
时间: 2024-01-20 10:03:08 浏览: 25
这段代码存在一些问题:
1. 在读取字符串时应该使用%s而不是%c。
2. 在排序时循环的范围应该是从0到b-2,而不是从i+1到b-1,因为最后一个元素不需要再与其他元素比较。
3. 在使用strcpy函数时应该将目标字符串的长度加1,以便存储字符串结尾的'\0'字符。
4. 在输出字符时应该使用%c而不是%s,因为s是一个字符数组而不是一个字符串。
下面是修改后的代码:
```
#include <stdio.h>
#include <string.h>
typedef struct sort {
int a;
char s[20];
} t[20], temp;
int main() {
int b;
int i,j;
scanf("%d", &b);
for (i = 0; i < b; i++) {
scanf("%s %d", t[i].s, &t[i].a);
}
for (i = 0; i < b - 1; i++) {
for (j = i + 1; j < b; j++) {
if (t[i].a < t[j].a) { //成绩降序排序
temp = t[i];
t[i] = t[j];
t[j] = temp;
} else if ((t[i].a == t[j].a) && (strcmp(t[i].s, t[j].s) > 0)) { //姓名升序排序
temp = t[i];
t[i] = t[j];
t[j] = temp;
}
}
}
for (i = 0; i < b; i++) {
printf("%s %d\n", t[i].s, t[i].a);
}
return 0;
}
```
这样代码就可以正确地读入、排序并输出学生姓名和成绩了。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)