- 编程统计候选人的得票票数。设有三个候选人zhang、li和wang,共有10位选民为这三位候选人投票。每位选民输入一个得票的候选人的名字,若选民输错候选人的姓名,则按照废票处理。选民投票结束后根据每个候选人得票票数进行降序排序,并依次输出各候选人的得票结果和废票信息。要求用结构体candidate的数组表示3个候选人的姓名和得票结果。
注意:设计和定义结构体时以个体为单位进行描述。
程序运行效果如下图所示:
测试数据:
wang
zhang
wang
li
zhang
zhang
yang
zhao
wang
li
我的代码:
#include<stdio.h>
#include<string.h>
#define N 10
int main()
{
char tou[15][10];
int i=0,j=0,a=0;
typedef struct Candidate{
char name[10];
int piao;
}Cand;
Cand k;
Cand stu[5]={
{"zhang",0},
{"wang",0},
{"li",0}};
for(i=0;i<N;i++){
scanf("%s",tou[i]);
}
for(i=0;i<N;i++){
for(j=0;j<3;j++){
if(!strcmp(tou[i],stu[j].name)){
stu[j].piao++;
}
}
}
printf("投票统计结果:\n");
printf("-------------------------------\n");
printf("序号\t候选人\t票数\n");
for(i=0;i<3;i++){
for(j=i+1;j<3;j++){
if(stu[i].piao<stu[j].piao){
k=stu[i];
stu[i]=stu[j];
stu[j]=k;
}
}
}
for(i=0;i<3;i++){
printf("%d.\t%s\t%d\n",i+1,stu[i].name,stu[i].piao);
}
printf("-------------------------------\n");
for(i=0;i<3;i++){
a=a+stu[i].piao;
}
printf("废票数量:%d",10-a);
return 0;
}