请大家帮我看下这段c语言代码

来源:百度知道 编辑:UC知道 时间:2024/05/26 05:27:15
题目39:对10个候选人进行选举,现有一个100条记录的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推 :内容均为字符0和1,1表示此人被选中,0表示此人未被选中,全选或不选均为无效的选票.。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到文件OUT.DAT中。
注意:部分源程序已给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。

int i,j=0,k=0;
char *str;
for(i=0;i<10;i++)
yy[i]=0;
for(i=0;i<100;i++)
{
str=xx[i];j=0;
while(*str)
if(*str=='1'){j++;str++;}
else str++;
if(j!=0&&j!=10)
{
str=xx[i];k=0;
while(*str)
if(*str++=='1') yy[k++]+=1;
else k++; //这里的k++是否有错??
}
}

没错,无论是否为1,str都加1,k自然也要在两种情况下都加1

只是,不懂这段代码中计算j那部分有何意义?建议改成这样的
------------------------------------------------------------------
    int i,k;
    char *str;
    for(i=0;i<10;i++) yy[i]=0;
    for(i=0;i<100;i++){
        for (str=xx[i], k=0;*str;str++,k++)
            if (*str=='1') yy[k]+=1;
    }
------------------------------------------------------------------

加油!