(一)数学计算类(给出数学关系式)
题目20:编写函数jsvalue,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2)
最后调用函数writeDat()读取50个数据t,分别得出结果且把结果输出到文件out.dat中。 例如:当t=1000时,函数值为:1597。 { int f1 = 0, f2 = 1, fn; fn = f1+f2; while (fn <= t) { f1 = f2; f2 = fn; fn = f1+f2; } return fn; }
题目21:下列程序的功能是:利用发下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。xn+1=cos(xn) 迭代步骤如下:
(1)取X1初值为0.0;
(2)X0=X1,把X1的值赋给X0; (3)X1=COS(X0),求出一个新的X1;
(4)若X0-X1绝对值小0.000001,执行步骤(5),否则执行步骤(2); (5)所求X1就是方程cos(X)-X=0的一个实根,作为函数值返回。
请编写函数countvalue()实现程序的要求,最后调用函数WRITEDAT()把结果输出到文件OUT17.DAT中。 { float X0, X1 = 0.0; while (1) { X0 = X1; X1 = (float)cos(X0); if (fabs(X0-X1) < 1e-6) break; } return X1; }
题目35:某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1.
下列程序的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn { int A1 = 1, A2 = 1, n = 1, An; int sum0, sum; sum0 = A1+A2; while(1) { An = A1+A2*2; sum = sum0+An; A1 = A2; A2 = An; n++; if (sum0<100 && sum>=100) b[0] = n; if (sum0<1000 && sum>=1000) b[1] = n; if (sum0<10000 && sum>=10000) { b[2] = n; break; } sum0 = sum; } } 题目57:设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请考生编制函数Josegh()实现此功能并调用函数WriteDat()把结果p输出到文件OUT.DAT中。 设n=100,s=1,m=10. (1)将1到n个人的序号存入一维数组p中; (2)若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置; (3)重复第(2)步直至圈中只剩下p[1]为止。 部分源程序已给出。 请勿改动主函数main()和输出数据函数writeDat()的内容。 { int i, j, s1, w; s1 = s; for (i=1; i<=n; i++) p[i-1] = i; for (i=n; i>=2; i--) { s1 = (s1+m-1)%i; if (s1 == 0) s1 = i; w = p[s1-1]; for (j=s1; j<=i-1; j++) p[j-1] = p[j]; p[i-1] = w; } } (二)一定范围内查找(满足条件的数的个数或筛选出一定范围内满足条件的数) 题目1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(int m,int k,int xx[])实现函数的要求 ,最后调用函数readwriteDAT()把结果输出到文件out.dat中。 例如:若输入17,5,则应输出:19,23,29,31,37。 { int data = m+1; int half, n = 0, i; while(1) { half = data/2; for (i=2; i<=half; i++) if (data%i == 0) break; if (i > half) { xx[n] = data; n++; } if (n >= k) break; data++; } } 题目22:请编写函数countvalue(),它的功能是:求n以内(不包括n)同时能被3和7整数的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。 例如若n为1000时,函数值应为:s=153.9090。 { double xy = 0.0; int i; for (i=1; i 题目25:下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int svalue(long m)实现此功能, 如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out.dat中。 { int i, strl, half; char xy[20]; ltoa(n, xy, 10); strl = strlen(xy); half = strl/2; for (i=0; i 题目26:已知在文件in.dat中存有若干个(个数<200)四位数字的正整数,函数readdat()读取这若干个正整数并存入数组xx中。请编制函数calvalue(),其功能要求:1、求出这文件有多少个正整数totnum;2、求这些数右移1位后,产生的新数是偶数的数的个数totcnt,以及满足此条件的这些数(右移前的值)的算术平均值totpjz,最后调用函数writedat()把所求的结果输出到文件out.dat中。 { int i, data; for (i=0; i 题目34:下列程序的功能是:选取出100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数CNT以及这些素数值的和SUM。请编写函数COUNTvalue()实现程序要求,最后调用函数WRITEDAT()把结果CNT和SUM输出到文件OUT.DAT中. { int i, j, half, hun, ten, data; for (i=101; i<1000; i++) { hun = i/100; ten = i%100/10; data = i%10; if (hun == (ten+data)%10) { half = i/2; for (j=2; j cnt++; sum += i; } } } } 题目41:下列程序的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt,以及满足此条件所有的SIX与NINE的和SUM。请编写函数countvalue()实现程序的要求,最后调用函数writedat()把结果cnt和sum,输出到文件out15.dat中.其中S,I,X,N,E各代表一个十进制数字。 { int S, I, X, N, E; int SIX, NINE; for (S=1; S<10; S++) for (I=0; I<10; I++) for (X=0; X<10; X++) for (N=1; N<10; N++) for (E=0; E<10; E++) { SIX = S*100+I*10+X; NINE = N*1000+I*100+N*10+E; if (SIX*3 == NINE*2) { cnt++; sum += SIX+NINE; } } } 题目:下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数cnt以及这些I之和sum。请编写函数countvalue()实现程序要求,最后调用函数writeDat()把结果cnt和sum输出到文件out.dat中。 { int i; for(i=2;i<=90;i++) if(isPrime(i) && isPrime(i+4) && isPrime(i+10)) { cnt++; sum+=i; } } 题目66:下列程序的功能是:计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之各,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sum。请编写函数countvalue()实现程序的要求,最后调用函数writedat()把结果cnt和sum,输出到文件out11.dat中。 { int i, j, half, yy[100]; for (i=800; i>=500; i--) { half = i/2; for (j=2; j yy[cnt] = i; cnt++; } } for (i=0, j=1; i 题目79:请编写函数void countvalue(int *a, int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数放在数组a中,并通过n返回这些数的个数。 { int i; *n = 0; for (i=1; i<=1000; i++) if (i%7==0 && i%11) { *a = i; *n = *n+1; a++; } else if (i%7 && i%11==0) { *a = i; *n = *n+1; a++; } } 题目92:请编制程序,从文件in.dat中读取200个整数至数组xx中,求出最大数max及最大数的个数cnt和数组xx中值能被3整除或能被7整除的算求增均值pj(保留2位小数)。结果cnt1,cnt2,pj输出到out.dat中。 max = xx[0]; for (i=1, k=0; i (三)统计及平均问题(统计奇偶数的个数或求出满足条件的数的平均值) 题目23:已知在文件in.dat中存有N个(N<200)实数,函数readdat()读取这N个实数并存入数组xx中。请编制函数calvalue(),其功能要求:1、求出这N个实数的平均值aver;2、分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数writedat()把所求的结果输出到文件out.dat中。 void CalValue(void) { int i; double x,sum=0; for (i=0;i 原始数据文件存放的格式是:每行存放10个数(每个数均大于0且小于等于2000),并用逗号隔开。 int ReadDat(void) { FILE *fp; int i, j; if ((fp = fopen(\"IN.DAT\ return 1; /**************************************/ for (i=0; i<100; i++) { for (j=0; j<10; j++) fscanf(fp, \"%d,\ fscanf(fp, \"\\n\"); if (feof(fp)) break; } /**************************************/ fclose(fp); return 0; } void Compute(void) { int i, yy[MAX]; for (i=0; i<1000; i++) if (xx[i]%2) { odd++; ave1 += xx[i]; } else { even++; ave2 += xx[i]; yy[even-1] = xx[i]; } ave1 /= odd; ave2 /= even; for (i=0; i 原始数据文件存放的格式是:每行存放10个数(每个数均大于0且小于等于2000),并用逗号隔开。 void Compute(void) { int i, yy[MAX]; for (i=0; i<1000; i++) if (xx[i]%2) { odd++; ave1 += xx[i]; yy[odd-1] = xx[i]; } else { even++; ave2 += xx[i]; } ave1 /= odd; ave2 /= even; for (i=0; i 和偶数的个数cnt2以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数)。结果cnt1,cnt2,pj输出到out.dat中。 注意:部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。 -------------------- for (i=0, j=0, cnt1=0, cnt2=0; i if (xx[i]%2) cnt1++; else cnt2++; if (i%2 == 0) j += xx[i]; } pj = (float)j/(N/2); 题目93:函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;再编制函数COMPUTE()分别计算出XX中奇数的个数odd,偶数的个数even,以及所有数的平均值aver和方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。计算方差的公式如下:totfc=1/N∑(xx[i]-ave1)2 原始数据文件存放的格式是:每行存放10个数(每个数均大于0且小于等于2000),并用逗号隔开。 { int i; for (i=0; i<1000; i++) { if (xx[i]%2) odd++; else even++; aver = aver+xx[i]; } aver /= MAX; for (i=0; i<1000; i++) totfc+= (xx[i]-aver)*(xx[i]-aver)/MAX; } 题目94:请编制程序,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx中下标为奇数的元素的算术平均值pj(保留2位小数)。结果cnt1,cnt2,pj输出到out.dat中i = j = k = cnt1 = cnt2 = 0; pj = 0.0; for (i=0; i
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务