版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.C程序设计实习报告题目:C语言投票程序学 院: 专 业: 姓 名: 班级学号指导教师: 2010 年 07 月 17 日目录一、课程设计题目描述与要求 3二、 需求与个人设计思想 4三、 流程图 5四、我的程序设计(源程序) 6 程序运行情况 8五、 总结与修改 9关于程序实行 9 问题及可能的解决方法 9修改后程序运行情况 12修改后的程序优点 13心得与体会 15 C语言投票程序一、课程设计题目描述与要求要求:设有代号为a、b、c的足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5、3、2。请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。注意:
2、若同一张票上写有两个相同的代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则先是三个候选者得分并输出“祝贺X当选冠军!”。 例如:投票人数:5输入投票内容:a b cc a b c a a 该票无效!c b ab c a三位候选人得分:a: 12b: 13c: 15祝贺c当选冠军!提示:数据结构可用结构体数组,结构体成员包括代号、得分。或者采用二维数组,行方向对应一张投票,列方向二、需求与个人设计思想 【需求】此程序意在评出得分最高的“足球先生”,要求编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。【个人设计思想】通过结构体数组struct ca
3、ndidate Cadt3来存储三位候选人的基本信息:代号、得分。在用一个一维数组来存储投票内容代表投票内容(顺序),通过循环语句while,for和一个没有参数的getchar函数(字符输入函数)从终端输入投票内容,处理后得到最终三位候选人得分,比较得到最终结果,评出得分最高的一名候选人,即为“足球先生”。在过程中,当遇到一张选票上写有两个代号相同时应显示“此票无效”, 若最终前两名得分相同应显示“重新投票”, 否则先是三个候选者得分并输出“祝贺X当选冠军!”。三、 流程图1、 整体流程图“足球先生”投票程序 名次排序输出 数据比较 数据处理投票内容输入结构体数组引用 图712、主函数流程图
4、:请问共有多少人进行投票输入投票人数开始同一张票上存在相同代号统计票数显示“此票无效”存在相同票数?输出“祝贺X当选冠军”输入投票人数 图72四、我的程序设计(源程序)#include<stdio.h>struct candidate /定义结构体 char name; /名字 int score; /分数;struct candidate Cadt3='a',0,'b',0,'c',0;void main() int i,j,num; char vote3,s; printf("请问共有多少人投票?n"); sc
5、anf("%d",&num); while(num-) for(i=0;i<3;i+) s=getchar(); while(s!='a' && s!='b' && s!='c') s=getchar(); votei=s; if(vote0+vote1+vote2!='a'+'b'+'c') /判断选票上是否有重复代码 printf(" 该票无效 !n");continue; else for(j=0;j<
6、3;j+) if(vote0=C) Cadtj.score+=5; if(vote1=C) Cadtj.score+=3; if(vote2=C) Cadtj.score+=2; printf("三位候选人得分:n"); for(j=0;j<3;j+) printf("%c: %dn",C,Cadtj.score); if(Cadt0.score=Cadt1.score|Cadt1.score=Cadt2.score|Cadt2.score=Cadt0.score) print
7、f("please vote againe.n"); else if(Cadt0.score<Cadt1.score) C=C; if(Cadt0.score<Cadt2.score) C=C; printf("祝贺%c当选冠军 .n",C);程序运行情况如下:(1) 当遇到一张选票上写有两个代号相同时成功显示“该票无效”: 图73(2) 显示最终结果: 图74五、总结与修改暑假期间,通过八天的C语言程序设计实习,我重新温习了C语言,更是对C语言有了更新
8、的认识,更为深层次的认识。以下几点是我在实习期间遇到的问题及心得体会。【关于程序实行】 程序运行情况的截图如图73,74所示,图中显示有投票人数、投票的内容、候选人最后的得分情况以及最终冠军的获得者,系统运行情况较好,但仍存在一些不足,例如:没有控制开始结束的语句,程序没有很好的体现模块化等。在以后的程序设计中要特别注意这次遇到的问题,改进不足,探索新颖的思路,力求将程序设计完美化。【问题及可能的解决方法】 程序中最大的不足是模块化没有很好的发挥其作用,个人觉得可以通过调用函数来弥补这一不足。至于开始结束语句地解决,可以增加一个输出语句来解决。还有一个问题是,源代码中没有注释语句,虽然这次设计
9、的程序比较简单没用到注释,但以后设计中一定要注意这方面。【修改后程序】#include<stdio.h>#include <math.h>struct candidate/定义结构体 char name;/名字 int score;/选票得分;struct candidate Cadt3='a',0,'b',0,'c',0;void thanks()printf("thank you!n");void football() int i,j,num; char vote3,s; printf("
10、请问共有多少人投票?n"); scanf("%d",&num); while(num-) for(i=0;i<3;i+) s=getchar(); while(s!='a' && s!='b' && s!='c') s=getchar(); votei=s; if(vote0+vote1+vote2!='a'+'b'+'c')/判断选票是否有重复代号 printf(" 该票无效! n");continue
11、; else for(j=0;j<3;j+) if(vote0=C) Cadtj.score+=5; if(vote1=C) Cadtj.score+=3; if(vote2=C) Cadtj.score+=2; printf("三位候选人得分:n"); for(j=0;j<3;j+) printf("%c: %dn",C,Cadtj.score); if(Cadt0.score=Cadt1.score|Cadt1.score=Cadt2.score|Cadt2.scor
12、e=Cadt0.score) printf("please vote againe.n"); else if(Cadt0.score<Cadt1.score) C=C; if(Cadt0.score<Cadt2.score) C=C; printf("祝贺%c当选冠军 !n",C);int main()int ID,ture=0; printf("n*此程序为足球先生投票程序*n"); while(1) printf("请选
13、择是否继续:1为继续,2为退出;n "); scanf("%d",&ID); getchar(); switch(ID) case 1: football();break; case 2: thanks();break; default : ture=1;break; if(ture!=1) printf("*谢谢您的参与*n"); printf("n"); if(ture) break; getchar(); printf("n请按任何键继续.n"); getchar(); return 0;修
14、改后程序运行情况:图75图76【修改后的程序优点】 程序被修改后更好地实现了模块化:(1) 主函数显示是否继续进行投票输入1或2,判断是不是1或2根据是1或2调用各功能函数图77(2) thanks函数选2,进入thanks输出“thank you”图78(3)football函数请问共有多少人进行投票输入投票人数选1,开始输入投票结果同一张票上存在相同代号统计票数显示“此票无效”存在相同票数?输出“祝贺X当选冠军”图79 【心得与体会】c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要,于是学校组织我们进行了为期八天的实习。
15、 在这八天里,我们在老师的带领下进行了暑期c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。实习前两天由于对所学的知识忘记了不少,编的程序中有很多错误,而且很多找不出原因所在,也就是说完成程序的编写,并不意味着万事大吉。原本认为万无一失的程序,实际上机运行时却不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。经过几天对书上知识如:数组、结构体数
16、组、循环语句(forwhile)、if语句等的复习以及老师的耐心辅导,不仅重拾以前所学知识而且对c语言有了更深层次的理解。当看到自己设计出来的程序运行成功时,感觉很欣慰的同时更痛下决心,以后一定要多看c语言源程序。特别时要注意程序中的算法与数据结构,毕竟学c的关口就是算法和数据结构。别的方面也要关注一下,诸如变量的命名、库函数的用法、结构体的定义等等。有些库函数是经常用到的。对于这些库函数的用法一定要牢牢记住。只是看是不行的,编程序是个实干的活。一个c语言程序从编辑、编译、连接到运行,光说不练不行。刚开始学的时候可以多练习书上的习题。对于自己不明白的地方,自己编个小程序实验一下是最好的方法,能
17、给自己留下深刻的印象。自己动手的过程中要不断纠正自己不好的编程习惯和认识错误。有一定的基础以后可以尝试编一些经典的案例程序。 由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理、程序的添加修改、程序错误检查中用到的屏蔽操作、程序的调试等基本操作,更多的还是要靠自己努力。 上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习,可以概括为学习语法规定、掌握程序设计方法、提高程序处理能力,而这些都必须通过充分的实际上机操作才能完成。通过多次上机练习,我对于语法知识有了感性的认识,加深了对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差。所以学习c语言不能只停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东外语外贸大学《办公室事务管理》2023-2024学年第一学期期末试卷
- 广东司法警官职业学院《自动变速器》2023-2024学年第一学期期末试卷
- 广东培正学院《海关报关实务》2023-2024学年第一学期期末试卷
- 七年级上册《5.1.1 从算式到方程》课件与作业
- 七年级上册《2.2.1 第1课时 有理数的乘法》课件与作业
- 广东茂名幼儿师范专科学校《发动机构造与原理》2023-2024学年第一学期期末试卷
- 广东理工职业学院《三维动画基础》2023-2024学年第一学期期末试卷
- 一年级数学计算题专项练习1000题汇编
- 物流工作总结范文10篇
- 【北京特级教师】2020-2021学年人教版高中地理必修二辅导讲义:工业区位选择和工业地域
- 绿化租摆服务投标方案(技术标)
- 整本书阅读《乡土中国》议题思辨:无讼之“讼”教学设计 中职语文高教版基础模块下册
- 医学教材 鼻出血的正确处理方法
- 水利水电移民安置验收资料目录、工作报告、验收报告、有关表格
- 2024年人教版生物八年级上册中考复习知识点纲要
- 机电样板实施施工方法及工艺要求
- 人音版音乐七年级下册 4.2.3凯皮拉的小火车 教案教案1000字
- 建设工程工程量清单计价规范有表格
- 2023版学前教育专业人才需求调研报告及人培方案(普招)
- 酒店客房部奖惩制度
- DB43-T 2927-2024 中医护理门诊建设与管理规范
评论
0/150
提交评论