求高手做道C语言题题目如下↓

来源:百度知道 编辑:UC知道 时间:2024/06/15 15:55:43
编写程序
编写main函数,从键盘输入任意5个4位正整数存入数组aa中,调用函数sort(),函数sort()的功能是:
按每个数后三位的大小进行升序排列,并将结果依次存入数组bb中,如果后三位的数值相等,则按4位正整数的大小进行降序排列.
例如:输入:6012 5099 9012 7025 8088 则输出的结果为:9012 6012 7025 8088 5099
最后,在main()函数中把排序后的结果输出到文件test3-2.dat中
注意:程序中不得合用全局变量.

初学c语言,就想到这么个代码,有点臃肿,见谅、
#include<stdio.h>
#define N1 (a[n]-(a[n]/1000)*1000>a[m]-(a[m]/1000)*1000)
#define N2 (a[n]-(a[n]/1000)*1000==a[m]-(a[m]/1000)*1000)
void sort(int a[])
{ int n=0,m=0,h=0;
for(n=0;n<=4;n++)
for(m=n+1;m<=4;m++)
{ if(N1) {h=a[n];a[n]=a[m];a[m]=h;}
else if(N2)
if(a[n]<a[m]){h=a[n];a[n]=a[m];a[m]=h;}
}

}
main()
{ int c[5],n;FILE *fp;
printf("please enter your number: ");
scanf("%d%d%d%d%d",&c[0],&c[1],&c[2],&c[3],&c[4]);
sort(c);
fp=fopen("test3-2.dat","w");
for(n=0;n<=4;n++)
fprintf(fp,"%d\n",c[n]);
fclose(fp);
fp=fopen("test3-2.dat","r");
for(n=0;n<=4;n++)
fscanf(fp,"%d",&c[n]);
fclose(fp);
for(n=0;n<=4;n++) printf("%d ",c[n]);
getc