鱼C论坛

 找回密码
 立即注册
查看: 4288|回复: 4

怎么才能使这个程序得到预想的结果?(关于10人给3人投票的票数统计结果)

[复制链接]
发表于 2013-5-15 18:05:48 | 显示全部楼层 |阅读模式
2鱼币
#include<string.h>
#include<stdio.h>

struct Person
{
char name[20];
int count;
}leader[3]={"zhang",0,"li",0,"sun",0};
int main()
{int i,j;
char leader_name[20];
for(i=1;i<=10;i++)
{scanf("%s",leader_name);
for(j=1;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;
}
printf("\nResult:\n");
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
return 0;
}
这个程序到底存在什么问题?无法得到“zhang”的数据!!求指导·····

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-15 21:17:35 | 显示全部楼层
本帖最后由 熊文杰 于 2013-5-15 21:23 编辑

c语言是从0开始 而不是从1开始
for(j=1;j<3;j++)
    if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;

leader[0].name才是zhang     你这个循环从1开始么,把1改成0





小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-16 09:05:49 | 显示全部楼层
数组的标号是从0开始的,leader[3]的三个元数是 leader[0],leader[1],leader[2],
zhang 处于第一个,所以zhang的标号是0,也就是leader[0]
所以你的循环得从0开始,
for(j=1;j<3;j++)
改为
for(j=0;j<3;j++)
还有,你之前的写法
for(j=1;j<3;j++)
循环只有两次哦
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-20 20:32:57 | 显示全部楼层
我只是路过打酱油的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-20 20:37:23 | 显示全部楼层
我只是路过打酱油的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-28 09:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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