c语言投票程序设计,C语言课程设计-投票程序设计.doc
投票程序
题目与要求:
题目要求
设有代号为’a’,’b’,’c’的三个个足球先生候选人,根据投票者在选票上对他们编号的填写顺序分别记分5,3,2。请编程从键盘上输入投票人数及投票结果,统计他们的得分,并输出哪位当选足球先生。请注意;若同一张票上写有两个相同代号,则显示“此票无效”,若最终前两名得分相同应显示“重新投票”,否则显示三个候选者得分并输出“祝贺X当选冠军!”。
例如:投票人数:5
输入投票内容:
a b c
c a b
c b a
c a a 该票无效!
c b a
三位候选人得分:
a: 12
b: 13
c: 15
祝贺c当选冠军!
1.1问题提出与要求:
需求分析
本程序中要求候选人有编号和得票数,且每张选票上要同时写上三个候选人的编号,最终输出谁是获胜者。因此可以用结构体来存储候选人的信息。唱票中要求相对应的编号分别记分为5、3、2,因此在记分程序中可以用一个条件表达式来进行统计得分。统计结果中若前两名有相同的得票数则要求重新投票。为此要求把三个侯选人的总得分进行比较,则可以用一个判断语句来判断,简单明了。
数据结构可用结构体数组,结构体成员包括代号、得分。或者采用二维数组,行方向对应一张投票,列方向对应各候选人得分。
2.功能实现设计:
2.1总体设计——程序流程图
流程图:
开始输入投票人数及投票内容
开始
输入投票人数及投票内容
统计相应候选人的票数并排序
选票编号重复?
判断前两名
总票数是否相等
结束
重新投票
N
Y
Y
N
输出投票结果及获胜者
定义结构体与相关变量
该票无效
2.2详细设计:
<1>程序源代码:
#include
main()
{
int finish=0,first,seccond,i,scores[3],num;
char s1,s2,s3;
printf("*******************************************************\n");
printf("*****Welcome to use footballman voting programe! ******\n");
printf("*******************************************************\n");
while(finish==0) /输入模块/
{
for(i=0;i<3;i++) scores[i]=0;
printf("请输入投票人数: \n"); /有多少人投票/
scanf("%d",&num); /输入投票人数/
getchar();
printf("请输入投票内容(选择您所需的abc候选人次序): \n"); /选票的内容/
for(i=0;i
{
scanf("%c %c %c",&s1,&s2,&s3); /输入投票内容/
getchar();
if(s1==s2||s1==s3||s2==s3)
printf("该票无效!\n"); /该票无效/
if(s1!=s2 && s1!=s3 && s2!=s3 && (s1>='a' && s1<='c')
&& (s2>='a' && s2<='c') && (s3>='a' && s3<='c'))/统计模块/
{
scores[s1-'a']+=5;
scores[s2-'a']+=3;
scores[s3-'a']+=2;
}
}
printf("Voting results:\n"); /输出模块/
printf("a: %d\n",scores[0]); /结果输出/
printf("b: %d\n",scores[1]);
printf("c: %d\n",scores[2]);
first=0;
seccond=1;
for(i=0;i<3;i++)
{
if(scores[i]>scores[first])
{
seccond=first;
first=i;
}
