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

原创 2015年07月07日 11:15:33

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

【项目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语言及程序设计》实践参考——学生成绩统计

返回:贺老师课程教学链接【项目1-学生成绩统计】 每位同学的信息学号、姓名、C、高数、英语成绩。定义一个学生成绩的结构体数组,其中的数据成员包括学号(char num[13])、姓名(name)、三...

第14周上机实践项目2——用文件保存的学生名单

(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分数据成员。 (2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score...

《C语言及程序设计》实践项目——动态数组 ->【项目1-学生人数没个准】

2017-04-30输入学生成绩,输出高于平均成绩的学生序号和成绩。 其中学生人数不定,可能10个,可能1000。在录入成绩之前,学生人数由键盘输入。 由于要先求出平均成绩,然后才能确定输出哪些学...

学生成绩管理系统(摘自C语言程序设计与实践)

本人的实训题,在参考书中找到程序。 但是这个程序有小问题,不知道怎么改才对,求大神指点!!!!O(∩_∩)O谢谢!!!

《C语言及程序设计》实践参考——随便改

返回:贺老师课程教学链接【项目3-随便改】保持下面程序主体for循环部分不变,用你能想到的办法修改程序,使下面程序的输出的a每次都能变化,输出1 2 3 4#include void change(i...

《C语言及程序设计》实践参考——玩转日期和时间

返回:贺老师课程教学链接【项目2-玩转日期和时间】 定义一个表示时间(包括年、月、日、时、分、秒)的结构体,然后完成下面的功能。 提示:将各个功能分别设计成函数实现,在main函数中调用,进行测试...

《C语言及程序设计》实践参考——改造链表

返回:贺老师课程教学链接【项目3 - 改造链表】 下面是一个建立动态链表的程序。阅读程序,然后按要求改造程序。#include using namespace std; #include...

《C语言及程序设计》实践参考——紧急救援

返回:贺老师课程教学链接【项目7-紧急救援】洪水突降,人们被困在各个屋顶上。如图所示: 救生船每次将从大本营出发,救了人之后将人送回大本营。已知救生船速度50米/分钟,逐个屋顶救人,每人上船1分...

《C语言及程序设计》实践参考——个税计算器之码数分离

返回:贺老师课程教学链接【项目5-个税计算器之码数分离】在学习分支结构时,我们做过一个个人所得税计算器if语句版,在其中,税率等数据直接写进了程序。这并不是一个好的方案。 下面定义了一个结构体数组,...

《C语言及程序设计》实践参考——二进制文件浏览器

返回:贺老师课程教学链接【项目5 - 二进制文件浏览器】 (1)做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容,可以参考...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)