紧急求助:这道题哪里出错了(Ctrl+F7时没错误,Ctrl+F5时出错)
在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。例:处理前 6012 5099 9012 7025 8088
处理后 9012 6012 7025 8088 5099
部分源程序存在文件prog1.c中。
(PROG.OBJ - 0 error(s), 0 warning(s),PROG.exe - 1 error(s), 0 warning(s))
#include <stdio.h>
#include <string.h>
#include <conio.h>
int aa[200], bb[10] ;
void jsSort()
{
int i,j,data;
for(i=0;i<199;i++)
for(j=i+1;j<200;j++)
if(aa[i]%1000<aa[j]%1000)
{data=aa[i];
aa[i]=aa[j];
aa[j]=data;}
else if(aa[i]%1000==aa[j]%1000)
if(aa[i]>aa[j])
{data=aa[i];
aa[i]=aa[j];
aa[j]=data;}
for(i=0;i<10;i++)
bb[i]=aa[i];
}
main()
{
readDat() ;
jsSort() ;
writeDat() ;
}
readDat()
{
FILE *in ;
int i ;
in = fopen("IN3.DAT", "r") ;
for(i = 0 ; i < 200 ; i++) fscanf(in, "%d,", &aa[i]);
fclose(in) ;
}
writeDat()
{
FILE *out ;
int i ;
out = fopen("OUT3.DAT", "w") ;
clrscr() ;
for (i = 0 ; i < 10 ; i++)
{
printf("i=%d,%d\n", i + 1, bb[i]) ;
fprintf(out, "%d\n", bb[i]) ;
}
fclose(out) ;
}
[[it] 本帖最后由 cbullet 于 2008-3-16 13:04 编辑 [/it]]