小甲鱼的结构体课后题投票系统,票数计数问题
#include<stdio.h>#include<string.h>
#define NUM 3 //3个候选者
#define NO 5 //5个投票者
struct candidate
{
char name;
int score;
}candidate={{"小可爱", 0}, {"小甲鱼", 0}, {"路人甲", 0}};
void main()
{
int i, j, max;
char cand;
int k=NO;
printf("欢迎进入良好公民评选投票系统:\n\n");
printf("候选人有:");
for(i = 0;i < NUM; i++)
{
printf("%s ",candidate.name);
}
printf("\n\n");
for(i=0; i < k; i++)
{
printf("第 %d 位投票,请写下支持的候选人的名字:", i+1);
scanf("%s", &cand);
if(strcmp( cand, candidate.name) ==0 )
{
candidate.score++; //这里candidate.score++;为什么不能增加票数呀
}
}
printf("\n\n");
for(i = 0;i < NUM; i++)
{
printf("%s 同学得票数位:%d\n", candidate.name, candidate.score);
}
printf("\n");
printf("本次投票活动的胜利者是:");
max = candidate.score;
for(i = 0;i < NUM; i++)//求票数的最大值
{
if(max < candidate.score)
{
max = candidate.score;
}
}
for(i = 0;i < NUM; i++)//打印票数最大值的人的名字
{
if(max == candidate.score)
{
printf("%s\n", candidate.name);
}
}
}
请教各位,为什么票数一直不对,代码的中间那里candidate.score++;为什么不能计票数呀。
{:10_250:}
for(i = 0; i < k; i++)
{
printf("第 %d 位投票,请写下支持的候选人的名字:", i + 1);
scanf("%s", &cand);
for(j = 0; j < NUM; ++j)
{
if(strcmp(cand, candidate.name) == 0)
{
candidate.score++; //这里candidate.score++;为什么不能增加票数呀
}
}
}
max = candidate.score;
for(i = 0;i < NUM; i++)//求票数的最大值
{
if(max < candidate.score)
{
max = candidate.score;
}
}
for(i = 0;i < NUM; i++)//打印票数最大值的人的名字
{
if(max == candidate.score)
{
printf("%s\n", candidate.name);
}
}
这里两次循环,没有必要
#include<stdio.h>
#include<string.h>
#define NUM 3 //3个候选者
#define NO 5 //5个投票者
struct candidate
{
char name;
int score;
}candidate = {{"小可爱", 0}, {"小甲鱼", 0}, {"路人甲", 0}};
int main(void)
{
int i, j;
char cand;
int k = NO;
printf("欢迎进入良好公民评选投票系统:\n\n");
printf("候选人有:");
for(i = 0; i < NUM; i++)
{
printf("%s ", candidate.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.name) == 0)
{
candidate.score++; //这里candidate.score++;为什么不能增加票数呀
}
}
}
printf("\n\n");
for(i = 0; i < NUM; i++)
{
printf("%s 同学得票数位:%d\n", candidate.name, candidate.score);
}
printf("\n");
printf("本次投票活动的胜利者是:");
struct candidate *max = &candidate;
for(i = 1; i < NUM; i++) // 求票数的最大值
{
if(max->score < candidate.score)
{
max = &candidate;
}
}
printf("%s\n", max->name); // 打印票数最大值的人的名字
return 0;
}
人造人 发表于 2018-2-22 05:12
这里两次循环,没有必要
好 感谢{:10_275:}
页:
[1]