C语言程序设计报告_第1页
C语言程序设计报告_第2页
C语言程序设计报告_第3页
C语言程序设计报告_第4页
C语言程序设计报告_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计报告1 题 目: 学生成绩管理系统 姓 名: 许宁馨 学 院: 信息科学与技术学院 专 业: 电气信息类 班 级: 电信1207 学 号: 1、 设计目的-2、 总体设计-3、 详细设计-4、 调试与测试-5、 源程序清单和执行结果-一、设计目的通过亲自设计程序,令我们更加熟悉和掌握c语言。初步体会编程的过程,为将来的程序深入学习打下基础和培养兴趣。2、 总体设计【一】、学生成绩排名主函数输入学生成绩组成框图采用冒泡法,将学生成绩按照从高到低进行排序将成绩进行反向存放流程图假真i=i+1Input aii=aii10-j?i=1jaii12?i=1Input:a11Printf:

2、请再输入一个学生的成绩假真i=i+1Printf:aii10?i=1Printf:学生成绩按照从高到低的排序j=j+1t=ai+1ai+1=aiai=ti=i+1 假真假真假j=11t=a11i12?假真真i=1i=i+1j=j-1t=aiai=ajaj=tii 假真Printf:ai终止i=i+1 3、 详细设计模块功能说明1.该函数无子函数,首先用for语句通过循环运用数组做为变量来存储各信息。2.根据题目要求用冒泡法排序。3.用scanf函数输入学生成绩。4.利用for语句排序。 4、 调试与测试测试过程中遇到的主要问题及采取的解决措施在测试中,我遇到的主要问题是“;”的漏打以及对于j为

3、11或12的判断。“;”漏打后在调试过程中系统会提示我进行修正,而j的选择则是在一次次的尝试中发现正确的数字从而进行运用。5、 源程序清单和执行结果程序#includevoid main() int a11; int i,j,t; printf(请输入10个学生成绩:n); for(i=1;i11;i+) scanf(%d,&ai); for(j=1;j11;j+) for(i=1;i11-j;i+) if(aiai+1) t=ai; ai=ai+1; ai+1=t;printf(学生成绩按照从高到低的排序:n);for(i=1;i11;i+) printf(%4d,ai);printf(n)

4、;printf(请再输入另一个学生成绩:);scanf(%d,&a11);for(i=1;iai)t=a11; for(j=12;ji;j-) aj=aj-1; aj=t;for(i=0;i11;i+)printf(n);printf(反向排序结果为: n);for(i=1,j=11;ij;i+,j-)t=ai;ai=aj;aj=t;for(i=1;i12;i+) printf(%3d ,ai);printf(n);执行结果2、 总体设计【二】、根据条件进行学生成绩排名1) 在函数中进行10个学生成绩从高到低排名 sort(int a10)2) 改进第一步的函数为sort(int a,int

5、n),进行n个学生成绩从高到低排名,3) 改进第二步的函数为sort(int a,int n, char style), 将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如style为a按升序排,style为d按降序排。(a:ascending 升,d:descending 降)组成框图主函数Sort函数 流程图i=0Printf:input errori=0elsebastylePrintf:Please input a(means ascending) or d(means descending)Input:s假真i=i+1Input:aiinPrintf:请

6、输入同学的数目nInput:n=10i=0开始 inin假假真真j=0j=0假假真真jn-1-ijn-1-iajaj+1假假真真t=ajaj=aj+1aj+1=tt=ajaj=aj+1aj+1=t 假真终止i=i+1Printf:aiini=0i=i+1j=j+1i=i+1j=j+1 三、详细设计模块功能说明主函数:用for语句通过循环运用数组做为变量来存储各信息。子函数:根据两种排序情况确定用switch语句。4、 调试与测试测试过程中遇到的主要问题及采取的解决措施在测试中,我遇到的主要问题是“;”的漏打。“;”漏打后在调试过程中系统会提示我进行修正。5、 源程序清单和执行结果程序#incl

7、ude#includevoid sort (int a,int n, char style)int i,j,t;switch(style)case a:for(i=0;in;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;break;case d:for(i=0;in;i+)for(j=0;jn-1-i;j+)if(ajaj+1)t=aj;aj=aj+1;aj+1=t;break;default :printf(Input error.n);exit (0);void main()int a10,n,i;char s;printf(Please input the n

8、umber you want to rank(n=10) : );scanf(%d,&n);printf( Please input %d dates:n,n);for(i=0;in;i+)scanf(%d,&ai);printf(Please input a(means ascending) or d(means descending):);getchar();scanf(%c,&s);sort (a,n,s);for(i=0;in;i+)printf(%d ,ai);printf(n);执行结果输入a时:输入d时:2、 总体设计【三】、用指针优化学生成绩排名1) 定义一个数组stu10存放

9、10个学生的成绩,从键盘输入数据,要求用指针实现2) 将数组stu10的内容输出到屏幕上,要求用指针实现3) 将成绩数组按照从高到低进行排序,要求用指针实现4) 将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单5) 采用指针方法,输入字符串“student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)组成框图Stuscore函数输入数据Strs函数排序Sort函数复制字符串主函数 流程图假真终止Printf:Copy the string and output string srt2 is: ,str2)strcpy(str2,s

10、tr1)*pstr=ch;pstr+(ch=getchar()!=nInput:chPrintf:input a string假真假真i=i+1p=p+1Printf:*pi10p=stu,i=0Printf:output the scoresi=i+1p=p+1Input:pi10p=stu,i=0Printf:请输入10个学生成绩:char*pstr;char str180,str280,ch;pstr=str1;intstu10;int*p;int i开始 假真终止i=i+1,p=p+1Printf:*pi10p=stu,i=0Printf:Output the score after

11、sort:真真假假假真i=i+1j=j+1t=stuistui=stujstuj=tstuistujj10j=j+1i9i=0 3、 详细设计模块功能说明开始声明后续程序中所要使用的子函数。主函数:调用函数。子函数:输入信息并根据提议复制用strcpy语句。子函数:用for语句通过循环运用数组做为变量来存储各信息。并在此函数中再调用一个函数。子函数:用冒泡法排序。4、 调试与测试五、源程序清单和执行结果程序#include#includemain()void sort(int stu); void stuscore(); void strs(); strs(); printf(nn); stu

12、score(); void sort(int stu)int i,j,t;for(i=0;i9;i+)for(j=i+1;j10;j+) if(stuistuj) t=stui, stui=stuj; stuj=t;void strs()char *pstr;char str180,str280,ch;pstr=str1;printf(Input a string:n);while(ch=getchar()!=n)*pstr=ch;pstr+;strcpy(str2,str1);printf(Copy the string and output:n);printf(string srt2 is

13、:%sn,str2);void stuscore()int stu10;int *p;int i;printf(请输入10个学生成绩:n);for(p=stu,i=0;i10;i+,p+) scanf(%d,p);printf(Output the scores:n);for(p=stu,i=0;i10;i+,p+) printf(%3d,*p);printf(n);sort(stu);printf(Output the score after sort:n);for(p=stu,i=0;i10;i+,p+) printf(%3d,*p);printf(nnn);执行结果:2、 总体设计【四】

14、学生成绩单制作1) 定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2) 从键盘输入10个学生的以上内容3) 输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩4) 输出三门课程的平均分数最高的学生的学号、姓名及其平均分5) 将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:number name math Chinese English average103 tom 90 90 100 95101 alice 90 80 70 80组成框图主函数 利用stu_max函数求单门成绩最高的同学。利用stu_aver函数求平均分,求最高平均分并排序。 流程图j3j

15、=0i=i+1j=j+1Printf:scoreInput:stui.scorejj3j=0Printf:请输入学生学号Input:stui.numPrintf:请输入学生姓名Input:INi=0 N=10开始 真假假真i=0iN假真终止Sum=0假真假真j3j=0i=0m=0,max=stu0.score0;假假真真i=i+1max=averagei;n=i;maxaveragein=0,max=average0i10i=0i=i+1averagei=sum/3j=j+1sum+=stui.scorej假假真真j=j+1输出:第%d门功课获得最高成绩的同学是:stum.n

16、ame,stum.num,maxi=i+1max=stui.scorej;m=i;maxstui.scoreiaveragejjNj=0n=0;m=oi10 假假真m=5假真m=4e=iPrintf:stua.num,,stua.score0,stua.score1,stua.score2,averagea stub.num,,stub.score0,stub.score1,stub.score2,averageb stuc.num,,stuc.score0,stuc.score1,stuc.score2,averagec stud.num

17、,,stud.score0,stud.score1,stud.score2,averaged stue.num,,stue.score0,stue.score1,stue.score2,averagee, stuf.num,,stuf.score0,stuf.score1,stuf.score2,averagef);stug.num,,stug.score0,stug.score1,stug.score2,averageg)stuh.num,,stuh.score0,stuh.score1,stuh.sc

18、ore2,averageh)stuk.num,,stuk.score0,stuk.score1,stuk.score2,averagek) stul.num,,stul.score0,stul.score1,stul.score2,averagel);i=i+1假l=i真k=im=1假真假h=im=2真假h=im=2真g=im=3f=i 终止 三、详细设计模块功能说明主函数:用for语句通过循环运用数组做为变量来存储各信息。子函数:stu max函数求每门课程的最高成绩并输出第一名的信息。所用的是stu_ave函数,功能是求出各个学生平均分,输出第一名的信息

19、然后排序并输出信息。4、 调试与测试五、源程序清单和执行结果程序#include#define N 10struct studentchar num11;float score4;float sum; char name11;stuN;int main() void max(struct student stu11); void aver(struct student stu11); int i,j; for(i=0;iN;i+) printf(输入学生姓名:);scanf(%s,); printf(输入学生学号:); scanf(%s,stui.num); for(j=0;

20、j3;j+)printf(score %d:,j+1);scanf(%f,&stui.scorej); printf(n);aver(stu);max(stu);return 0;void max(struct student stu11)int i,j,m;float max;for(j=0;j3;j+)m=0,max=stu0.score0;for(i=0;iN;i+)if(maxstui.scorej)max=stui.scorej; m=i; printf(第%d门功课获得最高成绩的同学是:%s, %s , %5.2fn,j+1,,stum.num,max);void

21、 aver(struct student stu11) int i,j,n,a,b,c,d,e,f,g,h,k,l,m,average10;float sum,t,max; for (i=0;iN;i+)sum=0;for (j=0;j3;j+)sum+=stui.scorej;averagei=sum/3; for(i=0;i10;i+) n=0,max=average0; if(maxaveragei) max=averagei; n=i; printf(平均分最高的同学是:% s,% s,% 5.2dn,stun.num,,averagen); printf( numb

22、er. name math Chinese English averagen); for(i=0;i10;i+) n=0,m=0; for(j=0;javeragej) m+; if(m=9) a=i; else if(m=8) b=i; else if(m=7) c=i; else if(m=6) d=i; else if(m=5) e=i; else if(m=4) f=i; else if(m=3) g=i; else if(m=2) h=i; else if(m=1) k=i; else l=i;printf(%s,%s,%5.2f,%5.2f,%f,%dn,stua.num,,stua.score0,stua.score1,stua.score2,averagea);printf(%s,%s,%5.2f,%5.2f,%f,%dn,stub.num,,stub.score0,stub.score1,stub.score2,averageb);printf(%s,%s,%5.2f,%5.2f,%f,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论