veer786 发表于 2013-10-20 17:39:27

大神帮忙看一下这个c语言写的投票程序。。。。

[ 本帖最后由 veer786 于 2013-10-20 17:50 编辑 ]

#include<stdio.h>
int compare(char source[],char destination[]);
struct Person* max_person(struct Person *a,struct Person *b, struct Person *c);

struct Person
{
      char name;
      int vote;
};
int main()
{      
      struct Person person = {{"张三",0},{"李四",0},{"王五",0}};
      struct Person temp;
      struct Person *p;
      int j = 1;
      int i;
      printf("候选人:\n张三\t李四\t王五\n");

      while(j <=10)
      {      
                printf("请输入第%d位候选人姓名:\n",j);
                if(compare(gets(temp.name),"张三"))
                {
                        person.vote++;
                }
                else if(compare(gets(temp.name),"李四"))
                {
                        person.vote++;
                }
                else if(compare(gets(temp.name),"王五"))
                {
                        person.vote++;
                }
                else
                {
                        ;
                }
                j++;
      }
      p = max_person(&person,&person,&person);
      for(i = 0;i<3;i++)
      {
                printf("%s得票%d\n",person.name,person.vote);
               
      }
      printf("得票最高的是:%s\n",p->name);
      
      
      return 0;
}
int compare(char source[],char destination[])
{
      int i = 0;
      while(source != '\0')
      {
                if(source == destination)
                {
                        ;
                }
                else
                {
                        return 0;
                }
                i++;
      }
      return 1;
}
struct Person* max_person(struct Person *a,struct Person *b, struct Person *c)
{
      if(a->vote<b->vote)
      {
                a = b;
      }
      if(a->vote<c->vote)
      {
                a = c;
      }
      return a;
      
      
}

为什么输入候选人不是一次只输入一个人?

风之残月 发表于 2013-11-9 19:23:15

        while(j <=10)
        {               
                printf("请输入第%d位候选人姓名:\n",j);
                gets(temp.name);
                if(compare(temp.name,"张三"))
                {
                        person.vote++;
                }
               
                else if(compare(temp.name,"李四"))
                {
                        person.vote++;
                }
                else if(compare(temp.name,"王五"))
                {
                        person.vote++;
                }
                else
                {
                        ;
                }
                j++;
        }

因为你的if ,if else里面都执行了一个gets
页: [1]
查看完整版本: 大神帮忙看一下这个c语言写的投票程序。。。。