中 国 地 质 大 学 本科生课程论文封面
课程名称 C语言课程设计 教师姓名 邵老师 本科生姓名 常堃 本科生学号 079 本科生专业 应用化学 所在院系 材化学院 类别: C.本科生 日期: 2011 年 7 月 6 日
1
课程设计评语
对课程论文的评语:
平时成绩: 总 成 绩:
课程论文成绩: 评阅人签名: 注:1、无评阅人签名成绩无效;
2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;
3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
2
目 录
课程设计评语 .............................................. 错误!未定义书签。 目 录 ..................................................... 错误!未定义书签。 1.课程论文题目 ........................................... 错误!未定义书签。 2.程序设计思路 ........................................... 错误!未定义书签。 3.功能模块图 ............................................. 错误!未定义书签。 4.数据结构设计 ........................................... 错误!未定义书签。 5.算法设计 ............................................... 错误!未定义书签。 6.程序代码 ............................................... 错误!未定义书签。 7.程序运行结果 ........................................... 错误!未定义书签。 8.编程中遇到的困难及解决方法 ............................. 错误!未定义书签。 9.总结心得及良好建议 ..................................... 错误!未定义书签。 10.致谢 .................................................. 错误!未定义书签。
3
1.课程论文题目
投票程序 [要求]
设有代号为‘a’,‘b’,‘c’的三个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。
注意:若同一张票上写有两个相同的代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则显示三位候选人得分并输入“祝贺X当选冠军”。
例如:投票人数:5 请参加投票的人开始投票: abc cab
caa 此票无效 cba bca
三位候选人得分: a:12 b:13 c:15
祝贺c当选冠军
[提示]
数据结构可用结构体数组,结构体成员包括代号、得分。或者采用二维数组,行方向对应一张投票,列方向对应各候选人得分。
2.程序设计思路
根据题目要求,首先要输入投票者人数,再输入投票者的选票,而选票不是都有效,若同一张票上写有两个相同的代号,则此票无效,所以要将有效的选票选出来,然后对选票进行统计得分,最终来比较得分,若有得分相同,则重新来选,最后得分最多的获胜,最终成为足球先生。
但是此程序还不够完善,可以增加以下程序,增强其功能: 1.记录废票数目,以便废票太多,影响选举公正。 2.若出现a,b,c以外的投票,应当将该票记为无效。
3.若出现最终前两名得分相同,应该还可以运行程序,使其重新投票,重新计票,直至最后选出足球先生。
4
3.功能模块图
足球先生评选程序 输入选票信息 输出结果 统计选票 输入选票信息:输入对足球先生候选人的选票 输出结果:输出最后足球先生的获得者 统计选票:对选票进行统计
4.数据结构设计
要输入投票人数,将其定义为re,选票信息可以用一个p[100][3]的数组来存放,re来控制投票信息数组的行数。
最开始定义一个全局变量m=3,来表示候选者人数。这样来控制数列数,达到控制输入的目的。
每输入一行,就开始判断是否一张票上写有两个相同代号,或者是出现‘a’,‘b’,‘c’以外的投票结果,如果出现这种情况,就将票作废,并记录作废票数。定义变量v记录作废票数。判断完毕后,若出现废票,就将其中的票府赋值为‘0’。
返回投票人数re,留到后续函数使用。
5.算法设计
1、 主函数:
主函数只提供输入、处理和输出部分函数调用:
【程序】 #include<> #include<>
int start(char p[][3]); /****输入函数****/
5
void count(int a,char p[][3],int pp[]); /***统计函数***/
int result(int a,int b,int c); /***输出函数***/ int m; /*****全局变量 *****/
void main() /*****主函数*****/ {
int a; m=3;
int pp[3]={0,0,0}; do
{
char p[100][3]={{0}}; /******p[100][3]赋初值,清空******/ a=start(p);
count(a,p,pp); /******计算得分******/ }
while(result(pp[0],pp[1],pp[2])); /*****若m=2循环,直至选出足球先生*****/ }
2、 各功能模块设计 (1) 输入模块 【分析】
要输入投票人数,将其定义为re,选票信息可以用一个p[100][3]的数组来存放,re来控制投票信息数组的行数。
最开始定义一个全局变量m=3,来表示候选者人数。这样来控制数列数,达到控制输入的目的。
每输入一行,就开始判断是否一张票上写有两个相同代号,或者是出现‘a’,‘b’,‘c’以外的投票结果,如果出现这种情况,就将票作废,并记录作废票数。定义变量v记录作废票数。判断完毕后,若出现废票,就将其中的票府赋值为‘0’。
返回投票人数re,留到后续函数使用。 【程序】
int start(char p[][3]) {
int re,i,j,v=0;
printf(\"请输入投票人数\\n\"); scanf(\"%d\
/******a为投票人数******/ printf(\"请参加投票的人开始投票\\n\"); getchar();
/******输入时以回车结束******/ for(i=0;i int flag=0; for(j=0;j /******判断一张票上是否写有两个相同代号******/ for(j=0;j /******判断是否有a,b,c以外的字母******/ if(flag) { printf(\"此票无效\\n\"); v++; for(j=0;j } printf(\"作废票数是%d票\\n\ return re; } (2) 统计模块 【分析】 功能上要求分别统计a,b,c三个人的得分,因而用x,y,z来存放,每一票中分别统计得分,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2,将如果出现废票,直接跳过不计,将最后结果分别放入x,y,z.。 引用主函数中的数组pp[3],将统计的x,y,z分别赋值到pp[0],pp[1],pp[2]中,这样就可以带回主函数中。 【程序】 void count(int a,char p[][3],int pp[]) { int b=a,i; int x=0,y=0,z=0;
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务