计算机三级c语言,编程题求教~

[复制链接]
查看11 | 回复1 | 2009-1-21 15:00:10 | 显示全部楼层 |阅读模式
在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。

例:处理前 60125099901270258088

处理后 90126012702580885099
#include
#include
#include
intaa[200], bb[10];
void jsSort()
{
int i,j,k;
int cc[200];
for(i=0;icc[j+1]) {k=aa[j];aa[j]=aa[j+1];aa[j+1]=k;}
if(cc[j]==cc[j+1])

if(aa[j]<aa[j+1]) {k=aa[j];aa[j]=aa[j+1];aa[j+1]=k;}
}
for(i=0;i<10;i++)
bb=aa;
}
void ReadDat()
{
FILE*in;
inti;
in = fopen("in.dat", "r");
for (i=0; i<200; i++)
fscanf(in, "%d,", &aa);
fclose(in);
}
void WriteDat()
{
FILE*out;
inti;
out = fopen("out.dat", "w");
for (i=0; i<10; i++)
{
printf(" %d", bb);
fprintf(out, "%d\n", bb);
}
fclose(out);
}
void main()
{
ReadDat();
jsSort();
WriteDat();
}
jsSort是自己编的函数,不知道另设cc数组是不是有问题?

回复

使用道具 举报

千问 | 2009-1-21 15:00:10 | 显示全部楼层
你这种设法应该没有什么问题... 但是排序过程好像会出问题,就是你把aa中的相邻两个互换之后,应该把cc中的也互换... 另外,排序过程有点乱..if(cc[j]==cc[j+1]) 的时候,应该比较aa中对应的大小,来判断是否进行互换 还有,如果不是降序需要交换,如果已经是降序了就不要交换了...帮你改了一下.. void jsSort() { int i,j,k; int cc[200]; for(i=0;i<200;i++) cc=aa%1000; for(i=0;i<200;i++) for(j=0;j<200-i;j++) { if(cc[j]<cc[j+1]) { k=...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行