财富之一剑封喉正整数排序求平均值(包括将数拆散、求最大最小值
正整数排序求平均值(包括将数拆散、求最大最小值.txt49礁石因为信念坚定,才激起了美丽的浪花;青春因为追求崇高,才格外地绚丽多彩。50因为年轻,所以自信;因为自信,所以年轻。8题 在文件中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列。...
正整数排序求平均值(包括将数拆散、求最大最小值
正整数排序求平均值(包括将数拆散、求最大最小值.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()的内容。 #include
#include
#include
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; i<200; i++) fscanf(in,"%d,",&aa[i]); fclose(in);
}
writeDat()
{
FILE *out;
int i;
clrscr();
out=fopen("out.dat","w");
for(i=0; i<10; 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;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]1+2,则该数不满足条件计算平均值pjz2.
部分源程序已给出。
程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2 请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include
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,i<300;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);
}
--------------------------------------------------------------------------------
注:该题的关键在于会不会取出一个数的个、十、百、千位上的数。a[i]%10对10求余结 果为个位数,a[i]%100/10先对100求余得出后两位数然后再除10,由于为整数因此得出
上一个后两位数的第一位。依此类推。*/
jsvalue()
{
int i,g,s,b,q,k=0;
for(i=0;i<300;i++)
{g=a[i]%10;
s=a[i]%100/10;
b=a[i]/100%10;
q=a[i]/1000;
if((q+g)==(s+b)) {cnt++;pjz1+=a[i];}
else {k++;pjz2+=a[i];}
}
pjz1/=cnt;
pjz2/=k;
}
37题 已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入
数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再
把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进
行排序,最后调用写函数writeDat()把结果输出到OUT.DAT文件。 例如:5591是素数,则该数满足条件存入数组b中,且个数cnt=cnt+1。 9812是非素数,则该数不满足条件忽略。
部分源程序已给出。
程序中已定义数组:a[300],b[300],已定义变量:cnt 请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。 #include
int a[300],b[300],cnt=0; int isP(int m){
int i;
for(i=2;i=0&&temp
#include
#define N 200
void read_dat(int xx[N]) {
int i,j;
FILE *fp;
fp=fopen("in.dat","r");
for(i=0;i<20;i++)
{for(j=0;j<10;j++)
{fscanf(fp,"%d,",&xx[i*10+j]); printf("%d ",xx[i*10+j]); }
printf("\n");
}
fclose(fp);
}
void main()
{
int cnt1,cnt2,xx[N],max,min; float pj;
FILE *fw;
clrscr();
fw=fopen("out.dat","w"); read_dat(xx);
printf("\n\nmax=%d,cnt1=%d,min=%d,cnt2=%d,pj=%6.2f\n",
max,cnt1,min,cnt2,pj);
fprintf(fw,"%d\n%d\n%d\n%d\n%6.2f\n",max,cnt1,min,cnt2,pj);
fclose(fw);
}
/* 注:该题是要在主函数中加程序行,注意本题要求去除最大和最小数后再求出去掉后 的最大数max和最小数min及相应的个数。因此程序中出现的max0和min0,用来标识所有 数中的最大数和最小数,后而求出次大数和次小数。在求max0和min0时一定要给max和m in赋一个与max0和min0不同的数(该题用esle max=min=xx[i]),否则会出错。对于一个 浮点数要对其保留2位小数时,要将其乘100后转换成整数,最后再将其转换成浮点数然 后除100即可。*/
void main()
{
int cnt1,cnt2,xx[N],max,min;
float pj;
FILE *fw;
int i,max0,min0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
max0=min0=xx[0];
pj=0;
cnt1=cnt2=0;
for(i=1;ixx[i]) min0=xx[i];
else max=min=xx[i];
}
for(i=0;ixx[i]&&xx[i]>min0) min=xx[i]; }
for(i=0;i
#include
#define N 200
void read_dat(int xx[N]) {
int i,j;
FILE *fp;
fp=fopen("in.dat","r"); for(i=0;i<20;i++)
{for(j=0;j<10;j++)
{fscanf(fp,"%d,",&xx[i*10+j]); printf("%d ",xx[i*10+j]); }
printf("\n");
}
fclose(fp);
}
void main()
{
int cnt1,cnt2,xx[N]; float pj;
FILE *fw;
clrscr();
fw=fopen("out.dat","w"); read_dat(xx);
printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
fclose(fw);
}
/* 注:
void main()
{
int cnt1,cnt2,xx[N]; float pj;
FILE *fw;
int i,j=0;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
pj=0;
cnt1=cnt2=0;
for(i=0;i
#include
#define MAXNUM 200
int xx[MAXNUM];
int totnum=0;
int totcnt=0;
double totpjz=0.0;
int readdat(void);
void writedat(void);
void calvalue(void)
{
}
void main()
{
int i;
clrscr();
for(i=0;i0) totnum++; if((xx[i]/1000+xx[i]/100%10+xx[i]/10%10+xx[i]%10)/2==0)
{totcnt++;
totpjz+=xx[i];
}
}
totpjz/=totcnt;
}
48、请编制程序,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶
数的个数cnt2以及数级xx值为奇数的元素值的算术平均值pj(保留2位小数)。
结果cnt1,cnt2,pj输出到out.dat中。
部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
#include
#include
#define N 200
void read_dat(int xx[N]) {
int i,j;
FILE *fp;
fp=fopen("in.dat","r"); for(i=0;i<20;i++)
{for(j=0;j<10;j++)
{fscanf(fp,"%d,",&xx[i*10+j]);
printf("%d ",xx[i*10+j]); }
printf("\n");
}
fclose(fp);
}
void main()
{
int cnt1,cnt2,xx[N]; float pj;
FILE *fw;
clrscr();
fw=fopen("out.dat","w"); read_dat(xx);
printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj); fclose(fw);
}
/* 注:
void main()
{
int cnt1,cnt2,xx[N];
float pj;
FILE *fw;
int i;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
pj=0;
cnt1=cnt2=0;
for(i=0;i
本文档为【财富之一剑封喉】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。