【第22期】观点:IT 行业加班,到底有没有价值?

《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语言程序设计-现代方法----示例及练习题----第三章--格式化输入输出

作者: selfimpr 博客: http://blog.csdn.net/lgg201 邮箱: lgg860911@yahoo.com.cn C语言程序设计----示例及练习题----第二章--格式化输入输出 声明: 部分示例代码为书中源代码.其他原创代码多数对原题要求有所改动. ...

C语言及程序设计[套餐]课程主页

课程链接:http://edu.csdn.net/combo/detail/30,提供所有的视频和课件下载。  三部分的课程主页,提供了为每一课时配套的自测、示例下载,以及程序阅读、程序填空、实践项目...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Kenneth C.Louden的《程序设计语言——原理与实践》的一点笔记

编程范式:面向对象程序设计(C++、Java、Smalltalk)、函数式程序设计(Scheme、Haskell、ML)、逻辑式程序设计(Prolog)。 以拜伦之女Ada(历史上第一位程序员:分析机)命名的Ada。 FORTRAN(FORmula TRANslation) COBOL(...

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

/* *程序的版权和版本声明部分: *Copyright(c)2014,烟台大学计算机学院学生 *All rights reserved. *文件名称:用文件保存的学生名单 *作者:刘中林 *完成日期...

菜鸟修炼C语言小设计之——学生成绩管理系统

一、本设计涉及的重要C语言知识有: <p style="font-family: KaiTi_GB2312; margin-top: 4px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; padding-top:...
  • mmdev
  • mmdev
  • 2011-11-12 09:28
  • 406
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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