您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 300数位分解按数位筛选《计算机等级考试上机体分类2》
300数位分解按数位筛选《计算机等级考试上机体分类2》.txt丶︶ ̄喜欢的歌,静静的听,喜欢的人,远远的看我笑了当初你不挺傲的吗现在您这是又玩哪出呢?8请编写函数CountValue(),它的功能是:求n以内(不包括n),同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。主函数最后调用函数progReadWrite()从IN.dat文件中读取10组数据,分别得出结果,且把结果输出到文件OUT.dat中。例如,若n为1000时,函数值应为:s=153.909064。注意:部分程序已经给出。请勿改动主函数main()和输入输出数据函数progReadWrite()的内容。#includeconio.h#includemath.h#includestdio.hdoubleCountValue(intn){}voidprogReadWrite(){FILE*fp,*wf;inti,n;floats;fp=fopen(in.dat,r);if(fp==NULL){printf(数据文件in.dat不存在!);return;}wf=fopen(out.dat,w);for(i=0;i10;i++){fscanf(fp,%d,,&n);s=(float)countValue(n);fprintf(wf,%f\n,s);}fclose(fp);fclose(wf);}main(){printf(1000以内符合条件的自然数之和的平方根=%f\n,CountValue(1000));progReadWrite();}doublecountValue(intn){doublexy=0.0;inti;for(i=1;in;i++)if(i%3==0&&i%7==0)xy+=i;xy=sqrt((double)xy);returnxy;}9已知在文件IN.dat中存有N个(N200)实数,函数RData()读取这N个实数并存入数组original中。请编写函数CalValue(),要求实现的功能有:①求出这N个实数的平均值(aver);②分别求出这N个实数的整数部分之和(sumint)以及小数部分之和(sumdec),最后调用函数WData()把所求的结果输出到文件OUT.dat中。注意:部分源程序已给出。请勿改动主函数main()、读数据函数RData()和输出数据函数WData()的内容。#includestdio.h#includeconio.h#defineMAXNUM200floatoriginal[MAXNUM];doubleaver=0.0;longsumint=0;doublesumdec=0.0;intRData(void);voidWData(void);voidCalValue(void){}voidmain(){inti;for(i=0;iMAXNUM;i++)original[i]=0;if(RData()){printf(数据文件IN.dat不能打开!\007\n);return;}CalValue();printf(平均值=%.2lf\n,aver);printf(整数部分之和=%ld\n,sumint);printf(小数部分之和=%.2lf\n,sumdec);WData();}intRData(void){FILE*fp;inti=0;if((fp=fopen(IN.dat,r))==NULL)return1;while(!feof(fp))fscanf(fp,%f,,&original[i++]);fclose(fp);return0;}voidWData(void){FILE*fp;fp=fopen(OUT.dat,w);fprintf(fp,%.2lf\n%ld\n%.2lf\n,aver,sumint,sumdec);fclose(fp);}voidCalValue(void){inti;doublex,sum=0;for(i=0;iMAXNUM;i++){sumint=sumint+(int)original[i];x=original[i]-(int)original[i];sumdec=sumdec+x;sum=sum+original[i];}aver=sum/MAXNUM;}10已知数据文件IN.dat中存有300个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数primeNum(),其功能是:求出所有这些四位数中素数的个数count,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。最后调用写函数Wdata(),把结果输出到OUT.dat文件中。例如,5591是素数,则该数满足条件存入数组b中,且个数count=count+1。9812是非素数,则该数不满足条件,不存入数组b中,count值也不加1。注意:部分源程序已经给出。程序中已定义数组a[300]、b[300],已定义变量count。请勿改动主函数main()、读函数Rdata()和写函数Wdata()的内容。#includestdio.hinta[300],b[300],count=0;intisP(intm){inti;for(i=2;im;i++)if(m%i==0)return0;return1;}voidprimeNum(){}voidRdata(){FILE*fp;inti;fp=fopen(in.dat,r);for(i=0;i300;i++)fscanf(fp,%d,,&a[i]);fclose(fp);}voidWdata(){FILE*fp;inti;fp=fopen(out.dat,w);fprintf(fp,%d\n,count);for(i=0;icount;i++)fprintf(fp,%d\n,b[i]);fclose(fp);}main(){inti;Rdata();primeNum();Wdata();printf(count=%d\n,count);for(i=0;icount;i++)printf(b[%d]=%d\n,i,b[i]);}voidprimeNum(){intj,i,value;for(i=0;i300;i++)if(isP(a[i])){b[count]=a[i];count++;}for(i=0;icount-1;i++)for(j=i+1;jcount;j++)if(b[i]b[j]){value=b[i];b[i]=b[j];b[j]=value;}}14请编写函数countValue(),它的功能是:求出1~1000之内能被7或11整除但不能同时被7或11整除的所有整数,将它们放在数组a中,并通过n返回这些数的个数。主函数最后调用函数Wdata()把计算结果输出到OUT.dat中。注意:部分源程序已经给出。请勿改动主函数main()和输出数据函数Wdata()的内容。#includeconio.h#includestdio.hvoidcountValue(int*a,int*n){}voidWdata(){intaa[1000],n,k;FILE*fp;fp=fopen(out.dat,w);countValue(aa,&n);for(k=0;kn;k++)if((k+1)%10==0)fprintf(fp,%5d\n,aa[k]);elsefprintf(fp,%5d,aa[k]);fprintf(fp,\n);fclose(fp);}main(){intaa[1000],n,k;countValue(aa,&n);for(k=0;kn;k++)if((k+1)%10==0)printf(%5d\n,aa[k]);elseprintf(%5d,aa[k]);Wdata();}voidcountValue(int*a,int*n){inti;*n=0;for(i=1;i=1000;i++)if(i%7==0&&i%11){*a=i;*n=*n+1;a++;}elseif(i%7&&i%11==0){*a=i;*n=*n+1;a++;}}17请补充程序,使得程序能实现以下功能:从文件IN.dat中读取200个整数至数组number中,求出奇数的个数cnt1和偶数的个数cnt2以及数组number下标为偶数的元素值的算术平均值ave(保留2位小数)。把结果cnt1、cnt2、ave输出到OUT.dat中。注意:部分程序、读数据函数read_dat(intnumber[200])及输出格式已给出。#includeconio.h#includestdio.h#defineN200voidread_dat(intnumber[N]){inti,j;FILE*fp;fp=fopen(IN.dat,r);for(i=0;i20;i++){for(j=0;j10;j++){fscanf(fp,%d,,&number[i*10+j]);printf(%d,number[i*10+j]);}printf(\n);}fclose(fp);}voidmain(){inti;intcnt1,cnt2,number[N];longj=0;floatave;FILE*fw;fw=fopen(OUT.dat,w);read_dat(number);/**************************************//**************************************/printf(\n\ncnt1=%d,cnt2=%d,ave=%6.2f\n,cnt1,cnt2,ave);fprintf(fw,%d\n%d\n%6.2f\n,cnt1,cnt2,ave);fclose(fw);}for(i=0,j=0,cnt1=0,cnt2=0;iN;i++){if(number[i]%2)cnt1++;elsecnt2++;if(i%2==0)j+=number[i];}ave=(float)j/(N/2);19已知数据文件IN.dat中存有200个四位数,并已调用读函数rdata()把这些数存入数组a中,请编写函数evenvalue(),其功能是:如果四位数每位上的数字均是0、2、4、6或8,则统计出满足此条件的四位数的个数count,并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数wdata(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。注意:部分程序已经给出。程序中已定义数组a[200],b[200];已定义变量count。请勿改动数据文件IN.dat中的任何数据及主函数main()、读函数rdata()和写函数wdata()中的内容。#includestdio.h#defineMAX200inta[MAX],b[MAX],count=0;voidevenvalue(){}voidrdata(){inti;FILE*fp;fp=fopen(IN.dat,r);for(i=0;iMAX;i++)fscanf(fp,%d,,&a[i]);fclose(fp);}voidwdata(){FILE*fp;inti;fp=fopen(OUT.dat,w);fprintf(fp,%d\n,count);for(i=0;icount;i++)fprintf(fp,%d\n,b[i]);fclose(fp);}voidmain(){inti;rdata();evenvalue();printf(满足条件的数=%d\n,count);for(i=0;icount;i++)printf(%d,b[i]);printf(\n);wdata();}voidevenvalue(){intbb[4];inti,j,k,flag;for(i=0;i200;i++){bb[0]
本文标题:300数位分解按数位筛选《计算机等级考试上机体分类2》
链接地址:https://www.777doc.com/doc-3555280 .html