下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中国地质大学本科生课程论文封面课 程 名 称 C 语言课程设计 教 师 姓 名邵老师本科生姓名常堃本科生学号 079 本科生专业 应用化学 所 在 院 系材化学院类别 : C.本科生日期: 2011 年 7 月 6 日课程设计评语对课程论文的评语平时成绩:课程论文成绩:总 成 绩:评阅人签名:注: 1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。目录课程设计评语 错误 !未定义书签。目 录 错误 ! 未定义书签。1课程论文题目 错误 !未定义书签。2程序设计思路 错误 !未定义书签。3功能模块图 错误 !未定义书签
2、。4数据结构设计 错误 !未定义书签。5算法设计 错误 !未定义书签。6程序代码 错误 !未定义书签。7程序运行结果 错误 !未定义书签。8编程中遇到的困难及解决方法 错误 ! 未定义书签。9总结心得及良好建议 错误 ! 未定义书签。10致谢 错误 ! 未定义书签。1课程论文题目投票程序 要求 设有代号为 a', b', c'的三个足球先生候选人, 根据投票者在选票上对他们编号的填写顺序分 别记分 5,3,2。请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。注意:若同一张票上写有两个相同的代号,则显示“此票无效”,若最终前两名得分相同应显示
3、“重新 投票”,否则显示三位候选人得分并输入“祝贺X 当选冠军”。例如:投票人数: 5请参加投票的人开始投票:abccabcaa 此票无效cbabca三位候选人得分:a:12b:13c:15祝贺 c 当选冠军 提示 数据结构可用结构体数组,结构体成员包括代号、得分。或者采用二维数组,行方向对 应一张投票,列方向对应各候选人得分。2程序设计思路根据题目要求,首先要输入投票者人数,再输入投票者的选票,而选票不是都有效,若 同一张票上写有两个相同的代号,则此票无效,所以要将有效的选票选出来,然后对选票进 行统计得分,最终来比较得分,若有得分相同,则重新来选,最后得分最多的获胜,最终成 为足球先生。但
4、是此程序还不够完善,可以增加以下程序,增强其功能:1. 记录废票数目,以便废票太多,影响选举公正。2. 若出现 a,b,c 以外的投票,应当将该票记为无效。3. 若出现最终前两名得分相同,应该还可以运行程序,使其重新投票,重新计票,直至 最后选出足球先生。3功能模块图输入选票信息:输入对足球先生候选人的选票 输出结果:输出最后足球先生的获得者 统计选票:对选票进行统计4数据结构设计要输入投票人数,将其定义为 re ,选票信息可以用一个 p1003 的数组来存放, re 来 控制投票信息数组的行数。最开始定义一个全局变量 m=3,来表示候选者人数。这样来控制数列数,达到控制输入的 目的。每输入一
5、行,就开始判断是否一张票上写有两个相同代号,或者是出现 a', b', c'以外的投票结果,如果出现这种情况,就将票作废,并记录作废票数。定 义变量 v 记录作废票数。判断完毕后,若出现废票,就将其中的票府赋值为0'。返回投票人数 re ,留到后续函数使用。5算法设计1、 主函数:主函数只提供输入、处理和输出部分函数调用:【程序】#include<>/* 输入函数 */#include<>int start(char p3);void count(int a,char p3,int pp); int result(int a,int b,
6、int c); int m;void main()/* 统计函数 */* 输出函数 */* 全局变量 */*主函数 */*int a;m=3;int pp3=0,0,0; do/*p1003a=start(p); count(a,p,pp); /* 计算得分char p1003=0; 赋初值,清空 */*/while(result(pp0,pp1,pp2);若 m=2 循环,直至选出足球先生 */2、(1) 【分析】 要输入投票人数,将其定义为 re ,选票信息可以用一个 控制投票信息数组的行数。各功能模块设计输入模块p1003 的数组来存放, re 来最开始定义一个全局变量 m=3,来表示候
7、选者人数。这样来控制数列数,达到控制输入的 目的。每输入一行,就开始判断是否一张票上写有两个相同代号,或者是出现a', b', c'以外的投票结果,如果出现这种情况,就将票作废,并记录作废票数。定 义变量 v 记录作废票数。判断完毕后,若出现废票,就将其中的票府赋值为0'。返回投票人数 re ,留到后续函数使用。【程序】int start(char p3)int re,i,j,v=0;printf(" 请输入投票人数 n");scanf("%d",&re);*a为投票人数 */printf(" 请参加投票
8、的人开始投票 n");getchar();/* 输入时以回车结束 */ for(i=0;i<re;i+)int flag=0;for(j=0;j<m;j+)/*scanf("%c",&pij); getchar(); 输入选举投票 */if(pi0=pi1|pi1=pi2|pi0=pi2)flag=1;/*判断一张票上是否写有两个相同代号 */for(j=0;j<m;j+)if(pij!='a'&&pij!='b'&&pij!='c') flag=1;/* 判
9、断是否有 a,b,c 以外的字母 */if(flag)printf(" 此票无效 n");v+;for(j=0;j<m;j+) pij=0;/* 若有以上情况,显示" 此票无效 " ,忽略此票,并记录废票数*/ printf(" 作废票数是 %d票 n",v); return re;( 2)统计模块【分析】功能上要求分别统计 a,b,c 三个人的得分,因而用 x,y,z 来存放,每一票中分别统计得 分,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2,将如果出现废票,直接跳过不计,将最后结果分别放入 x,y,z. 。引用
10、主函数中的数组 pp3 ,将统计的 x,y,z 分别赋值到 pp0,pp1,pp2 中,这样就 可以带回主函数中。【程序】void count(int a,char p3,int pp)int b=a,i;int x=0,y=0,z=0;/*'a','b','c' 分别代表三个候选人 x y z 分别是他们的得分 */ for(i=0;i<a;i+)if(pi0='a')x+=5;else if(pi1='a')x+=3;else if(pi2='a')x+=2;if(pi0='b
11、39;)y+=5;else if(pi1='b')y+=3;else if(pi2='b')y+=2;if(pi0='c')z+=5;else if(pi1='c')z+=3;else if(pi2='c')z+=2;if(pi0='0')continue;pp0=x;pp1=y;pp2=z;(3) 输出模块【分析】功能上要求比较三位候选人的最后得分,三人得分分别为 x,y,z 。定义 max,将最高分赋值到 max 中。只有一位最高分时,输出三位候选人得分,显示“祝贺某 人当选冠军”。如果有两位最
12、高分,则显示“请重新投票”,接着,令m=2,改变全局变量,只剩下两位候选者,显示三位候选人得分,重新投票统计。如果两位候选人分数还相同,则再次循环,若不同,则显示两人得分, 并显示“祝贺某人当选冠军”。【程序】int result(int a,int b,int c)int x,y,z,max=0,s=0,l=0;char k;x=a;y=b;z=c;max=x; k='a'if(max<y)max=y;k='b'if(max<z)max=z;k='c' if(max=x&&max=y|max=x&&m
13、ax=z|max=y&&max=z) printf(" 请重新投票 n");/* 若最高票数有两人相同,提示重新投票 */l=1;if(m=3)printf(" 三位候选人得分: n");elseprintf(" 两位候选人得分: n");if(l)m=2;if(x>0)printf("a:%dn",x);if(y>0)printf("b:%dn",y);if(z>0)printf("c:%dn",z);if(!l)printf("
14、 祝贺 %c当选冠军 n",k);/* 输 出 最 后 结 果*/return l;如果 l 返回主程序, 若 l 为真值, 则代表最后两位候选人分数还相同, 主程序的 do,while 循环,可以再次统计票数,再次比较得分,直到选出最后的足球先生。6程序代码#include<>#include<>int start(char p3);void count(int a,char p3,int pp); int result(int a,int b,int c);int m;void main()int a;m=3;int pp3=0,0,0;dochar p1
15、003=0; /*p1003 赋初值,清空 */ a=start(p);count(a,p,pp);/*计算得分 */while(result(pp0,pp1,pp2);int start(char p3)int re,i,j,v=0; printf(" 请输入投票人数 n"); scanf("%d",&re);*a为投票人数 */printf(" 请参加投票的人开始投票 n");getchar();/* 输入时以回车结束 */for(i=0;i<re;i+) int flag=0; for(j=0;j<m;j+)
16、scanf("%c",&pij);getchar();输入选举投票 */if(pi0=pi1|pi1=pi2|pi0=pi2)flag=1;/*判断一张票上是否写有两个相同代号 */for(j=0;j<m;j+) if(pij!='a'&&pij!='b'&&pij!='c')flag=1;/* 判断是否有 a,b,c 以外的字母 */ if(flag)printf(" 此票无效 n");v+;for(j=0;j<m;j+)pij=0;/* 若 有 以 上
17、 情 况 , 显 示 “ 此 票 无 效 ” , 忽 略 此 票 , 并 记 录 废 票 数 */printf(" 作废票数是 %d票 n",v);return re;void count(int a,char p3,int pp)int b=a,i;int x=0,y=0,z=0;/*'a','b','c' 分别代表三个候选人 x y z 分别是他们的得分 */ for(i=0;i<a;i+)if(pi0='a')x+=5;else if(pi1='a')x+=3;else if(pi2
18、='a')x+=2;if(pi0='b')y+=5;else if(pi1='b')y+=3;else if(pi2='b')y+=2;if(pi0='c')z+=5;else if(pi1='c')z+=3;else if(pi2='c')z+=2;if(pi0='0')continue;pp0=x;pp1=y;pp2=z;int result(int a,int b,int c)int x,y,z,max=0,s=0,l=0;char k;x=a;y=b;z=c;
19、max=x;k='a'if(max<y)max=y;k='b'if(max<z)max=z;k='c' if(max=x&&max=y|max=x&&max=z|max=y&&max=z) printf(" 请重新投票 n");/* 若最高票数有两人相同,提示重新投票 */l=1;if(m=3)n");n");printf(" 三位候选人得分:elseprintf(" 两位候选人得分: if(l)m=2;if(x>0)pr
20、intf("a:%dn",x);if(y>0)printf("b:%dn",y);printf("c:%dn",z);if(!l)printf("祝贺 %c 当输出最后结果return l;选冠军 n",k);*/7程序运行结果1、主函数运行,输入选票信息3、 统计选票,输出结果8编程中遇到的困难及解决方法在编程的过程中,很容易出现一个问题,就时少大括号“ ”的问题。这是, error 只有 一个,但是错误的地方很多,且都在括号处。按照计算机所指出的错误位置寻找是不容易找 出错误的。 直到整个程序看了一遍后才
21、会发现是一个大括号的问题。通常少的是“ ”或者“ ”,错误位置会出现在缺少括号位置之后的其他大括号出现的地方。只要这种情况发生后,往前 找是否有大括号缺失就可以将问题很快解决了。在帮同学修改程序的过程中,也遇到过一个问题。在头文件后定义了子函数,可是之后 忘了编写子函数,在纠错时,有的是不会发现错误的,但是连接过程中就会报告出错。我觉 得在以后的编程过程中,最好用什么函数写什么函数,后者在写完一个子函数后再在头文件 底下声明。9总结心得及良好建议此次实习为期一周,我学到了很多,也知道了很多的不足。通过老师的精心指导带领下, 我不仅获得了很多新知识,还好好复习了一下以前学的知识。在这之前,我们已经对 C 语言 这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在学习了解的范围,对 里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年消防设施中级笔试题目及答案详解
- 河北省秦皇岛市逐名小渔联考2025-2026学年上学期高三1月月考物理试卷(含解析)
- 安全生产信息化培训课件
- 2026年湖南云箭集团有限公司招聘备考题库带答案详解
- 初中科学实验中基于视觉传感器的机器人避障探究活动教学研究课题报告
- 2026年泰顺县人民医院护理岗位工作人员招聘备考题库参考答案详解
- 2026年荔城区教师进修学校公开选聘教研员备考题库及参考答案详解
- 六年级数学上册《图形的展开与折叠》鲁教版五四制教学设计
- 2025年企业内部财务管理与财务报表编制手册
- 仓储物流作业操作规范指南(标准版)
- 2026年直播服务合同
- 2026秋招:澳森特钢集团试题及答案
- 哲学史重要名词解析大全
- 2026年宁夏黄河农村商业银行科技人员社会招聘备考题库及答案详解(易错题)
- 银行借款抵押合同范本
- DB37-T4975-2025分布式光伏直采直控技术规范
- 儿童糖尿病的发病机制与个体化治疗策略
- 脱硫废水零排放项目施工方案
- 2026年海南卫生健康职业学院单招综合素质考试题库参考答案详解
- 水泥产品生产许可证实施细则2025
- 急性心梗合并急性心衰护理
评论
0/150
提交评论