a98 发表于 2018-2-22 02:38:27

小甲鱼的结构体课后题投票系统,票数计数问题

#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:}

人造人 发表于 2018-2-22 05:12:24

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;
}

a98 发表于 2018-2-22 17:21:03

人造人 发表于 2018-2-22 05:12
这里两次循环,没有必要

好 感谢{:10_275:}
页: [1]
查看完整版本: 小甲鱼的结构体课后题投票系统,票数计数问题