C语言期末程序设计报告.doc

上传人:星星 文档编号:1077706 上传时间:2024-04-13 格式:DOC 页数:29 大小:1.20MB
下载 相关 举报
C语言期末程序设计报告.doc_第1页
第1页 / 共29页
C语言期末程序设计报告.doc_第2页
第2页 / 共29页
C语言期末程序设计报告.doc_第3页
第3页 / 共29页
C语言期末程序设计报告.doc_第4页
第4页 / 共29页
C语言期末程序设计报告.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、一、实验预习报告内容 预习日期: 2013 年 5 月 27 日实验预习报告内容原则上应包含实验目的、实验所用主要仪器药品、实验原理与公式、实验预习疑问等项目。一、实验目的1掌握一维、二维数组、字符数组的定义、赋值和输入/输出的方法。2掌握数组的特点3熟悉数组有关的常用算法,如查找、排序、删除等4掌握函数的定义、声明和调用5.复习选择、循环结构程序设计二、预习问题1. 字符数组的使用应注意哪些问题?2函数的声明有何作用,如何进行函数的声明?三、实验内容编写程序实现学生成绩管理系统:1首先显示系统登陆提示,要求用户输入登陆密码,密码正确后显示学生成绩管理系统的菜单。用户根据菜单选择相应的功能并执

2、行。2成绩管理系统应实现的主要功能(但不限于以下功能)(1)从键盘输入n个学生(n的值由键盘输入,0n=50)多门(不少于3门)课程的成绩及其学号、姓名。(2)计算各科平均成绩,并输出低于平均分的学生学号、姓名、成绩。(3)能够根据用户选择,对学生总成绩从高到低排名,或从低到高排名,输出其学号、姓名和总成绩。(4)能够根据用户选择,根据学生学号或者姓名查找该生的成绩(5)统计各分数段的学生人数及比例(6)查找并输出某门课程某一分数段的学生学号、姓名及成绩实验预习1、 字符数组使用的时候要先定义,且指定数组长度,在长度定义的时候不能使用变量;若不直接指定字符数组长度,可根据需要直接给出字符的元素

3、。2、 在函数调用前声明,是为了让使用调用函数的位置认识被调用的函数。函数包括函数首部和函数体,函数首部又包括函数类型、函数名、形参、有的还包括存储方式等,函数体是函数实现的具体功能。函数体包括了声明部分和语句部分。声明部分:在这里主要用到数学函数,函数库应为:math.h、stdlib.h、string.h、float.h。3、 C语言中函数的运用,除了main()、scanf()、printf()比较常见简单的函数,制作学生成绩单应包括sort()、average()、search()等等函数,使菜单选择更为多样,简洁。复习循环语句if、do-while的运用,在用户进行选择的时候可使用s

4、witch语句。4、 熟悉构造数组类型,了解所有元素的数据类型都是相同的。定义数组名时应注意数组长度需是确定的。数组名作为函数参数时,实参和形参都应为数组名,应该在主调函数和被调函数中分别定义数组。实验预习评分:二、实验原始(数据)记录 实验时间: 2013 年 6 月 1 日(星期 第 节) 实验同组人:徐雅妤、谢颖婷、黄伟如有实验数据表格,学生在实验预习时应画好实验数据表格,供实验时填写数据(本页如不够,可另附相同规格的纸张)。#include #include#include#include#include#define e 3#define z 100int menu();void i

5、nput(float a5020,char mz5020,int *n);void output(float a5020,char mz5020,int *n);void sort(float a5020,char mz5020,int *n);void ave(float a5020,char mz5020,int *n);void search(float a5020,char mz5020,int *n);void qsort(float a5020,char mz5020,int *n);void sect(float a5020,char mz5020,int *n);void se

6、archoutput(float a5020,char mz5020,int *n);void wait();void main() /设置输入密码界面char mz5020,cz5020,pass_strz; float a5020,av,sum,l,y; int i,j,n,x,k,d,low,high,mid,m,c,g,h,xh,choose,t=0;printf(*学生成绩管理系统*nn); while(1)printf(tt请用户输入登录密码:);gets(pass_str);if(strcmp(pass_str,password)!=0)printf(ntt密码输入错误,请在输入

7、一遍!n);elsebreak;t+;sum=0.0; dochoose=menu(); if(choose=0) break;switch(choose) case 1: input(a,mz,&n);wait();break;case 2: output(a,mz,&n);wait();break;case 3: sort(a,mz,&n);wait();break;case 4: ave(a,mz,&n);wait();break; case 5: search(a,mz,&n);wait();break;case 6: qsort(a,mz,&n);wait();break;case

8、7: sect(a,mz,&n);wait();break;case 8:searchoutput(a,mz,&n);wait();break;while(1);/=menu=int menu() int ch;system(cls);printf(n);printf(-学生成绩管理系统v3.0-n);printf(n);printf(1.成绩输入n); printf(2.成绩输出n);printf(3.成绩排序n); printf(4.平均分n);printf(5.查找n);printf(6.各科目成绩排序n);printf(7.各分数段的学生人数及比例n);printf(8.查找并输出某课

9、程某分数段的学生成绩n);printf(0.退出n); printf(n); printf(-学生成绩管理系统v3.0-n); printf(请输入你的选择,选择0则退出);scanf(%d,&ch);return ch;/=input=/输入学生的成绩void input(float a5020,char mz5020,int *n) int j,i;printf(请输入班级人数:);scanf(%d,n);getchar();printf(n);for(i=0;i(*n);i+) printf(请输入第%d位学生的姓名:,i+1); gets(mzi);printf(请输入第%d位学生的学

10、号:,i+1); scanf(%f,&ai0); getchar();printf(请分别输入第%d位学生语文、数学、英语的成绩:,i+1);for(j=1;j=e;j+)scanf(%f,&aij);getchar();printf(n);/=output=/输出学生的成绩void output(float a5020,char mz5020,int *n) int i,j;int m; for(i=0;i(*n);i+) m=ai0;printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf( 语文、数学、英语成绩分别是:);aie+1=0;for

11、 (j=1;j=e;j+)printf(%0.1f ,aij);aie+1=aie+1+aij; printf(%总分数是:%0.1fn,aie+1);/=sort=/对学生成绩大小进行排序void sort(float a5020,char mz5020,int *n)int i,j,m,k,d,l,x,g,b,c;printf(由小到大排列,输入1,由大到小排列,输入2:);scanf(%d,&x); if(x=1) for(k=0;k(*n)-1;k+)for(i=0;iai+1e+1)l=aie+1;aie+1=ai+1e+1;ai+1e+1=l;d=ai0;ai0=ai+10;ai+

12、10=d;g=ai1;ai1=ai+11;ai+11=g;b=ai2;ai2=ai+12;ai+12=b;c=ai3;ai3=ai+13;ai+13=c;printf(由低到高排列分数:n);for(i=0;i(*n);i+)m=ai0;printf(名次 %d ,i+1); printf(姓名:%s ,mz(m-1); printf( 学号:%0.0f ,ai0);printf(语文、数学、英语成绩分别是:);for (j=1;j=e;j+)printf( 成绩:%0.1f,aij);printf( 总成绩是:%0.1fn,aie+1);else if(x=2)for(k=0;k(*n)-1

13、);k+)for(i=0;i(*n)-1);i+)if(aie+1ai+1e+1)l=aie+1;aie+1=ai+1e+1;ai+1e+1=l;d=ai0;ai0=ai+10;ai+10=d;g=ai1;ai1=ai+11;ai+11=g;b=ai2;ai2=ai+12;ai+12=b;c=ai3;ai3=ai+13;ai+13=c;printf(由高到低排列分数:n);for(i=0;i(*n);i+)m=ai0;printf( 名次 %d,i+1);printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf(语文、数学、英语成绩分别是:);for

14、 (j=1;j=e;j+)printf( %0.1f ,aij);printf(总成绩是:%0.1fn,aie+1);else printf(输入有误!);printf(n);/=ave=/算出学生成绩总分的平均分void ave(float a5020,char mz5020,int *n)int i,j,m,cho;float av,sum;printf(求总分数的平均分,输入1;求语文平均分,输入2;n 求数学平均分,输入3;求英语平均分,输入4:n);scanf(%d,&cho);if(cho=1)sum=0;for(i=0;i(*n);i+)sum=sum+aie+1;av=sum/

15、(*n);printf(n班级平均分为:%0.1fn,av);printf(n低于平均分的学生有:n);for(i=0;i*n;i+)if(aie+1av) m=ai0; printf(姓名:%s ,mz(m-1);printf( 学号:%0.0f ,ai0);printf(语文、数学、英语成绩分别是:);for(j=1;j=e;j+)printf(%0.1f ,aij);printf(总分是:%0.1fn,aie+1);else if(cho=2)sum=0;for(i=0;i(*n);i+)sum=sum+ai1;av=sum/(*n);printf(n班级语文平均分为:%0.1fn,av

16、);printf(n低于平均分的学生有:n);for(i=0;i*n;i+)if(ai1av) m=ai0; printf(姓名:%s ,mz(m-1);printf( 学号:%0.0f ,ai0);printf(语文、数学、英语成绩分别是:);for(j=1;j=e;j+)printf(%0.1f ,aij);printf(总分是:%0.1fn,aie+1);else if(cho=3)sum=0;for(i=0;i(*n);i+)sum=sum+ai2;av=sum/(*n);printf(n班级平均分为:%0.1fn,av);printf(n低于平均分的学生有:n);for(i=0;i*

17、n;i+)if(ai2av) m=ai0; printf(姓名:%s ,mz(m-1);printf( 学号:%0.0f ,ai0);printf(语文、数学、英语成绩分别是:);for(j=1;j=e;j+)printf(%0.1f ,aij);printf(总分是:%0.1fn,aie+1);else if(cho=4)sum=0;for(i=0;i(*n);i+)sum=sum+ai3;av=sum/(*n);printf(n班级平均分为:%0.1fn,av);printf(n低于平均分的学生有:n);for(i=0;i*n;i+)if(ai3av) m=ai0; printf(姓名:%

18、s ,mz(m-1);printf( 学号:%0.0f ,ai0);printf(语文、数学、英语成绩分别是:);for(j=1;j=e;j+)printf(%0.1f ,aij);printf(总分是:%0.1fn,aie+1);/=seareh=/根据学生的部分信息查询成绩void search(float a5020,char mz5020,int *n)int i,j,c,m,g,xh;float y;char cz20;printf(按总分数查找,请输入1;按学号查找,请输入2;按姓名查找,请输入3:) ;scanf(%d,&c);if(c=1) printf(请输入要查找的分数:)

19、; scanf(%f,&y); for(i=0;i(*n);i+) if(y=aie+1) m=ai0; printf(姓名:%s ,mz(m-1); printf( 学号:%0.0f ,ai0); printf(语文、数学、英语成绩分别是:); for(j=1;j=e;j+) printf(%0.1f ,aij); printf( 总成绩是:%0.1fn,aie+1); break; printf(n);else if(c=2) printf(请输入要查找的学号:); scanf(%d,&xh); for(i=0;i*n;i+) if(xh=ai0) m=ai0; printf(姓名:%s

20、,mz(m-1); printf( 学号:%0.0f ,ai0); printf( 语文、数学、英语成绩分别是:); for(j=1;j=e;j+) printf(%0.1f ,aij); printf(总分数是:%0.1f,aie+1); break; printf(n);else if(c=3) printf(请输入要查找的姓名:); scanf(%s,cz ); for(i=0;i*n;i+) if(strcmp(cz,mzi)=0)printf(姓名:%s,mzi);for(g=0;g(*n);g+) if(ag0=i+1) printf( 学号:%0.0f ,ag0); printf

21、( 语文、数学、英语成绩分别是:); for(j=1;j=e;j+) printf(%0.1f ,agj); printf(总分数是:%0.1f n,age+1); break; /=qsort=/各科的成绩排序void qsort(float a5020,char mz5020,int *n)int i,j,m,k,d,l,x;printf(语文成绩按大到小排序,输入1,数学成绩按大到小排序,输入2:,英语成绩按大到小排序,输入3:);scanf(%d,&x); if(x=1) for(k=0;k(*n)-1);k+)for(i=0;i(*n)-1);i+)if(ai1ai+11)l=ai1

22、;ai1=ai+11;ai+11=l;d=ai0;ai0=ai+10;ai+10=d;printf(由高到低排列分数:n);for(i=0;i(*n);i+)m=ai0;printf( 名次 %d,i+1);printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf(语文成绩是:%0.1f ,ai1);printf(n);else if(x=2)for(k=0;k(*n)-1);k+)for(i=0;i(*n)-1);i+)if(ai2ai+12)l=ai2;ai2=ai+12;ai+12=l;d=ai0;ai0=ai+10;ai+10=d;print

23、f(由高到低排列分数:n);for(i=0;i(*n);i+)m=ai0;printf( 名次 %d,i+1);printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf(数学成绩是:%0.1f ,ai2);printf(n);else if(x=3)for(k=0;k(*n)-1);k+)for(i=0;i(*n)-1);i+)if(ai3ai+13)l=ai3;ai3=ai+13;ai+13=l;d=ai0;ai0=ai+10;ai+10=d;printf(由高到低排列分数:n);for(i=0;i(*n);i+)m=ai0;printf( 名次

24、%d,i+1);printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf(英语成绩是: %0.1f ,ai3);printf(n);else printf(输入有误!);printf(n);/=section(分段)=void sect(float a5020,char mz5020,int *n)int i,j,a1,a2,a3,a4,a5; for(j=1;j=e;j+)if(j=1)printf(语文科目各个分数段分布如下:n);else if(j=2) printf(数学科目各个分数段分布如下:n);else printf(英语科目各个分数段

25、分布如下:n);a1=a2=a3=a4=a5=0;for(i=0;ie;i+)if(aij=59)a1+=1;else if(60=aij&aij=69)a2+=1;else if(70=aij&aij=79)a3+=1;else if(80=aij&aij=89)a4+=1;else a5+=1;printf(60分以下的有%d人 占比例是%.1fn60分到69分有%d人 占比例是%.1fn70分到79分有%d人 占比例是%.1fn80分到89分有%d人 占比例是%.1fn90分以上的有%d人 占比例是%.1fnn,a1,a1/3.0,a2,a2/3.0,a3,a3/3.0,a4,a4/3.

26、0,a5,a5/3.0);/=searchoutput=void searchoutput(float a5020,char mz5020,int *n)int k,g,m,i;printf(查询语文科目分数段,输入1 查询数学分数段,输入2 查询英语分数段,输入3 n);scanf(%d,&k);if(k=1)/第一门语文科目分段学生成绩输出printf(查询分数段60分以下的,输入1n查询分数段60到69分,输入2n查询分数段70到79分,输入3n查询分数段80到89分,输入4n查询分数段90到100分,输入5n); scanf(%d,&g);switch(g)case 1:printf(

27、n分数段60分以下的:n);for(i=0;i(*n);i+) if(ai160) m=ai0;printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf( 成绩:%.1fn,ai1); ;break;case 2:printf(n分数段60到69分的:n);for(i=0;i(*n);i+) if(60=ai1&ai169) m=ai0;printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf( 成绩:%.1fn,ai1); ;break;case 3:printf(n分数段70到79分的:n);for(i

28、=0;i(*n);i+) if(70=ai1&ai179) m=ai0;printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf( 成绩:%.1fn,ai1); ;break;case 4:printf(n分数段80到89分的:n);for(i=0;i(*n);i+) if(80=ai1&ai189) m=ai0;printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf( 成绩:%.1fn,ai1); ;break;case 5:printf(n分数段90到100分的:n);for(i=0;i(*n);i+

29、) if(90=ai1&ai1=100) m=ai0;printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf( 成绩:%.1fn,ai1); ;break;default: printf(您输入有误。n);break;else if(k=2)/第二门数学科目分段学生成绩输出printf(查询分数段60分以下的,输入1n查询分数段60到69分,输入2n查询分数段70到79分,输入3n查询分数段80到89分,输入4n查询分数段90到100分,输入5n); scanf(%d,&g);switch(g)case 1:printf(n分数段60分以下的:n)

30、;for(i=0;i(*n);i+) if(ai260) m=ai0;printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf( 成绩:%.1fn,ai2); ;break;case 2:printf(n分数段60到69分的:n);for(i=0;i(*n);i+) if(60=ai2&ai269) m=ai0;printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf( 成绩:%.1fn,ai2); ;break;case 3:printf(n分数段70到79分的:n);for(i=0;i(*n);i+)

31、if(70=ai2&ai279) m=ai0;printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf( 成绩:%.1fn,ai2); ;break;case 4:printf(n分数段80到89分的:n);for(i=0;i(*n);i+) if(80=ai2&ai289) m=ai0;printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf( 成绩:%.1fn,ai2); ;break;case 5:printf(n分数段90到100分的:n);for(i=0;i(*n);i+) if(90=ai2&ai2=100) m=ai0;printf(姓名:%s,mz(m-1);printf( 学号:%0.0f ,ai0);printf( 成绩:%.1fn,ai2); ;break;default: printf(您输入有误。n);break;else if(k=3)/第三门英语科目分段学生成绩输出printf(查询分数段60分以下的,输入1n查询分数段60到69分,输入2n查询分数段70到79分,输入3n查询分数段80到89分,输入4n查询分数段90到100分,输入5n); s

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922