for(i = 0; i < k; i++)
{
printf("第 %d 位投票,请写下支持的候选人的名字:", i + 1);
scanf("%s", &cand);
for(j = 0; j < NUM; ++j)
{
if(strcmp(cand, candidate[j].name) == 0)
{
candidate[j].score++; //这里candidate[i].score++;为什么不能增加票数呀
}
}
}
max = candidate[0].score;
for(i = 0;i < NUM; i++) //求票数的最大值
{
if(max < candidate[i].score)
{
max = candidate[i].score;
}
}
for(i = 0;i < NUM; i++) //打印票数最大值的人的名字
{
if(max == candidate[i].score)
{
printf("%s\n", candidate[i].name);
}
}
这里两次循环,没有必要
#include<stdio.h>
#include<string.h>
#define NUM 3 //3个候选者
#define NO 5 //5个投票者
struct candidate
{
char name[10];
int score;
}candidate[NUM] = {{"小可爱", 0}, {"小甲鱼", 0}, {"路人甲", 0}};
int main(void)
{
int i, j;
char cand[10];
int k = NO;
printf("欢迎进入良好公民评选投票系统:\n\n");
printf("候选人有:");
for(i = 0; i < NUM; i++)
{
printf("%s ", candidate[i].name);
}
printf("\n\n");
for(i = 0; i < k; i++)
{
printf("第 %d 位投票,请写下支持的候选人的名字:", i + 1);
scanf("%s", &cand);
for(j = 0; j < NUM; ++j)
{
if(strcmp(cand, candidate[j].name) == 0)
{
candidate[j].score++; //这里candidate[i].score++;为什么不能增加票数呀
}
}
}
printf("\n\n");
for(i = 0; i < NUM; i++)
{
printf("%s 同学得票数位:%d\n", candidate[i].name, candidate[i].score);
}
printf("\n");
printf("本次投票活动的胜利者是:");
struct candidate *max = &candidate[0];
for(i = 1; i < NUM; i++) // 求票数的最大值
{
if(max->score < candidate[i].score)
{
max = &candidate[i];
}
}
printf("%s\n", max->name); // 打印票数最大值的人的名字
return 0;
}
|