在文件in33.dat中有200个正整数,且每个正整数均在1000至9999之间。函数readDat()的功能是读取这20

9 查阅

在文件in33.dat中有200个正整数,且每个正整数均在1000至9999之间。函数readDat()的功能是读取这200个数并存放到数组aa中。请编制函数jsSort(),该函数的功能是:要求按照每个数的后3位的大小进行升序排列,将排序后的前10个数存入数组bb中,如果数组bb中出现后3位相等的数,则对这些数按原始 4位数据进行降序排列,最后调用函数writeDat()把结果bb输出到文件out33.dat中。

例如:处理前6012 5099 9012 7025 8088

处理后9012 6012 7025 8088 5099

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

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

试题程序:

include<stdio. h>

include<string. h>

include<conio. h>

int aa[200] ,bb[10];

void readDat ();

void writeDat();

void jsSort()

{

void main ( )

{

readDat ( );

jsSort ( );

writeDat ( );

}

void readDat ()

{

FILE *in;

int i;

in=fopen ("in33 .dat" , "r" );

for(i=0;i<200;i++) fscanf (in, "%d ".&aa[i]);

fclose (in);

}

void writeDat ()

{

FILE *out;

int i;

clrscr ( );

ut =fopen ("out33 .dar" , "w" );

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

{

printf ("i=%d, %d\n", i+1, bb[i] ;

fprintf (out, "%d\n" ,bb[i] );

}

fclose (out);

}

参考答案:

void jsSort() { int ijdata; for(i=0;i199;i++) for(j=i+1;j200;j++) { if(aa[i]%1000>aa[j]%1000) /*按照每个数的后3位的大小进行升序排列*/ { data=aa[i]; aa[i]=aa[j]; aa[

计算机三级