计算机等级考试三级网络技术上机考前必看2

计算机等级考试三级网络技术上机考前必看(2)
#
试题二:已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:若一个四位数的个位数字上的值减去千位数字上的值减去百位数字上的值再减去十位数字上的值,并且此四位数是偶数,则统计出满足此条件的个数cnt, 并把这些四位数按从小到大的顺序存入数组b中。最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 #
注意: 部分源程序存在文件PROG1.C文件中。 #
程序中已定义数组: a[200], b[200], 已定义变量: cnt
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 #
-------------------------
#
PROG1.C #
#include #
#define MAX 200 #
int a[MAX], b[MAX], cnt = 0;
void jsVal() #
{
}
void readDat()
{ int i ; #
FILE *fp ; #
fp = fopen("in.dat", "r") ;
for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ; #
fclose(fp) ;
#
}
void main()
#
{ int i ;
readDat() ; #
jsVal() ; #
printf("满足条件的数=%d\n", cnt) ; #
for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ; #
printf("\n") ;
#
writeDat() ; #
system("pause");
#
} #
writeDat() #
{ FILE *fp ; #
int i ; #
fp = fopen("out.dat", "w") ;
#
fprintf(fp, "%d\n", cnt) ;
#
for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\n", b[i]) ; #
fclose(fp) ; #
}
#
void jsVal() /*标准答案*/
{int I,thou,hun,ten,data,j; #
for(I=0;I<300;I++) /*答案有误,应为for(I=0;I #
{thou=a[I]/1000; hun=a[I]%1000/100; #
ten=a[I]%100/10; data=a[I]%10;
#
if (data-thou-hun-ten>=0&&a[I]%2!=1) {b[cnt]=a[I];cnt++;} #
} #
for(I=0;I
#
for(j=I+1;j
if(b[I]>b[j]) #
{data=b[I];b[I]=b[j];b[j]=data;}
}
#