开发者社区> 贺利坚> 正文

《C语言及程序设计》实践参考——用文本文件保存的学生名单

简介: 返回:贺老师课程教学链接 【项目2-用文本文件保存的学生名单】 文件score.dat中保存的是若干名学生的姓名和C语言课、高数和英语成绩。 (1)定义学生结构体,其中包含姓名、C++课、高数和英语成绩及总分数据成员。 //定义学生结构体 typedef struct { string name; double cpp; double mat
+关注继续查看

返回:贺老师课程教学链接

【项目2-用文本文件保存的学生名单】
文件score.dat中保存的是若干名学生的姓名和C语言课、高数和英语成绩。
(1)定义学生结构体,其中包含姓名、C++课、高数和英语成绩及总分数据成员。

//定义学生结构体
typedef struct 
{
    string name;
    double cpp;
    double math;
    double english;
    double total;
}Student

(2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。

int main( ){
    Student stud[200],t; //stud[200]为保存数据的对象数组
    //从文件score.dat中读入数据,保存到对象数组中

    //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中
    return 0;
}

[参考解答]

#include <stdio.h>
#include <stdlib.h>
typedef struct
{
    char num[13];
    char name[10];
    double c;
    double math;
    double english;
    double total;
} Student;
int pass(Student); //判断一个学生的各门课是否通过
int main( )
{
    Student stud[200]; //stud[200]为保存数据的对象数组
    int stu_num=0, total_sum=0, i=0;
    //从文件score.dat中读入数据,保存到对象数组中
    FILE *fp;
    if((fp=fopen("score.dat","r"))==NULL)
    {
        printf("数据文件不存在!\n");
        exit(1);
    }
    while(!feof(fp))
    {
        fscanf(fp, "%s %s", stud[i].num, stud[i].name);
        fscanf(fp, "%lf %lf %lf", &stud[i].c,&stud[i].math, &stud[i].english);
        stud[i].total=stud[i].c+stud[i].math+stud[i].english;
        stu_num++;   //在读入数据过程中,记录下来具体的学生人数和总分和
        total_sum+=stud[i].total;
        i++;
    }
    fclose(fp);


    //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中
    if(stu_num>0)
    {
        double total_avg = total_sum / stu_num;
        fp=fopen("pass_score.dat","w");
        if(!fp)
        {
            printf("无法输出到文件!\n");
            exit(1);
        }

        for(i=0; i<stu_num; i++)
        {
            if(stud[i].total>total_avg&&pass(stud[i]))
            {
                fprintf(fp, "%s\t%s\t", stud[i].num, stud[i].name);
                fprintf(fp, "%.2lf\t%.2lf\t%.2lf\t", stud[i].c,stud[i].math, stud[i].english);
                fprintf(fp, "%.2lf\n", stud[i].total);
            }
        }
        fclose(fp);
        printf("请到文件pass_score.dat中查看名单\n");
    }
    return 0;
}

int pass(Student s) //判断一个学生的各门课是否通过
{
    int p=0;
    if(s.c>=60 &&s.english>=60&&s.math>=60)
        p=1;
    return p;
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C语言程序设计第五版谭浩强课后答案 第五章习题答案(3-17题)
C语言程序设计第五版谭浩强课后答案 第五章习题答案(3-17题)
61 0
面向对象的程序设计C++课堂复盘总结 C语言复习+C++基础语法
Stay Hungry,Stay Foolish. 任何人都能写出机器能看懂的代码,但只有优秀的程序员才能写出人能看懂的代码。 有两种写程序的方式:一种是把代码写得非常复杂,以至于 “看不出明显的错误”;另一种是把代码写得非常简单,以至于 “明显看不出错误”。 “把正确的代码改快速”,要比 “把快速的代码改正确”,容易得太多。 C++ 庞大、复杂是无法改变的事实,所以我们要把这三条格言铭记在心,对它保持一颗 “敬畏” 的心,在学习语言特性的同时,千万不要滥用特性,谦虚谨慎,戒骄戒躁。 -------CSDN Albert Edison
25 0
C语言总结(第7章 用函数实现模块化程序设计)
为什么要用函数 为了更好的实现模块化程序设计 函数(function)也有功能的意思
48 0
C语言总结(第5章循环结构程序设计)
第5章循环结构程序设计 结构化程序设计的3种基本结构: 循环结构 顺序结构 选择结构
90 0
C语言总结(第2章算法——程序的灵魂 第3章最简单的C程序设计——顺序程序设计 第4章选择结构程序设计)
算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 6是解决做什么和怎么做的问题。简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵魂。
249 0
C语言程序设计第五版 谭浩强 p292 6, 9 14 p330 1 , 5题解
C语言程序设计第五版 谭浩强p 215-216 1. 4. 6. 8.11题解 (其它) p292 6, 9 14 p330 1 , 5
12 0
C语言程序设计第五版 谭浩强p 215-216 1. 4. 6. 8.11题解
C语言程序设计第五版 谭浩强p 215-216 1. 4. 6. 8.11题解
14 0
C语言程序设计第五版 谭浩强 P137 3,6,8,9题解
C语言程序设计第五版 谭浩强 P137 3,6,8,9题解
16 0
C语言程序设计第五版 谭浩强 P107 3,4,6,8,9题解
1)3+4>5 优先3+4得到结果7,因此7>5结果为真; 4==5为假,一真一假逻辑与最终结果为假。结果为0 (2)优先算术运算4+5得到7,非0则为真,4-5得到-1,非0则为真,||和&&优先级最低,自左向右运算,3||7结果为1,1&&-1结果为1,一真一假逻辑与最终结果为假。结果为1
20 0
【C语言进阶】C语言程序设计:动态通讯录(顺序表实现)
目录 动态通讯录的实现 一、实验的目的和意义 二、实验内容描述 三、功能描述 四、数据结构 1、三大模块 2、结构设计 3、动态开辟 4、文件操作 5、主要函数 五、流程图及模块算法 1.Contacct 程序运行流程图 2、AddContct(增加)函数流程图 3、DelContct(删除)函数流程图 4、SearchContct(查找)函数流程图 5、ModifyContct(修改)函数流程图 6、SortContct(排序)函数流程图 六、实验测试结果 七、实验总结 八、源代码 1、DynamicContact.h 2、DynamicC
44 0
+关注
贺利坚
烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
文章
问答
视频
文章排行榜
最热
最新
相关课程
更多
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载