c语言投票程序摘要.doc
本科生C语言课程设计论文
课程名称 投票程序
教师姓名
本科生姓名
本科生学号
本科生专业
所在院系 机电学院
类 别:
日 期: 2012年6月
课程设计评语
对课程论文的评语:
平时成绩:课程论文成绩:总 成 绩:评阅人签名:
注:1、无评阅人签名成绩无效;
2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;
3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
目 录
课程设计评语2
目 录3
1.课程论文题目4
2.程序设计思路4
3.功能模块图4
4.程序代码5
5.程序运行结果6
6.编程中遇到的困难及解决方法7
7.总结心得及良好建议7
8.致谢8
9.参考文献8
(一)题目要求及提示
[要求]设有代号a,b,c的三个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别计分5,3,2。请变成从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。
若同一张票上写有两个相同的代号,则显示“此票无效”,
若最终前两名得分相同应显示“重新投票”,否则显示三个候选人得分并输出“祝贺X当选冠军”。
[提示]数据结构可用结构体数组,结构体成员包括代号、得分。或者采用二维数组,行方向对应一张投票,列方向对应各候选人的得分。棋盘位置用二维数组代表,初始状态每一位置均为“ ”(空)。其分隔线(即棋盘线)可用- -或||来分隔。需要对每张选票上的候选人顺序进行分析,并统计每个人的得分,进行比较,得出结果。
程序设计思路
本程序中要求候选人有编号和得票数,且每张选票上要同时写上三个候选人的编号,最终输出谁是获胜者。因此可以用结构体来存储候选人的信息。唱票中要求相对应的编号分别记分为5、3、2,因此在记分程序中可以用一个条件表达式来进行统计得分。统计结果中若前两名有相同的得票数则要求重新投票。为此要求把三个后选人的总得分进行比较,则可以用一个判断语句来判断,简单明了。定义结构体存放候选人的信息,包括编号和得分。输入投票总人数和投票结果,然后根据人数和投票结果进行统计得分,把选票中有相同编号的去掉,只统计没有相同编号的票数。然后对最终的分数进行比较,若存在前两名的得分情况一样,则需要重新投票,否则输出谁是获胜者。
(三)功能模块图
(四)程序代码
#include
main()
{
int a[3]={0},n,i,j,m=0,p;
char c[3];
start: printf("投票人数:");
scanf("%d",&n);
printf("输入投票内容:");
getchar();
for(i=1;i<=n;i++)
{ gets(c);
if(c[0]==c[1]||c[1]==c[2]||c[0]==c[2])
{
printf("该票无效\n");continue;}
if(c[0]=='a')a[0]+=5;
else if(c[0]=='b')a[1]+=5;
else if(c[0]=='c')a[2]+=5;
if(c[1]=='a')a[0]+=3;
else if(c[1]=='b')a[1]+=3;
else if(c[1]=='c')a[2]+=3;
if(c[2]=='a')a[0]+=2;
else if(c[2]=='b')a[1]+=2;
else if(c[2]=='c')a[2]+=2;
}
printf("三位候选人得分\na:%d \nb:%d \nc:%d\n",a[0],a[1],a[2]);
if(a[0]==a[1]&&a[1]==a[2]&&a[2]==a[0]||a[0]==a[1]&&a[0]>a[2]||a[0]==a[2]&&a[0]>a[1]||a[1]==a[2]&&a[1]>a[0])
{printf("重新投票\n");
goto start;
}
if(a[0]>a[1]&&a[0]>a[2])
if(a[1]>a[0]&&a[1]>a[2])m=1;
if(a[2]>a[0]&&a[2]>a[1])m=2;
printf("祝贺%c当选冠军!",'a'+m);
}
程序运行结果
(六)总结
对于C语言的学习,本人还是感觉多多动手上机操作比较好,这样我们才能学到更多的知识。 回顾起此次课程设计,至今我们仍感慨颇多,的确