鱼C论坛

 找回密码
 立即注册
查看: 10437|回复: 16

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

[复制链接]
发表于 2013-7-27 00:18:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
QQ图片20130727001214.jpg
 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

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

void main()
{ 
        char shuru[20] ;
        int i, max, a1=0, b1=0, c1=0, d1=0;
        int x[4]={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[0]++;
                }
                else if( strcmp(shuru,b.name)==0 )
                {
                        x[1]++;
                }
                else if( strcmp(shuru,c.name )==0 )
                {
                        x[2]++;
                }
                else if( strcmp(shuru,d.name )==0 )
                {
                        x[3]++;
                }
        }
        max = x[0] ;
        for( i=1 ; i<4 ; i++ )
        {
                if(max < x[i])
                {
                        max = x[i];
                }
        }
        
        printf("********************************************************************************\n");
        printf("\t各候选人的票数如下:\n\t小甲鱼: %d 票\n\t苍井空: %d 票\n\t小泽玛利亚: %d 票\n\t松岛枫: %d 票\n\n", x[0], x[1], x[2],x[3] );
        
        
        
        
        if( max == x[0] )
        {
                printf("本次投票的胜利者是: %s \n", a.name);
        }
    else if( max == x[1] )
        {
                printf("本次投票的胜利者是: %s \n", b.name );
        }
        else if( max == x[2] )
        {
                printf("本次投票的胜利者是: %s \n", c.name );
        }
        else if( max == x[3] )
        {
                printf("本次投票的胜利者是: %s \n", d.name );
        }
        
        system("pause");
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-27 00:29:30 | 显示全部楼层
{:7_174:}你好像没利用好结构中的piaoshu。。只是摆设?
最后那个打印冠军可以用switch(max)。

{:7_153:}甲鱼与女<>优同列。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-27 00:33:51 | 显示全部楼层

刚刚学到结构~~还不怎么熟悉~~谢谢您的指点~~~ switch记住了~我还想把指针运用上去~~可是一弄指针就眼花了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-27 00:46:56 | 显示全部楼层
本帖最后由 Potato丶 于 2013-7-27 00:48 编辑
游健健jee 发表于 2013-7-27 00:33
刚刚学到结构~~还不怎么熟悉~~谢谢您的指点~~~ switch记住了~我还想把指针运用上去~~可是一弄指 ...

结构中可以用字符指针来指向字符串。用字符数组的话也可以,但可能浪费空间或者不足。
还可以建立一个结构数组来分别储存。

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


#define  NUMCAND 3

void main()
{
        struct  candt
        {
                char *name;
                int total;
        }cand[NUMCAND]={ {"麻生希",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[0].name,str)==0)
                         cand[0].total++;
                 else if (strcmp(str,cand[1].name)==0)
                         cand[1].total++;
                 else if (strcmp(str,cand[2].name)==0)
                         cand[2].total++;
                 i++;
         };

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

         }

         printf("本次投票冠军得主为%s,得票数为%d!\n",candmost.name,candmost.total);
         free(str);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-27 00:58:20 | 显示全部楼层
Potato丶 发表于 2013-7-27 00:46
结构中可以用字符指针来指向字符串。用字符数组的话也可以,但可能浪费空间或者不足。
还可以建立一个结 ...

我在想~用了指针数据就比较好传递~再用不同函数实现里面的 比较和筛选功能~这样会不会高效点?~~我先琢磨下~ 不懂再咨询您
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-27 01:41:35 | 显示全部楼层
希望你能继续坚持下去!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-27 13:09:26 | 显示全部楼层
zer0 发表于 2013-7-27 01:41
希望你能继续坚持下去!!!

从一点都不懂到现在~~好不容易才找到兴趣~~肯定会坚持到底的~~谢谢支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-27 20:10:12 | 显示全部楼层
顶。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-30 16:06:39 | 显示全部楼层
我自己研究了半天,还是没你这个方便啊~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


                               
登录/注册后可看大图
来自 过客拉风的女孩 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-4 11:39:24 | 显示全部楼层
程序还好啦,就是人丑了点:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-4 12:19:22 | 显示全部楼层
天下无敌丑爸爸 发表于 2013-8-4 11:39
程序还好啦,就是人丑了点

小甲鱼会看到的~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-4 18:04:22 | 显示全部楼层
[花心] @游健健jee 亲们福音来了,喜欢仓老师的主妇还是小泽的女警诱惑,或是波多野结衣的秘书暴露装?这里应有尽有:http://t.cn/zQaQA6C 注明微博来的有惊喜… [太开心]


                               
登录/注册后可看大图
来自 当IH 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2013-8-4 19:19:39 | 显示全部楼层
[打哈气] 亲们福音来了,喜欢仓老师的主妇还是小泽的女警诱惑,或是波多野结衣的秘书暴露装?这里应有尽有:http://t.cn/zQaQA6C 注明微博来的有惊喜… [委屈]


                               
登录/注册后可看大图
来自 小小七_58363 的新浪微博
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-4 19:44:25 | 显示全部楼层
支持 一下...........
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-12 20:28:36 | 显示全部楼层
请指导
#include<stdio.h>
#include<string.h>
struct person
{
        char name[20];
        int num;
}stu[3]={{"小甲鱼",0},{"李白",0},{"松松",0}};
int main()
{
printf("欢迎进入良好公民投票系统:<>\n候选人有:小甲鱼,李白,松松\n");
int i,j,max=0;
char str[20];
for(i=0;i<=6;i++)
{
        printf("第%d位投票,请写下支持的候选人名字:",i);
    scanf("%s",str);
    for(j=0;j<3;j++)
    {
            if(strcmp(str,stu[j].name)==0)
            {
                    stu[j].num++;
            }
            if(max<stu[j].num)
                 {
                         max=stu[j].num;
                 }
    }
}
for(i=0;i<3;i++)
{
        printf("%s 同学得票为:%d",stu[i].name,stu[i].num);
        putchar('\n');
}
printf("本次投票活动的胜利者是:\n");
for(j=0;j<3;j++)
{
        if(stu[j].num==max)
        {
                printf("%s\n",stu[j].name);
        }
}
return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-15 00:29:54 | 显示全部楼层
徐倩 发表于 2017-11-12 20:28
请指导
#include
#include

if(strcmp(str,stu[j].name)==0)
            {
                    stu[j].num++;
            }
            if(max<stu[j].num)
                 {
                         max=stu[j].num;
                 }
逻辑出现错误 ,第二个if语句应该是被第一个if语句包含在内的。
也就是if(strcmp(str,stu[j].name)==0)
                   {
                          stu[j].num++;
                          if(max<stu[j].num)
                                   max=stu[j].num;
                   }
这样就是正确答案了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-29 01:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表