已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值减去百位数字上的值再减去十位数字上的值最后减去个位数字上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数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[i]/1000; hun=a[i]%1000/100;
ten=a[i]%100/10; data=a[i]%10;
if(thou-hun-ten-data>=0&&a[i]%2) b[cnt++]=a[i];
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b[i]>b[j]) {thou=b[i]; b[i]=b[j];b[j]=thou;}
}
**********************************************************************
题目16(整数统计运算题)
已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数右移1位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。
void CalValue(void)
{int i,data;
for(i=0;i<MAXNUM;i++)
if(xx[i]>0)
{ totNum++;
data=xx[i]>>1;
if(data%2){totCnt++;totPjz+=xx[i];}
}
if(totCnt==0) totPjz=0;
else totPjz/=totCnt;
}
*********************************************************************