已知数据文件IN69.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函

8 查阅

已知数据文件IN69.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数JsVal(),其功能是:把一个4位数的千位数上的值减百位数上的值再减十位数上的值最后减个位数上的值,如果得出的值大于等于零且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些4位数存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用函数writeDat()把结果cnt及数组b中的符合条件的4位数输出到out69.dat文件中。

注意:部分源程序已给出。

程序中己定义数组:a[200],b[200],已定义变量:cnt。

请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。

试题程序:

include<stdio.h>

define MAX 200

int a [MAX], b [MAX], cnt=0;

void jsVal()

{

}

void readDat()

{

int i;

FILE *fp;

fp=fopen ("IN69. 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 ( "out69.dat","w")

fprintf (fp, "%din", cnt);

for (i=0; i<cnt; i++)

fprintf (fp, "%d\n" ,b [i]);

fclose(fp);

}

参考答案:

void jsVal() { int ithouhuntendataj; for(i=0;iMAX;i++) { thou=a[i]/1000; /*求四位数的千位数字*/ hun=a[i]%1000/100; /*求四位数的百位数字*/ ten=a[i]%100/10; /*求四位数的十位数字*/ data=a[i]%10;

计算机三级