统计输入10个学生5门功课的成绩,求每个学生的平均分、每门课的平均分及最高分所对应的学生和功课

  • 格式:doc
  • 大小:269.00 KB
  • 文档页数:12

《C语言程序设计》

课 程 设 计 说 明 书

课程设计题目:统计输入10个学生5门功课的成绩,求每个学生的平均分、每门课的平均分及最高分所对应的学生和功课 班 级:08计算机应用技术<1>班 学 号: A083GZ********* 姓 名: 陈 ****: * * *

2009.12 - 1 -

前 言 从C语言产生到现在,它已经成为最重要和最流行的编程语言之一。C语言具有高级语言的强大功能,却又有很多直接操作计算机硬件的功能(这些都是汇编语言的功能),因此,C语言通常又被称为中级语言。学习和掌握C语言,既可以增进对于计算机底层工作机制的了解,又为进一步学习其他高级语言打下了坚实的基础。在各种流行编程语言中,都能看到C语言的影子,如Java的语法与C语言基本相同。学习、掌握C语言是每一个计算机技术人员的基本功之。 在这次的课程设计中,我学到了很多东西,比如课堂上老师所教授的仅是基础的基础,是编程的前提,正所谓“师父领进门,修行靠个人”。老师把我们带进C的世界,让我们不再“哇!”的羡慕别人的程序设计,这是信心与兴趣的培养。 学习任何程序设计语言,都要认识几件事情。首先,要学的东西很多,但是掌握了它们之后,你会有极大的成就感。其次,学习的过程很有趣,你将体会到这一点。第三,你只有通过动手实践才能学会程序设计。最后,学习程序设计语言比你想象的容易得多,所以你肯定能掌握它。 要理解在特定背景中的程序设计方法,需要理解应用独立语言元素的机理。 该程序应用了本书学习的知识。书上的程序可帮助你获得开发程序的能力和信心,了解如何综合运用各种语言元素。最重要的是,它们能让你了解设计真实程序时会遇到的问题以及如何管理实际的代码。 如果第一次读复杂的程序没有完全理解,不必担心。第一次难免会觉得难以理解,因为它们通常都是把你所学的知识应用到了相当复杂的问题中。如果你真的不能理解,书是非常有用的资源,那可得要多看书多请教老师咯,然后再回头研究这些程序。 这也是学习程序设计语言的一个重要部分。尝试修改 程序,看看还能让它们做什么,这是很有趣的。不要害怕尝试,如果不明白某一点如何使用,输入几种变体,看看会出现哪些情况。 在做本次大作业的时候却是让我认清现实,我们离那种脱离书去编写一个程序的高超境界还很远,不得不继续努力,在这种情况下,我们重复着失败,调试,失败,调试,虽然这些很是单调,可我能够真正的感受到快乐,这是一种对未知世界探索的快乐。在这些快乐中,我们成长着。 让我们感到无比荣耀的是我们有汤智华老师陪伴,他给我们细心的培育,有问必答,而且每每不让我们失望,这是一种成功者的姿态。 - 2 -

目 录 一、课程设计课题………………………………………………………………………3 二、课程设计要求 …………………………………………………………………… 3 三、课程设计目的 …………………………………………………………………… 3 四、设计思想 ………………………………………………………………………… 3 五、源程序代码 ……………………………………………………………………… 5 六、运行过程 ………………………………………………………………………… 6 七、在编程中遇到的错误 …………………………………………………………… 8 八、用户使用说明书……………………………………………………………………9 九、心得体会 …………………………………………………………………………10 十、参考文献 …………………………………………………………………………11 . - 3 -

一 、 课程设计课题 编写一个统计学生成绩的程序,要求输入10个学生5门功课的成绩,分别用子函数求出: 1、每个学生的平均分; 2、每门功课的平均分; 3、找出最高分所对应的学生和功课。

二 、课程设计要求 1、输入10个学生5门功课的成绩; 2、要求分别用子函数求出; <1>、每个学生的平均分; <2>、每门功课的平均分; <3>、找出最高分所对应的学生和功课。

三.课程设计目的 1、老师安排本课程设计是为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会。将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。 2、通过本项课程设计,使我初步掌握C设计中的各个步骤,如设计方案确定,程序设计,软件编程,以及培养使用技术资料,编写设计说明书的能力,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编能力,通过理论与实践相结合的难关!更加了解了c语言的好处和其可用性! 同时增加了我们同学之间的团队合作精神!更加体会到以后在工作中团队合作的重要性和必要性! 3、通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。提高我们编程水平及上机调试能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。

四 、课程设计思想 1、统计输入10个学生5门功课的成绩,求每个学生的平 均分,每门功课的平均分及最高分所对应的学生和功课具 有以下特点: (1)、当把所有的成绩输入时就找出最大值,并找出最大值所对应的科目; (2)、一次就把每科的平均分及每位同学的平均分算出来; (3)、结构简单,层次清晰,便于按模块化方式组织程序,易于调试和维护。 (4)、具有结构化的控制语句(如if...语句、for语句)。 - 4 -

2、根据统计输入10个学生5门功课的成绩,求每个学生 的平均分,每门功课的平均分及最高分所对应的学生和功课 以上特点进行编写: (1)、首先定义数组存放输入十个学生五门成绩的数,及定义相应用到的变量。 (2)、用嵌套循环输入十个学生五门功课的成绩,并找出最大值及对应的学生及功课。 (3)、输出第几人的平均分。 (4)、输出第几科的平均分。 (5)、输出最高分及最高分对应的功课及学生。 (6)、流程图如下:

j<5 j++ 真

真 i++ 假

开始 i=0

i<10 j=0 输 出 第 i 位 同 学 平 均 分

输出第j科课程的平均分

Max输出最大值和所对 应的科目及学生

结束

输入a[i][j]

程序设计代码流程图 - 5 -

五 、源程序代码 #include void main() { int a[10][5],i,j,sum,max=0,s1,s2; i=10; j=5;

for(i=0;i<10;i++) {

for(j=0;j<5;j++) { printf("输入第%d人第%d科的分数 :",i+1,j+1); scanf("%d",&a[i][j]); if(max { max=a[i][j]; s1=i;s2=j; } } printf("\n"); }

for(i=0;i<10;i++) { sum=0; printf("第%d人平均分是:",i+1); for(j=0;j<5;j++) sum+=a[i][j]; printf("%0.1f\n",(float)sum/5); printf("\n"); }

for(j=0;j<5;j++) { sum=0; printf("第%d科目平均分是:",j+1); for(i=0;i<10;i++) sum+=a[i][j]; printf("%0.1f\n",(float)sum/10); - 6 -

printf("\n"); } printf("最高分数是%d\n对应学生及科目如下:\n学生是第%d人,科目是第%d科\n",max,s1+1,s2+1); getch() }

六、运行过程

1、双击WIN-TC 2、在界面中输入代码 点击“保存” 运行 编译连接并运行 所显示的就是:输入第1人第1科的成绩:89 输入第1人第2科的成绩:89 . . . . . . . 输入第10人第4科的成绩:89. 输入第10人第5科的成绩:88

回车,显示结果如下: - 7 - (运行显示结果图) - 8 -

七、在编程中我遇到的错误 C编译的程序对语法检查并不象其它高级语言那么严格,这就给我们留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对我们这些初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,我在这次编程中,也总结了一些这次C编程时常犯的错误: 1、书写标识符时,忽略了大小写字母的区别。 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C语言认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。 2、忽略了变量的类型,进行了不合法的运算。 sum+=a[i][j]是sun=sum+a[i][j]。 3、将字符常量与字符串常量混淆。 混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。 4、忘记加分号。 分号是C语句中不可缺少的一部分,语句末尾必须有分号。 a=1 b=2 编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。 对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。 5、多加分号。 对于一个复合语句,如: for( j=0;j<5;j++) if(max=a[i][j]) { printf("第%d位学生的第%d门成绩\n",i+1,j+1); }; 复合语句的花括号后不应再加分号,否则将会画蛇添足。 又如: if(max由于if (a%3==0)后多加了分号,则if语句到此结束, 6、输入变量时忘记加地址运算符“&”。 scanf("%d",a[i][j]); 这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。

7、C语言的变量一定要先定义才能使用; 8、输入时数据的组织与要求不符 对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输入