当前位置: 首页 > news >正文

C语言练习(31)

有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.lryc.cn/news/529216.html

相关文章:

  • 什么是长短期记忆网络?
  • git中有关old mode 100644、new mode 10075的问题解决小结
  • Jenkins上生成的allure report打不开怎么处理
  • JSR303校验教学
  • 使用DeepSeek技巧:提升内容创作效率与质量
  • 【第六天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-一种常见的贪心算法(持续更新)
  • C# Winform制作一个登录系统
  • 算法总结-哈希表
  • 向下调整算法(详解)c++
  • 蓝桥杯之c++入门(一)【C++入门】
  • 使用Python爬虫获取1688商品拍立淘API接口(item_search_img)的实战指南
  • ElasticSearch-文档元数据乐观并发控制
  • 使用Navicat Premium管理数据库时,如何关闭事务默认自动提交功能?
  • 【单细胞-第三节 多样本数据分析】
  • (java) IO流
  • 2025年1月个人工作生活总结
  • 线性调整器——耗能型调整器
  • 【2025美赛D题】为更美好的城市绘制路线图建模|建模过程+完整代码论文全解全析
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.28 存储之道:跨平台数据持久化方案
  • 拼车(1094)
  • 基于Python的人工智能患者风险评估预测模型构建与应用研究(下)
  • < OS 有关 > Android 手机 SSH 客户端 app: connectBot
  • 向量和矩阵算法笔记
  • uniapp使用uni.navigateBack返回页面时携带参数到上个页面
  • Python 梯度下降法(二):RMSProp Optimize
  • Android Studio 正式版 10 周年回顾,承载 Androider 的峥嵘十年
  • sem_wait的概念和使用案列
  • 集合的奇妙世界:Python集合的经典、避坑与实战
  • 专业视角深度解析:DeepSeek的核心优势何在?
  • MySQL 索引存储结构