100题第5题
5:在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。例:处理前 6012 5099 9012 7025 8088
处理后 9012 6012 7025 8088 5099
注意:部分源程序已给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
--------------------
void jsSort() /*标准答案*/
{
int I,j,data;
for(I=0;I<199;I++) /*200个数循环*/
for(j=I+1;j<200;j++) /*200个数循环,二重循环*/
{
if (aa[I]%1000>aa[j]%1000) /*如果aa[I]的去掉千位数大于aa[j]的去掉千位上的数*/
{
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++) /*满足条件的10个数*/
bb[I]=aa[I]; /*将aa中的数存入bb中*/
}
嗨,终于看懂一道题。!!!!