用c语言编写:要求用自定义函数完成,从文件中读取分数存入数组,数组的下标就是对应的学生序号。输入序号,输出其对应的分数。 将分数加10分后将学号信息和最后分值都重新写入新的文件中。新文件名字为自己的学号。函数: int get_score(int score[], int No); 参数:int score[]存放分数的数组, int No 输入的学生序号 返回值:返回获取的学生分数
时间: 2023-06-14 19:07:57 浏览: 130
以下是使用C语言编写的程序,实现了从文件中读取分数存入数组,查找指定学生序号的分数,将分数加10分并重新写入文件中:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
int get_score(int score[], int No);
int main()
{
int score[MAX_STUDENTS];
int No, i, n;
FILE *fp_in, *fp_out;
char filename[20];
// 打开文件并读取分数
fp_in = fopen("scores.txt", "r");
if (fp_in == NULL) {
printf("无法打开文件!");
exit(1);
}
n = 0;
while (fscanf(fp_in, "%d", &score[n]) != EOF) {
n++;
if (n >= MAX_STUDENTS) break;
}
fclose(fp_in);
// 输入学生序号并输出分数
printf("请输入学生序号(1-%d):", n);
scanf("%d", &No);
if (No < 1 || No > n) {
printf("学生序号无效!");
exit(1);
}
printf("学生%d的分数是%d\n", No, get_score(score, No));
// 将分数加10分并写入新文件
sprintf(filename, "%d.txt", No);
fp_out = fopen(filename, "w");
if (fp_out == NULL) {
printf("无法创建文件!");
exit(1);
}
for (i = 0; i < n; i++) {
if (i == No - 1) {
score[i] += 10;
}
fprintf(fp_out, "%d\n", score[i]);
}
fclose(fp_out);
return 0;
}
// 获取指定学生序号的分数
int get_score(int score[], int No)
{
return score[No - 1];
}
```
程序中,`get_score()` 函数用于获取指定学生序号的分数。`main()` 函数中先打开文件并读取分数,然后输入学生序号并输出分数,最后将分数加10分并写入新文件。`sprintf()` 函数用于生成新文件名,`fprintf()` 函数用于写入文件。注意要检查文件是否成功打开或创建,以及输入的学生序号是否合法。
阅读全文