安亭国际汽车城:请教C语言

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/25 15:17:10
对10个候选人进行选举,现有一个100条记录的选票,每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依次类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票选中人数小于等于5个人时则被认为是无效的选票,统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中
#include <stdio.h>
char xx[100][11]={"1101001001",
"0111101010",
"0110011111",
"1011110000",
"0001010111",
"1011100101",
"0110100010",
"0110000001",
"1100010101",
"1010010001"
};
int yy[10];
main()
{
int count=0 ,j,i,k;
clrscr();
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
if(xx[i][j]=='1')
{
count++;
if(count>=6)
{
for(k=0;k<10;k++)
if(xx[i][k]=='1')
yy[k]++;
count=0;
}
else if(j>=9&&count<6)
count=0;
}
}
for(i=0;i<10;i++)
printf("%d\n",yy[i]);
}
程序运行结果是:
1
3
4
3
2
2
2
3
3
4
可是答案:
1
2
3
2
2
1
2
2
2
2
程序错在那里请教指?

其中有一个逻辑错误:
在第二个循环体内
判断xx[i][j]==1此句
如果在这一个选票中选了六个以上的人的话
就会造成count一直累加,可能等于6,7,8,9,10
然而在紧跟的语句:if(count>=6)判断count是否
大于等于6,这样一来就会出现将yy[k]多自加的情况,
你的答案中:
第二张选票选的人数为7,比6大了1
所以yy[k]多自加了1
你可以自己将逻辑该过来啊.....