15:已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,十位数字上的值小于等于个位数字上的值,并且此四位数是偶数,则统计出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义数组: a[200], b[200], 已定义变量: cnt
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
-------------------------
void jsVal()
{
int I,j;
int a1,a2,a3,a4,k;
for (I=0;I<MAX;I++) /*MAX初值为200,为已知*/
{
a1=a[I]/1000; /*求千位*/
a2=a[I]%1000/100; /*求百位*/
a3=a[I]%100/10; /*求十位*/
a4=a[I]%10; /*求个位*/
if ((a1<=a2)&&(a2<=a3)&&(a3<=a4)&&(a[I]%2==0)) /*如果千位小于等于百位,且百位小于等于十位,且十位小于等于个位,且该数为偶数*/
{
b[cnt]=a[I]; /*将a[I] 存入b 数组。*/
cnt++;
}
}
for(I=0;I<cnt-1;I++)
for(j=I+1;j<cnt;j++)
if (b[I]>b[j]) /*题目要求的是从大到小排序,那么这里是否该为: if (b[I]<b[j])*/
{
k=b[I];
b[I]=b[j];
b[j]=k;
}
}
100题第15题