请使用c语言完成以下功能的代码 (1)假设每个同学有三门成绩 请随机生成 100 个同学成绩【学号为 9122001--9122100】【成绩为浮点型保留一位小 数,后面相同要求】(成绩要求在 10-100 之间) (2) 将 100 个同学的学号和成绩以文本的形式保存在 文本文件 a.txt 中,每个同学 学号 和 三门成绩一行,成绩之间用逗号分隔。 例如 9122201,88,77,99 9122202,89,74,79 (3) 再次从 a.txt 文件中 读出成绩保存在数组中,打印输出
时间: 2023-11-22 13:53:45 浏览: 98
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_STUDENTS 100
#define MIN_SCORE 10.0
#define MAX_SCORE 100.0
int main() {
// 随机生成成绩
srand(time(NULL)); // 设置随机数种子
float scores[NUM_STUDENTS][3];
int i, j;
for (i = 0; i < NUM_STUDENTS; i++) {
for (j = 0; j < 3; j++) {
scores[i][j] = (float)(rand() % 910 + 90) / 10.0; // 生成 10.0 - 100.0 之间的浮点数
}
}
// 将成绩保存到文件
FILE *fp = fopen("a.txt", "w");
if (fp == NULL) {
printf("无法打开文件!\n");
return 1;
}
for (i = 0; i < NUM_STUDENTS; i++) {
fprintf(fp, "91222%02d,%.1f,%.1f,%.1f\n", i+1, scores[i][0], scores[i][1], scores[i][2]);
}
fclose(fp);
// 从文件中读取成绩
float scores_read[NUM_STUDENTS][3];
fp = fopen("a.txt", "r");
if (fp == NULL) {
printf("无法打开文件!\n");
return 1;
}
for (i = 0; i < NUM_STUDENTS; i++) {
fscanf(fp, "91222%*2d,%f,%f,%f\n", &scores_read[i][0], &scores_read[i][1], &scores_read[i][2]);
}
fclose(fp);
// 打印成绩
for (i = 0; i < NUM_STUDENTS; i++) {
printf("91222%02d,%.1f,%.1f,%.1f\n", i+1, scores_read[i][0], scores_read[i][1], scores_read[i][2]);
}
return 0;
}
```
阅读全文