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() ;
}
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) ;
}
*********************************************************************
******
☆题目 53
(整数各位数字运算题)
已知数据文件 in.dat 中存有 300 个四位数,并已调用读函数 ReadDat()把
这些数存入数组 a 中,请编制一函数
jsValue()
,其功能是:
求出千位数上的
数减百位数上的数减十位数上的数减个位数上的数大于零的个数 cnt,再把所有满
足此条件的四位数依次存入数组 b 中,然后对数组 b 的四位数按从小到大的顺序进
行排序,
最后调用写函数 writeDat()把结果输出到 out.dat 文件。
例如:9123,9-1-2-3>0,则该数满足条件存入数组 b 中,且个数
cnt=cnt+1。
9812,9-8-1-2>0,则该数不满足条件忽略。
部分源程序存在文件 prog1.c 中。
程序中已定义数组:a[300],b[300],已定义变量:cnt
请勿改动主函数 main()、读函数 ReadDat()和写函数 writeDat()的内容。
#include <stdio.h>
int a[300],b[300],cnt=0;
jsValue()
{ int i,j,qw,bw,sw,gw;
for(i=0;i<300;i++)
{ qw=a[i]/1000; bw=a[i]/100%10;
sw=a[i]%100/10; gw=a[i]%10;
if((qw-bw-sw-gw)>0) b[cnt++]=a[i];
}
for(i=0;i<cnt-1;i++)