首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

投票有关问题!各位大神

2012-11-07 
投票问题!各位大神请指教刚学到结构体,有个例题,让编写一段程序:给三个候选人投票,每输入一个人的名字,这

投票问题!各位大神请指教
刚学到结构体,有个例题,让编写一段程序:
给三个候选人投票,每输入一个人的名字,这个人便得一票;直到按ESC键结束;
于是我写下了以下代码:
#include "stdio.h"
#define C "%s共计得%d票\n"
struct people
{
char name[20];
int k;
}p[3]={"张三",0,"李四",0,"王麻子",0};
void main()
{
int i;
char a[20];
printf("要将票投给哪个候选人,请输入候选人姓名(投票结束请按Esc):\n");
while(1)
{
scanf("%s",a);
if(a==p[0].name) p[0].k++;
if(a==p[1].name) p[1].k++;
if(a==p[2].name) p[2].k++;
else break;
}
printf("三位候选人所得票数为:\n");
for(i=0;i<3;i++)
printf("%s共计得%d票\n",p[i].name,p[i].k);
}

结果运行出来有3个问题
第一个问题:只能输入一次候选人姓名
第二个问题:然后直接显示所有人的得票结果,而且的票结果竟然全是0;
最后一个问题,像我写的这个程序的情况,怎样实现按ESC停止输入~?然后显示结果~?

[解决办法]
直接退出可能是因为你的a不能和那三个p.name匹配的原因 你把三个名称改成英文试试可以不
这个貌似从第二个问题可以看出
esc退出的话有个可以监听键盘按键的东西 忘掉了 什么bioskey之类的好像
[解决办法]
把while循环改成另一种编程风格,看看你能看出什么错误来。

C/C++ code
while(1){    scanf("%s",a);    if(a==p[0].name)        p[0].k++;    if(a==p[1].name)        p[1].k++;    if(a==p[2].name)        p[2].k++;    else         break;}
[解决办法]
a==p[0].name
应改为
!strcmp(a,p[0].name)

热点排行