您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页数字类问题

数字类问题

来源:宝玛科技网
四、数字类问题

(一)数学计算类(给出数学关系式)

题目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=M,这里Sn=A1+A2+...+An, 并依次把n值存入数组单元b[0],b[1]和b[2]中,请编制jsvalue()函数来实现此功能, 最后调用函数writeDat()把数组b[]中的值输出到out.dat文件中。

{ 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题目24:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。 { int i, a, b, c, cnt = 0; for (i=10; i*i<1000; i++) { a = i*i/100; b = i*i/10%10; c = i*i%10; if (a==b || b==c || c==a) bb[cnt++] = i*i; } return cnt; }

题目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= half) return 1; else return 0; }

题目26:已知在文件in.dat中存有若干个(个数<200)四位数字的正整数,函数readdat()读取这若干个正整数并存入数组xx中。请编制函数calvalue(),其功能要求:1、求出这文件有多少个正整数totnum;2、求这些数右移1位后,产生的新数是偶数的数的个数totcnt,以及满足此条件的这些数(右移前的值)的算术平均值totpjz,最后调用函数writedat()把所求的结果输出到文件out.dat中。 { int i, data; for (i=0; i 0) totNum++; data = xx[i]>>1; if (data%2 == 0) { totCnt++; totPjz += xx[i]; } } totPjz /= totCnt; }

题目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= half) {

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= half) {

yy[cnt] = i; cnt++; } } for (i=0, j=1; i题目75:在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的之和,其中满足条件的个数作为函数jsSort() 的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。 { int i, j, count = 0; data val; for (i=0; i<200; i++) if (aa[i].x1 > aa[i].x2+aa[i].x3) { bb[count] = aa[i]; count++; } for (i=0; i bb[j].x1+bb[j].x3) { val = bb[i]; bb[i] = bb[j]; bb[j] = val; } return count; }

题目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 max) max = xx[i]; if (xx[i]%3==0 || xx[i]%7==0) { j += xx[i]; k++; } } for (i=0, cnt=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题目33:请补充完整ReadDat()函数,实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中奇数的个数odd,偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及所有偶数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。计算方差的公式如下:totfc=1/N∑(xx[i]-ave1)2 设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。

原始数据文件存放的格式是:每行存放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题目83:函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的个数even,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。计算方差的公式如下:totfc=1/N∑(xx[i]-ave1)2 其中:N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。

原始数据文件存放的格式是:每行存放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题目91:请编制程序,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1

和偶数的个数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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务