小甲鱼要求用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");
}
{:7_174:}你好像没利用好结构中的piaoshu。。只是摆设?
最后那个打印冠军可以用switch(max)。
{:7_153:}甲鱼与女<>优同列。 Potato丶 发表于 2013-7-27 00:29 static/image/common/back.gif
你好像没利用好结构中的piaoshu。。只是摆设?
最后那个打印冠军可以用switch(max)。
刚刚学到结构~~还不怎么熟悉~~谢谢您的指点~~{:5_109:}~ switch记住了~我还想把指针运用上去~~可是一弄指针就眼花了~{:5_107:} 本帖最后由 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);
} Potato丶 发表于 2013-7-27 00:46 static/image/common/back.gif
结构中可以用字符指针来指向字符串。用字符数组的话也可以,但可能浪费空间或者不足。
还可以建立一个结 ...
我在想~用了指针数据就比较好传递~再用不同函数实现里面的 比较和筛选功能~这样会不会高效点?~~我先琢磨下~ 不懂再咨询您{:5_109:} 希望你能继续坚持下去!!! {:5_109:} zer0 发表于 2013-7-27 01:41 static/image/common/back.gif
希望你能继续坚持下去!!!
从一点都不懂到现在~~好不容易才找到兴趣~~肯定会坚持到底的~~谢谢支持{:5_91:} 顶。。。。。。 我自己研究了半天,还是没你这个方便啊~ [抱抱] 好消息!庆贺美女店主上榜。十款性感内衣免费送!极致诱惑 http://t.cn/zQSRRgN 注明:新浪微博入口,邮资货款都不要啦 完全赠送!好东西大家分享,如有打扰可以无视…@结衣波性感生活秀 [打哈气]
http://bbs.fishc.com/xwb/images/bgimg/icon_logo.png 来自 过客拉风的女孩 的新浪微博 程序还好啦,就是人丑了点:lol: 天下无敌丑爸爸 发表于 2013-8-4 11:39 static/image/common/back.gif
程序还好啦,就是人丑了点
{:5_97:}小甲鱼会看到的~ [花心] @游健健jee 亲们福音来了,喜欢仓老师的主妇还是小泽的女警诱惑,或是波多野结衣的秘书暴露装?这里应有尽有:http://t.cn/zQaQA6C 注明微博来的有惊喜… [太开心]
http://bbs.fishc.com/xwb/images/bgimg/icon_logo.png 来自 当IH 的新浪微博 [打哈气] 亲们福音来了,喜欢仓老师的主妇还是小泽的女警诱惑,或是波多野结衣的秘书暴露装?这里应有尽有:http://t.cn/zQaQA6C 注明微博来的有惊喜… [委屈]
http://bbs.fishc.com/xwb/images/bgimg/icon_logo.png 来自 小小七_58363 的新浪微博 支持 一下........... 请指导
#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;
} 徐倩 发表于 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]