C语言练习(31)

news/2025/1/31 18:40:47/

有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。

设5名学生的学号、姓名和3门课程成绩如下:

99101   Wang   89,98,67.5

99103   Li     60,80,90

99106   Fun    75.5,91.5,99

99110   Ling   100,50,62.5

99113   Yuan   58,68,71

在向文件stud写入数据后,应检查验证stud文件中的内容是否正确。

#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)// 定义学生结构体
typedef struct Student {int id;char name[20];double scores[3];double average;
} Student;// 计算平均成绩
void calculateAverage(Student* s) {s->average = (s->scores[0] + s->scores[1] + s->scores[2]) / 3;
}// 将学生数据写入文件
void writeToFile(Student* students, int num) {FILE* fp;fp = fopen("stud", "w");if (fp == NULL) {perror("Error opening file");exit(1);}for (int i = 0; i < num; i++) {fprintf(fp, "%d %s %.1lf %.1lf %.1lf %.2lf\n", students[i].id, students[i].name,students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].average);}fclose(fp);
}// 从文件读取数据并验证
void readAndVerify() {FILE* fp;fp = fopen("stud", "r");if (fp == NULL) {perror("Error opening file");exit(1);}Student s;while (fscanf(fp, "%d %s %lf %lf %lf %lf", &s.id, s.name, &s.scores[0], &s.scores[1], &s.scores[2], &s.average) == 6) {double calculatedAverage = (s.scores[0] + s.scores[1] + s.scores[2]) / 3;if (calculatedAverage != s.average) {printf("Error: Incorrect average for student %s\n", s.name);}else {printf("Data for student %s is correct\n", s.name);}}fclose(fp);
}int main() {Student students[5];// 输入学生数据for (int i = 0; i < 5; i++) {scanf_s("%d %s %lf %lf %lf", &students[i].id, students[i].name, &students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);calculateAverage(&students[i]);}// 将数据写入文件writeToFile(students, 5);// 从文件读取并验证readAndVerify();return 0;
}


http://www.ppmy.cn/news/1568214.html

相关文章

android 的aab包

什么是 AAB (Android App Bundle)&#xff1f; AAB (Android App Bundle) 是 Google 推出的新一代 Android 应用发布格式&#xff0c;用于取代传统的 APK 格式。AAB 的全称是 Android App Bundle&#xff0c;扩展名为 .aab&#xff0c;它并不是直接可以安装的文件&#xff0c;…

【Linux】--- 制作一个简易的shell

制作一个简易的shell 一、设置命令行二、获取输入的命令第一步和第二步代码细节剖析 三、命令行字符串分割第三步细节剖析 四、执行命令五、代码汇总及演示 想要制作一个简易的shell&#xff0c;过程分为四步 一、设置命令行 #include<stdio.h> #include<stdlib.h>…

【算法】经典博弈论问题——斐波那契博弈 + Zeckendorf 定理 python

目录 斐波那契博弈&#xff08;Fibonacci Nim&#xff09;齐肯多夫&#xff08;Zeckendorf&#xff09;定理示例分析实战演练 斐波那契博弈&#xff08;Fibonacci Nim&#xff09; 先说结论&#xff1a;当初始石子数目 n 是斐波那契数时&#xff0c;先手必败&#xff1b;否则&a…

开发环境搭建-4:WSL 配置 docker 运行环境

在 WSL 环境中构建&#xff1a;WSL2 (2.3.26.0) Oracle Linux 8.7 官方镜像 基本概念说明 容器技术 利用 Linux 系统的 文件系统&#xff08;UnionFS&#xff09;、命名空间&#xff08;namespace&#xff09;、权限管理&#xff08;cgroup&#xff09;&#xff0c;虚拟出一…

【统计的思想】假设检验(二)

假设检验是根据人为设定的显著水平&#xff0c;对被测对象的总体质量特性进行统计推断的方法。 如果我们通过假设检验否定了零假设&#xff0c;只是说明在设定的显著水平下&#xff0c;零假设成立的概率比较小&#xff0c;并不是说零假设就肯定不成立。如果零假设事实上是成立…

Vue学习四—— Home主体页面

前言 在之前已经实现了登录页面&#xff0c;项目页面增删查改的操作&#xff0c;然后选择项目&#xff0c;进入Home页面&#xff0c;也就是核心主体页面。 一、实现效果图 使用elemrnt-plus的布局容器&#xff0c;将页面分为4部分&#xff0c;也可以选择自己喜欢的布局。 在侧…

无监督学习:聚类、异常检测

聚类 工作原因我对聚类特别熟悉&#xff0c;因此视频课程基本快进看完&#xff0c;不做记录 异常检测 高斯(正态)分布 多特征异常检测 将每个特征作为独立特征&#xff08;实践证明即使不完全独立也影响不大&#xff09;计算高斯分布的参数&#xff0c;然后将待预估样本代入…

LINUX部署微服务项目步骤

项目简介技术栈 主体技术&#xff1a;SpringCloud&#xff0c;SpringBoot&#xff0c;VUE2&#xff0c; 中间件&#xff1a;RabbitMQ、Redis 创建用户 在linux服务器home下创建用户qshh&#xff0c;用于后续本项目需要的环境进行安装配置 #创建用户 useradd 用户名 #设置登录密…