请完成以下C语言功能的代码 (1)假设每个同学有三门成绩 请随机生成 100 个同学成绩【学号为 9122001--9122100】【成绩为浮点型保留一位小 数,后面相同要求】(成绩要求在 10-100 之间) (2) 将 100 个同学的学号和成绩以文本的形式保存在 文本文件 a.txt 中,每个同学 学号 和 三门成绩一行,成绩之间用逗号分隔。 例如 9122201,88,77,99 9122202,89,74,79 (3) 再次从 a.txt 文件中 读出成绩保存在数组中,打印输
时间: 2024-02-06 17:02:35 浏览: 60
以下是 C 语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_STUDENTS 100
#define ID_START 9122001
#define ID_END 9122100
#define SCORE_MIN 10.0
#define SCORE_MAX 100.0
int main() {
// 生成学生信息
srand(time(NULL));
float students[NUM_STUDENTS][4];
for (int i = 0; i < NUM_STUDENTS; i++) {
float id = ID_START + i;
float score1 = (float)(rand()) / RAND_MAX * (SCORE_MAX - SCORE_MIN) + SCORE_MIN;
float score2 = (float)(rand()) / RAND_MAX * (SCORE_MAX - SCORE_MIN) + SCORE_MIN;
float score3 = (float)(rand()) / RAND_MAX * (SCORE_MAX - SCORE_MIN) + SCORE_MIN;
students[i][0] = id;
students[i][1] = score1;
students[i][2] = score2;
students[i][3] = score3;
}
// 将学生信息写入文件
FILE *fp = fopen("a.txt", "w");
for (int i = 0; i < NUM_STUDENTS; i++) {
fprintf(fp, "%.0f,%.1f,%.1f,%.1f\n", students[i][0], students[i][1], students[i][2], students[i][3]);
}
fclose(fp);
// 从文件中读取学生信息
fp = fopen("a.txt", "r");
float scores[NUM_STUDENTS][4];
for (int i = 0; i < NUM_STUDENTS; i++) {
fscanf(fp, "%f,%f,%f,%f\n", &scores[i][0], &scores[i][1], &scores[i][2], &scores[i][3]);
}
fclose(fp);
// 打印成绩
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("%.0f,%.1f,%.1f,%.1f\n", scores[i][0], scores[i][1], scores[i][2], scores[i][3]);
}
return 0;
}
```
以上代码随机生成了 100 个学生的成绩并保存在文件中,然后再从文件中读取成绩并打印输出。
阅读全文