《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++语言实践参考——用文件保存的学生名单

返回:贺老师课程教学链接  项目要求【项目2-用文件保存的学生名单】文件score.dat中保存的是若干名学生的姓名和C++课、高数和英语成绩。(1)定义学生类,其中包含姓名、C++课、高数和英语成绩...

《C语言及程序设计》实践参考——学生成绩统计

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

《C语言及程序设计》实践参考——学生成绩处理

返回:贺老师课程教学链接【项目2-学生成绩处理】(1)定义学生结构体,在结构体数组中,输入了学生学号和两门课的成绩,计算均分后,输出成绩单,请在下面的程序基础上,将程序补充完整。 #include ...

C++程序设计课程2013级学生名单

1曹昕卓2 崔俊3 冯冬影4 高古尊5 何新新6 孔令玺7 孔云8 李家豪9 李新鹏10 刘芳 11 刘江 13 刘中林14 牛建伟15 任子仪16 尚振伟17 孙玲倩18 田成琳19 王洪海20 王...

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

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

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

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

第四周《C语言及程序设计》实践项目43 从文本文件中读入数据

【项目4-算工资】 /* * Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名称:【项目4-算工资】.cpp *...

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

本人的实训题,在参考书中找到程序。 但是这个程序有小问题,不知道怎么改才对,求大神指点!!!!O(∩_∩)O谢谢!!!...
  • lan6496
  • lan6496
  • 2017年01月02日 14:06
  • 400

《C语言及程序设计》实践参考——字符串处理函数

返回:贺老师课程教学链接  实践要求【项目4-字符串处理函数】指针是神奇的,指向整型的指针int *p1,可以操作整型数组int a[];指向字符型的指针char *p2,可以操作字符数组(字符串)c...

《C语言及程序设计》实践参考——构造菜单

返回:贺老师课程教学链接  项目要求【项目:构造菜单】在应用程序中,很多都将各种功能设计了“菜单”供用户选择,本项目做些体验。请编写程序,显示“菜单”,由用户输入代号后,输出对所选项目的简短评论。运行...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《C语言及程序设计》实践参考——用文本文件保存的学生名单
举报原因:
原因补充:

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