请各位师兄帮帮忙谢谢

loveryxzx 2009-11-03 11:26:42
下面是谭浩强《C程序设计》中的一个例子:
例11.2 对候选人得票的统计程序。设有三个勾选人,每次输入一个得票的候选人的名字,最后输出各人得票结果。

include <string.h>
struct person
{char name[20];
int count;
}leader[3] = {"Li",0,"Zhang",0,"Fun",0};

main()
{int i,j;
char leader_name[20];
for(i=1;i<=10;i++)
{scanf("%s",leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0) leader[j].count++;
}
printf("\n");
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
}

在这个程序中,已经定死了要输入10次候选人的名字,即一共有十票来统计。现在我想改进这个程序,使得没有输入次数限制,程序会自动判断输入了多少次,然后统计出每人的得票数。例如,输入3次“Li”,3次“Zhang”,3次“Fun”,程序统计并输出每人都有三票;也可以输入3次“Li”,5次“Zhang”,3次“Fun”,程序会做出相应的正确的处理。请问如何修改。
...全文
70 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐鹦鹉 2009-11-03
  • 打赏
  • 举报
回复
把for循环改为while(true),这样可以一直接收输入。
对输入的信息进行判断,确定是否要求结束投票。比如一楼的exit之类的。
昵称很不好取 2009-11-03
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct person
{char name[20];
int count;
}leader[3] = {"Li",0,"Zhang",0,"Fun",0};

int main(){
int i,j;
char leader_name[20];

for(i=1;;i++){ //这里把循环上限去掉
scanf("%s",leader_name);
if(strcmp("exit",leader_name)==0) //这里加个结束条件,这里是假设输入exit结束
break;
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0) leader[j].count++;
}
printf("\n");
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);

return 0;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧