游健健jee 发表于 2013-7-27 00:18:52

小甲鱼要求用C语言写的投票系统,有不足的地方请大家指出。(附源码)




#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct toupiao
{
    char name;
        int piaoshu;
       
}a = {"小甲鱼"}, b = {"苍井空"}, c = {"小泽玛利亚"},d = {"松岛枫"} ;

void main()
{
        char shuru ;
        int i, max, a1=0, b1=0, c1=0, d1=0;
        int x={0,0,0,0};
       
        printf("\t\t\t欢迎进入优秀老师投票系统!\n\n\n");
        printf("选举候选人:\n\t\t\t小甲鱼,苍井空,小泽玛利亚,松岛枫\n");
    printf("********************************************************************************\n\n\n");
        for ( i=1 ; i<11 ; i++ )
        {
                printf("第%d位投票,请输入候选人的名字:",i);
                gets( shuru );
                if( strcmp(shuru,a.name)==0 )
                {
                        x++;
                }
                else if( strcmp(shuru,b.name)==0 )
                {
                        x++;
                }
                else if( strcmp(shuru,c.name )==0 )
                {
                        x++;
                }
                else if( strcmp(shuru,d.name )==0 )
                {
                        x++;
                }
        }
        max = x ;
        for( i=1 ; i<4 ; i++ )
        {
                if(max < x)
                {
                        max = x;
                }
        }
       
        printf("********************************************************************************\n");
        printf("\t各候选人的票数如下:\n\t小甲鱼: %d 票\n\t苍井空: %d 票\n\t小泽玛利亚: %d 票\n\t松岛枫: %d 票\n\n", x, x, x,x );
       
       
       
       
        if( max == x )
        {
                printf("本次投票的胜利者是: %s \n", a.name);
        }
    else if( max == x )
        {
                printf("本次投票的胜利者是: %s \n", b.name );
        }
        else if( max == x )
        {
                printf("本次投票的胜利者是: %s \n", c.name );
        }
        else if( max == x )
        {
                printf("本次投票的胜利者是: %s \n", d.name );
        }
       
        system("pause");
}


Potato丶 发表于 2013-7-27 00:29:30

{:7_174:}你好像没利用好结构中的piaoshu。。只是摆设?
最后那个打印冠军可以用switch(max)。

{:7_153:}甲鱼与女<>优同列。

游健健jee 发表于 2013-7-27 00:33:51

Potato丶 发表于 2013-7-27 00:29 static/image/common/back.gif
你好像没利用好结构中的piaoshu。。只是摆设?
最后那个打印冠军可以用switch(max)。



刚刚学到结构~~还不怎么熟悉~~谢谢您的指点~~{:5_109:}~ switch记住了~我还想把指针运用上去~~可是一弄指针就眼花了~{:5_107:}

Potato丶 发表于 2013-7-27 00:46:56

本帖最后由 Potato丶 于 2013-7-27 00:48 编辑

游健健jee 发表于 2013-7-27 00:33 static/image/common/back.gif
刚刚学到结构~~还不怎么熟悉~~谢谢您的指点~~~ switch记住了~我还想把指针运用上去~~可是一弄指 ...
结构中可以用字符指针来指向字符串。用字符数组的话也可以,但可能浪费空间或者不足。
还可以建立一个结构数组来分别储存。

{:7_174:}贴上我以前写的代码吧。觉得没什么价值就可以忽略了……#include <stdio.h>
#include <string.h>
#include <malloc.h>


#defineNUMCAND 3

void main()
{
      structcandt
      {
                char *name;
                int total;
      }cand={ {"麻生希",0} , {"麻仓优",0} , {"神咲诗织",0} };

         int i=1;
         char *str=calloc(30,sizeof(char));

         struct candt candmost;

   printf("欢迎来到公民投票系统:\n\n");

         printf("本次投票候选人有:麻生希   麻仓优神咲诗织 \n");//此处可以改一改。分别调用结构中的字符串。
         printf("开始投票……\n\n");

         while (i<=10)
         {
               printf("您打算把第%d票投给:",i);
               scanf("%s",str);
               if (strcmp(cand.name,str)==0)
                         cand.total++;
               else if (strcmp(str,cand.name)==0)
                         cand.total++;
               else if (strcmp(str,cand.name)==0)
                         cand.total++;
               i++;
         };

         for(i=0;i<NUMCAND;i++)
         {
               printf("候选人%s得票数为:%d\n",cand.name,cand.total);
         }
      
         
   candmost.total=0;
         for (i=0;i<NUMCAND;i++)
         {
               if (candmost.total<cand.total)
                         candmost=cand;

         }

         printf("本次投票冠军得主为%s,得票数为%d!\n",candmost.name,candmost.total);
         free(str);
}

游健健jee 发表于 2013-7-27 00:58:20

Potato丶 发表于 2013-7-27 00:46 static/image/common/back.gif
结构中可以用字符指针来指向字符串。用字符数组的话也可以,但可能浪费空间或者不足。
还可以建立一个结 ...

我在想~用了指针数据就比较好传递~再用不同函数实现里面的 比较和筛选功能~这样会不会高效点?~~我先琢磨下~ 不懂再咨询您{:5_109:}

zer0 发表于 2013-7-27 01:41:35

希望你能继续坚持下去!!! {:5_109:}

游健健jee 发表于 2013-7-27 13:09:26

zer0 发表于 2013-7-27 01:41 static/image/common/back.gif
希望你能继续坚持下去!!!

从一点都不懂到现在~~好不容易才找到兴趣~~肯定会坚持到底的~~谢谢支持{:5_91:}

feixiangmenghu 发表于 2013-7-27 20:10:12

顶。。。。。。

许小恩 发表于 2013-7-30 16:06:39

我自己研究了半天,还是没你这个方便啊~

微博评论 发表于 2013-8-4 11:15:40

[抱抱] 好消息!庆贺美女店主上榜。十款性感内衣免费送!极致诱惑 http://t.cn/zQSRRgN 注明:新浪微博入口,邮资货款都不要啦 完全赠送!好东西大家分享,如有打扰可以无视…@结衣波性感生活秀 [打哈气]

http://bbs.fishc.com/xwb/images/bgimg/icon_logo.png 来自 过客拉风的女孩 的新浪微博

天下无敌丑爸爸 发表于 2013-8-4 11:39:24

程序还好啦,就是人丑了点:lol:

游健健jee 发表于 2013-8-4 12:19:22

天下无敌丑爸爸 发表于 2013-8-4 11:39 static/image/common/back.gif
程序还好啦,就是人丑了点

{:5_97:}小甲鱼会看到的~

微博评论 发表于 2013-8-4 18:04:22

[花心] @游健健jee 亲们福音来了,喜欢仓老师的主妇还是小泽的女警诱惑,或是波多野结衣的秘书暴露装?这里应有尽有:http://t.cn/zQaQA6C 注明微博来的有惊喜… [太开心]

http://bbs.fishc.com/xwb/images/bgimg/icon_logo.png 来自 当IH 的新浪微博

微博评论 发表于 2013-8-4 19:19:39

[打哈气] 亲们福音来了,喜欢仓老师的主妇还是小泽的女警诱惑,或是波多野结衣的秘书暴露装?这里应有尽有:http://t.cn/zQaQA6C 注明微博来的有惊喜… [委屈]

http://bbs.fishc.com/xwb/images/bgimg/icon_logo.png 来自 小小七_58363 的新浪微博

隨鈊乄鎍慾 发表于 2013-8-4 19:44:25

支持 一下...........

徐倩 发表于 2017-11-12 20:28:36

请指导
#include<stdio.h>
#include<string.h>
struct person
{
        char name;
        int num;
}stu={{"小甲鱼",0},{"李白",0},{"松松",0}};
int main()
{
printf("欢迎进入良好公民投票系统:<>\n候选人有:小甲鱼,李白,松松\n");
int i,j,max=0;
char str;
for(i=0;i<=6;i++)
{
        printf("第%d位投票,请写下支持的候选人名字:",i);
    scanf("%s",str);
    for(j=0;j<3;j++)
    {
            if(strcmp(str,stu.name)==0)
            {
                    stu.num++;
            }
            if(max<stu.num)
               {
                       max=stu.num;
               }
    }
}
for(i=0;i<3;i++)
{
        printf("%s 同学得票为:%d",stu.name,stu.num);
        putchar('\n');
}
printf("本次投票活动的胜利者是:\n");
for(j=0;j<3;j++)
{
        if(stu.num==max)
        {
                printf("%s\n",stu.name);
        }
}
return 0;
}

1047814508 发表于 2017-12-15 00:29:54

徐倩 发表于 2017-11-12 20:28
请指导
#include
#include


if(strcmp(str,stu.name)==0)
            {
                  stu.num++;
            }
            if(max<stu.num)
               {
                         max=stu.num;
               }
逻辑出现错误 ,第二个if语句应该是被第一个if语句包含在内的。
也就是if(strcmp(str,stu.name)==0)
                   {
                        stu.num++;
                        if(max<stu.num)
                                 max=stu.num;
                   }
这样就是正确答案了
页: [1]
查看完整版本: 小甲鱼要求用C语言写的投票系统,有不足的地方请大家指出。(附源码)