三级上机题的一个疑问
题目:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:部分源程序存在文件prog1.c中。
程序中已定义数组:a[200],b[200],已定义变量:cnt
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
答案:
void jsVal()
{int i,j,thou,hun,ten,data;
for(i=0;i<200;i++)
{thou=a/1000; hun=a%1000/100;
ten=a%100/10; data=a%10;
if(thou&&thou%2&&hun%2&&ten%2&&data%2) b[cnt++]=a;
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b<b[j]) {thou=b; b=b[j];b[j]=thou;}
}
请教大家这一句怎么来理解:if(thou&&thou%2&&hun%2&&ten%2&&data%2) 它的作用是找出奇数。
改成这样:if(thou%2!=0&&hum%2!=0&&ten%2!=0data%2!=0)对不对?为什么不对?
谢谢!