题目:
完成一个对候选人得票的统计程序。假设有3个候选人,使用结构体存储每一个候选人的名字和得票数。记录每一张选票的得票人名,输出每个候选人最终的得票数。
思路:
利用结构体数组初始化三个人的票数。for循环输入输出,
具体细节见代码示例。
代码示例:
#include<stdio.h>
#include<string.h>
struct people
{
char name[80];
int count;
}leader[3]={
"yyp",0,"ppp",0,"www",0};
int main()
{
int i,n,j,max,t;
char name[20];
printf("Please input totally numbers:\n");
scanf("%d",&n);
printf("input leaders'names:\n");
for(i=1;i<=n;i++)
{
scanf("%s",&name);
for(j=0;j<3;j++)
{
if(strcmp(name,leader[j].name)==0)
{
leader[j].count++;
}
}
}
printf("the result of voting:\n");
for(i=0;i<3;i++)
{
printf("%s:%d\n",leader[i].name,leader[i].count);
}
max=leader[0].count;
for(i=1;i<3;i++)
{
if(leader[i].count>max)
{
max=leader[i].count;
}
}
for(i=0;i<3;i++)
{
if(max==leader[i].count)
t=i;
}
printf("the winner is:\n");
printf("%s\n",leader[t].name);
}
注意:
此段作输入统计票数的部分
for(i=1;i<=n;i++)
{
scanf("%s",&name);
n是需要作输入赋初值的,比如预设初值n为10
若scanf换成gets则只能投9次票。换成scanf才得以投10次票
max=leader[0].count;
for(i=1;i<3;i++)
{
if(leader[i].count>max)
{
max=leader[i].count;
}
}
for(i=0;i<3;i++)
{
if(max==leader[i].count)
t=i;
}
这部分代码作用是先将票数最高得出数目再去和每一个人的票数做对比之后得出数组下标再输出胜利者。