1、程序要求

考卷成绩分析软件程序设计

2、任务分析

具体实现

①原始数据输入:

先用记事本编辑文件stu1.dat存储一个班学习成绩。然后在C环境下,建立一个学生信息的结构体,用r方式打开上述文件,再用fscanf读入、用printf在屏幕上显示文件内容。

②计算考试平均分、方差、最高分、最低分

利用循环使每个学生的考试成绩相加,考试成绩平方相加;然后再把和除以总人数就得到了考试成绩平均分,利用公式求出方差。接着用打擂台法求最高最低分。再用计数法算出每个分数段的学生人数。最后用fprintf将每个学生的信息写入到“1统计结果文件”文件。

③计算总成绩平均分、方差、最高分、最低分,排序

利用循环算出每个学生的总成绩,总成绩相加,除以总人数得到平均数;总成绩的平方相加,算方差;接着用打擂台法求最高最低分。接着用冒泡法利用总成绩的高低排出名次。最后用fprintf将每个学生的信息写入到“2.学生成绩文件”文件。

④找出不及格人数

利用条件语句,找出不及格学生,利用计数法计算不及格人数,然后用fprintf将每个学生的信息写入到“3.不及格学生名单”文件。

流程图:

源程序:

#include<stdio.h>
#include<stdlib.h>
#define N 20struct student{char num[10];char name[20];int score1;int score2;float sumscore;int rank;}stu[N];void readFile()                      //读取文本信息{int i;FILE *fp;char name[20]="各同学成绩.txt";char str[50];if((fp= fopen(name,"r"))==NULL){printf("error\n");exit(0);}//读列头fgets(str,50,fp);printf("%s",str);for( i=0;i<N;i++){fscanf(fp,"%s%s%d%d\n",stu[i].num,stu[i].name,&stu[i].score1,&stu[i].score2);printf("%s    %s\t %d\t     %d\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2);}fclose(fp);}void readToFile() //统计结果文件函数{int i;int m=0,n=0;int k1=0,k2=0,k3=0,k4=0,k5=0;float a=0.0,s,average,s1=0;FILE *write;char writeName[20] = "1统计结果文件.txt";if((write= fopen(writeName,"w"))!=NULL) for(i=0;i<N;i++){a=a+stu[i].score1;                                    //求考试成绩总和s1=s1+stu[i].score1*stu[i].score1;                    //求考试成绩平方和if(stu[i].score1>stu[m].score1) m=i;                  //求最大考试成绩if(stu[i].score1<stu[n].score1) n=i;                  //求最小考试成绩if(stu[i].score1<60)  k1++;if(60<=stu[i].score1&& stu[i].score1 <=69 ) k2++;if(70<=stu[i].score1&& stu[i].score1 <=79 ) k3++;if(80<=stu[i].score1&& stu[i].score1 <=89 ) k4++;if(90<=stu[i].score1) k5++;}average=a/N;                                            //求考试平均数s=(float)(s1-N*(average*average))/N;                    //求方差fprintf(write,"考试成绩平均分:%5.2f\t",average);printf("average is %5.2f\t",average);fprintf(write,"最高分:%d       最低分:%d       方差:%5.2f\n",stu[m].score1,stu[n].score1,s);printf("max=%d    min=%d  s=%5.2f\n",stu[m].score1,stu[n].score1,s);fprintf(write,"考试统计结果:\n");fprintf(write,"90-100:");printf("90-100:");for(i=0;i<k5;i++){ fprintf(write,"*");printf("*");}fprintf(write,"\n");printf("\n");fprintf(write,"80-89:");printf("80-89:");for(i=0;i<k4;i++){ fprintf(write,"*");printf("*");}fprintf(write,"\n");printf("\n");fprintf(write,"70-79:");printf("70-79:");for(i=0;i<k3;i++){ fprintf(write,"*");printf("*");}fprintf(write,"\n");printf("\n");fprintf(write,"60-69:");printf("60-69:");for(i=0;i<k2;i++){ fprintf(write,"*");printf("*");}fprintf(write,"\n");printf("\n");fprintf(write,"60以下:");printf("60以下:");for(i=0;i<k1;i++){ fprintf(write,"*");printf("*");}fprintf(write,"\n");printf("\n");fclose(write);    }void writeToFile1()                    //学生成绩文件函数{  int i,j,m=0,n=0;struct student t;float a=0.0,s1=0.0,s,average;FILE *write;char writeName[20] = "2.学生成绩文件.txt";if((write=fopen(writeName,"w"))!=NULL)        fprintf(write,"学号     姓名     考试成绩     平时成绩      总成绩      名次\n"); for(i=0;i<N;i++){stu[i].sumscore=(float)(stu[i].score1*0.8+stu[i].score2*0.2);   //计算总成绩if(stu[i].sumscore>stu[m].sumscore) m=i;if(stu[i].sumscore<stu[n].sumscore) n=i;a=a+stu[i].sumscore;s1=s1+stu[i].sumscore*stu[i].sumscore;}average=a/N;                                                         //求总成绩平均分s=(s1-N*average*average)/N;                                          //求总成绩方差for(i=0;i<N-1;i++)                                                   //排名次for(j=0;j<N-1-i;j++)if(stu[j].sumscore<stu[j+1].sumscore){ t=stu[j];stu[j]=stu[j+1];stu[j+1]=t;}for(i=0;i<N;i++){  stu[i].rank=1;for(j=0;j<N;j++){  if(stu[i].sumscore<stu[j].sumscore)    stu[i].rank++;}}for(i=0;i<N-1;i++)                                                    //排学号   for(j=0;j<N-1-i;j++)if(atoi(stu[j].num)>atoi(stu[j+1].num)){ t=stu[j];stu[j]=stu[j+1];stu[j+1]=t;}for(i=0;i<N;i++){fprintf(write,"%s\t%s\t    %d\t         %d          %5.2f          %d\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].sumscore,stu[i].rank);printf("%s\t%s\t%d\t%d\t%5.2f\t%d\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].sumscore,stu[i].rank);}for(i=0;i<N;i++){if(stu[i].sumscore>stu[m].sumscore) m=i;if(stu[i].sumscore<stu[n].sumscore) n=i;}fprintf(write,"总成绩平均分:%5.2f\t 最高分:%5.2f\t 最低分:%5.2f\t 方差:%5.2f\n",average,stu[m].sumscore,stu[n].sumscore,s);printf("总成绩平均分:%5.2f\t 最高分:%5.2f\t 最低分:%5.2f  方差:%5.2f\n",average,stu[m].sumscore,stu[n].sumscore,s);fclose(write);}void writeToFile2()  //不及格学生名单{int i,k=0;FILE *write;char writeName[30] = "3.不及格学生名单.txt";if((write=fopen(writeName,"w"))!=NULL)fprintf(write,"学号     姓名     考试成绩     平时成绩      总成绩\n");printf("不及格的学生:\n学号     姓名     考试成绩     平时成绩      总成绩\n");for(i=0;i<N;i++){if(stu[i].sumscore<60) {    k++;fprintf(write,"%s\t%s\t    %d\t         %d          %5.2f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].sumscore);printf("%s\t%s\t    %d\t         %d          %5.2f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].sumscore);}}fprintf(write,"不及格人数:%d\n",k);printf("不及格人数:%d\n",k);fclose(write);}void main(){readFile();readToFile();writeToFile1();writeToFile2();}

结果:

谢谢!!!

C语言程序设计之考卷成绩分析软件程序设计相关推荐

  1. c语言成绩管理程序设计,成绩管理程序设计报告(含代码C语言

    <成绩管理程序设计报告(含代码C语言>由会员分享,可在线阅读,更多相关<成绩管理程序设计报告(含代码C语言(19页珍藏版)>请在人人文库网上搜索. 1.大连民族学院计算机科学与 ...

  2. 华南农业大学c语言测试,华南农业大学《C语言程序设计》考卷(8份)

    内容简介: 华南农业大学2004.1<C语言程序设计>考卷 一.单项选择题(20分) 1.C程序中主函数main的位置是 . A)必须在其他函数之前 B)可以任意安排 C)必须在其它函数之 ...

  3. c语言成绩管理系统总结分析报告,c语言下学生成绩管理系统程序设计报告

    <c语言下学生成绩管理系统程序设计报告>由会员分享,可在线阅读,更多相关<c语言下学生成绩管理系统程序设计报告(17页珍藏版)>请在人人文库网上搜索. 1.信息技术学院本科课程 ...

  4. c语言循环程序模板,循环结构程序设计C语言程序

    循环结构程序设计C语言程序Tag内容描述: 1.第5章 循环结构程序设计,C 语言程序设计,北京航空航天大学 交通科学与工程学院 徐国艳,2019/7/12,2,循环的基本概念 不同形式的循环控制 多 ...

  5. c语言ns图选择结构程序设计,项目3选择结构程序设计.ppt

    项目3选择结构程序设计 项目3 选择结构程序设计 [任务目标] 掌握关系运算符.逻辑运算符和条件运算符的用法 掌握选择结构程序设计的方法 能够画出选择结构的流程图 能够用选择结构程序设计解决实际问题 ...

  6. c语言程序设计循环结构求奇数和,C语言程序设计实验报告循环结构程序设计.doc...

    C语言程序设计实验报告循环结构程序设计 C语言实验报告 课程__C程序设计_实验名称_循环结构程序设计__第 页 共 页 系 别__电气工程______________________ 实 验 日 期 ...

  7. 计算机分支结构语句的实验报告,c语言 实验报告三 分支结构程序设计

    c语言 实验报告三 分支结构程序设计 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 物光学院计算机类实验报告<C 程序设计& ...

  8. 201803考试批次2C 程序设计语言,201803考试批次2可视化程序设计(VB)D卷

    201803考试批次2可视化程序设计(VB)D卷 2018-12-15 903 201803考试批次2可视化程序设计(VB)D卷 可视化程序设计(VB) 一 .单项选择题 (共 10 题.0 / 20 ...

  9. C 语言编程 — 使用 assert 断言进行程序设计

    目录 文章目录 目录 断言 利用断言来提高代码的可测试性 自定义断言来满足需求 尽量在函数中使用断言来检查参数的合法性 避免在断言表达式中使用改变环境的语句 避免使用断言去检查程序错误 在防错性程序设 ...

最新文章

  1. VS Code竟然能约会,找对象不看脸,看编程水平
  2. Xamarin.Android真机测试提示[INSTALL_FAILED_UPDATE_INCOMPATIBLE]
  3. python爬虫流程-Python爬虫程序架构和运行流程原理解析
  4. 深入理解Java中的抽象类和接口
  5. 使用matlab编译器生成EXE文件
  6. 腾讯DCI上线基于集中控制的SR-TE方案
  7. 条款46:需要类型转换的时候请为模板定义非成员函数
  8. Java浅克隆和深克隆
  9. 实现编辑商品信息功能
  10. chattr lsattr
  11. openwrt运行linux软件,使用OpenWrt开发嵌入式Linux(二):先让系统跑起来(使用initramfs)...
  12. 一枝穿云箭,千军万马来相见——致2015届电子科大信软学院新生
  13. 计算机自动关机命令,怎么设置电脑自动关机的命令
  14. 带动态行的工作流需要我们自己做的
  15. 华为OD机试题:数独
  16. C语言_循环队列具体实现
  17. 用c语言编写出的情话,c语言for情话
  18. 2009级 华中科技大学 计算机学院 本科生名单,华中科技大学2009年本科特优生名单...
  19. Pg extention pg_buffercache
  20. 计算机作业实验报告dw感想,微机实验报告

热门文章

  1. 重要的27个Excel函数公式
  2. Quaetur实验报告
  3. Blink,或是技术社区的突破创新
  4. 阿里AI大牛聂再清重返清华!
  5. Failed to decode downloaded font:解决方法
  6. sharepoint 2016 学习系列篇(4)-如何部署sharepoint server 2016(3)-Sharepoint服务器安装和部署
  7. 如何阻止网页广告弹窗?
  8. Java--字符串讲解
  9. python 股票图表_k线图分析法_【趣味案例】用Python绘制K线图,一眼看清股市状况...
  10. 带你飞过PMP—备考上篇•乖乖看书就对了-GZ1610吴慧敏