- 1
- 0
- 约8.18千字
- 约 12页
- 2019-05-01 发布于浙江
- 举报
正整数排序求平均值(包括将数拆散、求最大最小值.txt49礁石因为信念坚定,才激起了美丽的浪花;青春因为追求崇高,才格外地绚丽多彩。50因为年轻,所以自信;因为自信,所以年轻。8题 在文件中有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()的内容。
#includestdio.h
#includestring.h
#includeconio.h
int aa[200],bb[10];
void jsSort()
{
}
void main()
{
readDat();
jsSort();
writeDat();
}
readDat()
{
FILE *in;
int i;
in=fopen(in.dat,r);
for(i=0; i200; i++) fscanf(in,%d,,aa[i]);
fclose(in);
}
writeDat()
{
FILE *out;
int i;
clrscr();
out=fopen(out.dat,w);
for(i=0; i10; i++){
printf(i=%d,%d\n,i+1,bb[i]);
fprintf(out,%d\n,bb[i]);
}
fclose(out);
}
--------------------------------------------------------------------------------
注:每个元素对1000求余得到后三位的数,然后用冒泡法进行排序。
void jsSort()
{
int i,j,data;
for(i=0;i199;i++)
for(j=i+1;j200;j++)
{ if(aa[i]%1000aa[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;i10;i++)
bb[i]=aa[i];
}
31题 已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数把结果输出到OUT.DAT文件。
例如:6712,6+2=7+1,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,8+91+2,则该数不满足条件计算平均值pjz2.
部分源程序已给出。
程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2
请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include stdio.h
int a[300],cnt=0;
double pjz1=0.0,pjz2=0.0;
jsValue()
{
}
main()
{
int i;
readDat();
jsValue();
writeDat();
printf(cnt=%d\n满足条件的平均值pzj1=%7.21f\n不满足条件的平均值pjz2=%7.21f\n ,cnt,pjz1,pjz2);
}
readDat()
{
FILE *fp;
int i;
fp=fopen( in.dat , r );
for(i=0,i300;i++)fscanf(fp,%d ,a[i]);
fclose(fp);
}
writeDat()
{
FILE *fp;
int i;
fp=fopen( out.dat , w );
fprintf(fp, %d\n%7.21f\n%7.21f\n ,cnt,pjz1,pjz2);
fclose(fp);
}
原创力文档

文档评论(0)