用C语言编写查看本人的学号、姓名、所在专业、毕业否、出生日期、3 门课程的学分(高数 3 学分、 数字逻辑 2 学分、离散数学 4 学分)及对应成绩和绩点(至少20名学生)通过文件读取
时间: 2023-08-05 20:08:54 浏览: 197
好的,这个问题需要用到C语言的文件读写功能。下面是一个简单的代码示例,它可以从文件中读取多个学生的信息,包括学号、姓名、专业、毕业状态、出生日期、三门课程的学分和成绩,然后计算绩点并输出到控制台。
```c
#include <stdio.h>
#define MAX_STUDENTS 20
struct student {
char id[20];
char name[20];
char major[20];
char graduate[10];
char birthday[20];
int math_credit;
int digital_logic_credit;
int discrete_math_credit;
double math_score;
double digital_logic_score;
double discrete_math_score;
double gpa;
};
int main() {
FILE *fp;
struct student students[MAX_STUDENTS];
int count = 0;
fp = fopen("students.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
while (count < MAX_STUDENTS && fscanf(fp, "%s%s%s%s%s%d%d%d%lf%lf%lf",
students[count].id,
students[count].name,
students[count].major,
students[count].graduate,
students[count].birthday,
&students[count].math_credit,
&students[count].digital_logic_credit,
&students[count].discrete_math_credit,
&students[count].math_score,
&students[count].digital_logic_score,
&students[count].discrete_math_score) == 11) {
double total_credit = students[count].math_credit + students[count].digital_logic_credit + students[count].discrete_math_credit;
double total_score = students[count].math_score * students[count].math_credit
+ students[count].digital_logic_score * students[count].digital_logic_credit
+ students[count].discrete_math_score * students[count].discrete_math_credit;
students[count].gpa = total_score / total_credit;
count++;
}
fclose(fp);
for (int i = 0; i < count; i++) {
printf("%s %s %s %s %s %d %d %d %.1lf %.1lf %.1lf %.2lf\n",
students[i].id,
students[i].name,
students[i].major,
students[i].graduate,
students[i].birthday,
students[i].math_credit,
students[i].digital_logic_credit,
students[i].discrete_math_credit,
students[i].math_score,
students[i].digital_logic_score,
students[i].discrete_math_score,
students[i].gpa);
}
return 0;
}
```
这个程序首先打开名为 "students.txt" 的文本文件,然后逐行读取文件内容,把每个学生的信息存储到一个结构体数组中。读取时使用了 fscanf 函数,这个函数可以按照指定格式从文件中读取数据,并把读取到的数据赋值给指定的变量。
读取完文件内容后,就可以计算每个学生的绩点了。绩点的计算方法是:把每门课程的学分乘以对应的成绩,然后把所有的结果加起来,最后除以总学分数。计算完绩点后,把学生的信息和绩点输出到控制台。
注意,上面的代码只是一个简单的示例,实际的程序可能还需要进行更多的错误处理和数据验证。
阅读全文