提交记录 #384
提交时间:2024-12-03 16:05:36
语言:c
状态:CompileError
编译情况:编译错误
code.c: In function ‘main’:
code.c:12:5: warning: implicit declaration of function ‘scanf_s’; did you mean ‘scanf’? [-Wimplicit-function-declaration]
12 | scanf_s("%d", &n);
| ^~~~~~~
| scanf
/usr/bin/ld: /tmp/ccdlTgAV.o: in function `main':
code.c:(.text.startup+0x20): undefined reference to `scanf_s'
/usr/bin/ld: code.c:(.text.startup+0x5d): undefined reference to `scanf_s'
/usr/bin/ld: code.c:(.text.startup+0x81): undefined reference to `scanf_s'
collect2: error: ld returned 1 exit status
固定测试点暂不可用
附加测试点暂不可用
5757.【中学】学生成绩排序
#include <stdio.h>
int main() {
int n;
int max_name_length = 100; // 假设最大姓名长度为100
char namestr[100*100]; // 100个学生,每个学生的姓名最大长度100
int grade[100];
int name_index[100]; // 存储每个学生姓名在namestr中的起始位置
// 输入学生人数
scanf_s("%d", &n);
// 输入每个学生的姓名和成绩
for (int i = 0; i < n; i++) {
// 读取学生姓名
scanf_s("%s", &namestr[i * max_name_length]); // 每个学生的姓名占一个最大长度的空间
name_index[i] = i * max_name_length; // 记录每个学生姓名的起始位置
scanf_s("%d", &grade[i]);
}
// 冒泡排序:根据成绩从高到低排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (grade[j] < grade[j + 1]) {
// 交换成绩
int tempGrade = grade[j];
grade[j] = grade[j + 1];
grade[j + 1] = tempGrade;
// 交换姓名(逐字符交换)
for (int k = 0; k < max_name_length && namestr[name_index[j] + k] != '\0' && namestr[name_index[j + 1] + k] != '\0'; k++) {
char tempChar = namestr[name_index[j] + k];
namestr[name_index[j] + k] = namestr[name_index[j + 1] + k];
namestr[name_index[j + 1] + k] = tempChar;
}
}
}
}
// 输出排序后的结果
for (int i = 0; i < n; i++) {
printf("%s,%d\n", &namestr[name_index[i]], grade[i]);
}
return 0;
}