计算机二级上机试题.docx
- 文档编号:15047151
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:49
- 大小:32.25KB
计算机二级上机试题.docx
《计算机二级上机试题.docx》由会员分享,可在线阅读,更多相关《计算机二级上机试题.docx(49页珍藏版)》请在冰点文库上搜索。
计算机二级上机试题
C语言上机试题解答
1.数列:
┌e
(1)=e
(2)=1, └e(n)=(n-1)*e(n-1)+(n-2)*e(n-2)(n>2)称为e数列,每一个e(n)(n=1,2,…)称为e数。
求[1,30000]之内:
(1)最大的e数。
(2)e数的数目。
main(){longintf1=1,f2=1,f3;intn=3;while(f2<=30000){f3=(n-1)*f2+(n-2)*f1;f1=f2;f2=f3;n++;}printf("emax=%ldnumber=%d",f1,n-2);}
2.计算[1,1000]之间能被5和7整除的数。
求出(按升序排列):
(1)第20个这样的数。
(2)前20个这样的数之和。
main()
{ints=0,i,n=0;
for(i=1;i<=1000&&n<20;i++)
if(i%35==0)
{s+=i;n++;}
printf("%d%d\n",i-1,s);}
3.已知:
┌F(0)=F
(1)=F
(2)=1
└F(N)=F(N-1)-2F(N-2)+F(N-3)(N>2)
求:
(1)F(50)
(2)F(0)+F
(1)+…+F(50)
main()
{intn=3;longf0=1,f1=1,f2=1,f3,s=3;
while(n<=50)
{f3=f2-2*f1+f0;
f0=f1;
f1=f2;
f2=f3;
s+=f2;
n++;}
printf("%ld%ld",f2,s);}
4.已知:
┌F(0)=F
(2)=1
├F
(1)=0
└F(N)=F(N-1)-2F(N-2)+F(N-3)(N>2)
求F(0)到F(200)中:
(1)正数个数。
(2)零的个数。
main()
{longf0=1,f1=0,f2=1,f3;
inti=3,n=2,m=1;
while(i<=200)
{f3=f2-2*f1+f0;
f0=f1;
f1=f2;
f2=f3;
if(f3>0)
n++;
if(f3==0)
m++;
i++;}
printf("%d%d\n",n,m);}
5.已知:
┌F(0)=F
(1)=1
├F
(2)=0
└F(N)=F(N-1)-2F(N-2)+F(N-3)(N>2)
(1)最大值
(2)最小值
main()
{longf0=1,f1=1,f2=0,f3,max,min;
intn=3;
while(n<=50)
{f3=f2-2*f1+f0;
f0=f1;
f1=f2;
f2=f3;
if(f2>f1)
max=f2;
if(f2 min=f2; n++;} printf("max=%ldmin=%ld",max,min);} 6.整数36的质因子共有4个,它们是2,2,3,3,求整数12903的最大质因子。 #include"math.h" main() {longn,x,max; printf("input: \n"); scanf("%ld",&n); for(x=2;x<=n;x++) while(n%x==0) {max=x; n/=x;}1 printf("max=%ld\n",max);} 7.计算下列级数之值: 501 ∑─── n=12n-1 要求精确到小数点后第6位。 main() {intn=1;floata,s=0; while(n<=50) {a=1.0/(2*n-1); s+=a;n++;} printf("%.6f",s);} 8.求[100,999]之间能被21整除的数的个数。 main() {intn,m=0; for(n=100;n<=999;n++) if(n%21==0)m++; printf("num=%d",m);} 9.求出[2,478]以内的: (1)最大、最小的素数。 (2)素数数目。 (3)所有素数之和。 #include"math.h" main() {intn,i,k,m=1,max,s=2,flag=0; for(n=3;n<478;n+=2) {k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0)break; if(i>=k+1) {if(flag=0){min=n;flag=1;} max=n; m++; s+=n;}} printf("max=%dmin=%dnum=%dsum=%d",max,min,m,s);} 10.已知: n Y=∑(ai-bi)^2 i=1 其中: ┌i(i为奇数) ai=│ └i/2(i为偶数) ┌i^2(i为奇数) bi=│ └i^3(i为偶数) (1)若N=10,求Y。 (2)若N=15,求Y。 main() {inti; floaty,y1=0,y2=0,a; intn; scanf("%d",&n); for(i=1;i<=n;i+=2) {a=i-i*i; y1+=a*a;} for(i=2;i<=n;i+=2) {a=i/2.0-i*i*i; y2+=a*a;} y=y1+y2; printf("Y=%f",y);} 11.求716539的: (1)质因子个数。 (2)最小质因子。 (3)最大质因子。 #include"math.h" main() {longn,x; intm=0,flag=0,min,max; printf("input: \n"); scanf("%ld",&n); for(x=2;x<=n;x++) while(n%x==0) {m+=1; if(flag==0){min=x;flag=1;} max=x; n/=x;} printf("number=%dmax=%dmin=%d\n",m,max,min);} 12.求满足: ┌A*B=716699 └A+B最小 两个条件的: (1)A (2)B #include"stdio.h" #include"math.h" main() {longinta,b,c,i,s,s1; scanf("%ld",&c); s=c+1; a=1; b=c; for(i=2;i<=sqrt(c);i++) {if(c%i! =0)continue; s1=i+c/i; if(s<=s1) continue; s=s1; a=i; b=c/i;} printf("a=%ld,b=%ld\n",a,b);} 习题十一 13.求[1000,2000]之间: (1)最小的素数。 (2)最大的素数。 #include"math.h"main(){intm,k,i,flag=0,min,max;for(m=1001;m<=2000;m+=2){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1){if(flag==0){min=m;flag=1;}max=m;}}printf("最小的素数为: %d最大的素数为: %d",min,max); }_ 14.若两素数之差为2,则称该两素数为双胞胎数。 求出[2,300]之内: (1)最大的一对双胞胎数。 (2)有多少对双胞胎数。 #include"math.h" main() {inti,j,n=0,k,z=2,max; for(i=3;i<300;i+=2) {k=sqrt(i); for(j=2;j<=k;j++) if(i%j==0)break; if(j>=k+1) {if(i-z==2){n++;max=i;} z=i;} } printf("最大的一对双胞胎数为: %d,%d有%d对双胞胎数\n",max-2,max,n); }_ 15.若两个自然连续数乘积减1后是素数,则称此两个自然连续数为友数对,该素数称为友素数。 例如,由于2*3-1=5 因此,2与3是友数对,5是友素数。 求[2,99]之间: (1) 友数对的数目。 (2)所有友素数之和 #include"math.h"main(){intm,k,n,i,j=0;longs=0;for(n=2;n<=99;n++){m=n*(n+1)-1; k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1){s+=m;j++;} } printf("友数对的数目为: %d,所有友素数之和为: %ld",j,s); }_ 16.回文数是指正读和反读都一样的正整数。 例如,5,121等都是回文数。 求出[1,500]以内的: (1)回文数数目。 (2) 所有回文数之和。 main(){intn,m=9,s=45;for(n=10;n<=500;n++){if(n>=10&&n<=99) if(n/10==n%10){s+=n;m++;} if(n>=100) if(n/100==n%10){s+=n;m++;} } printf("回文数数目为: %d,所有回文数之和为%d",m,s); }_ 17.若一自然数等于其所有真因子(不包括该数本身)之和, 则称该数为完全数。 例如,6的真因子有1,2,3,且6=1+2+3因此6为完全数。 求出[2,10000]之内的: (1)最大的完全数。 (2)完全数数目。 #include"stdio.h"main(){inti,j,s,max,n=0; for(j=2;j<=10000;j++) {s=j; for(i=1;i if((j%i)==0) s-=i; if(s==0) {max=j;n++;} } printf("最大的完全数为: %d,完全数数目为: %d",max,n); }_ 18.一自然数平方的末几位与数相同时,称此数为自同构数。 例如,由于5^2=25则称5为自同构数。 求出[1,700]以内的: (1)最大的自同构数。 (2)自同构数数目。 main(){longi; intmax,n=0; for(i=1;i<=700;i++) if(i*i%10==i||i*i%100==i||i*i%1000==i) {max=i;n++;} printf("max=%d,n=%d\n",max,n); }_ 19.若某不含数字0的三位正整数,其平方数至少有三位同样的数字,则称该三位数为三重数。 例如,由于: 511^2=261121(有三位1)所以511为三重数。 求出: (1)按升序排列第10个三重数。 (2)按升序排列前10个三重数之和。 (3)所有三重数之和。 main() {longi,j,s=0;inta[11],f[9],n=0,k;for(i=100;i<=999;i++) if(i%10! =0&&i%100/10! =0) {j=i*i; f[1]=j%10;f[2]=j%100/10; f[3]=j%1000/100;f[4]=j%10000/1000; f[5]=j%100000/10000;f[6]=j%1000000/100000; f[7]=j/1000000%10;f[8]=j/10000000; a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=0; a[6]=0;a[7]=0;a[8]=0;a[9]=0; for(k=1;k<=8;k++) switch(f[k]) {case1: a[1]++;break; case2: a[2]++;break; case3: a[3]++;break; case4: a[4]++;break; case5: a[5]++;break; case6: a[6]++;break; case7: a[7]++;break; case8: a[8]++;break; case9: a[9]++;break; } for(k=1;k<=9;k++) if(a[k]>=3) {n++;s+=i;printf("i=%d",i); if(n==10) {printf("n10=%lds10=%ld",i,s);} } } printf("s=%ld\n",s); }_ 20.满足下列两个条件: 。 千位数字与百位数字相同(非0),十位数字与个位数字相同;。 是某两位数的平方。 的四位正整数称为四位平方数。 例如,由于: 7744=88^2则称7744为四位平方数。 求出: (1)所有四位平方数的数目。 (2)所有四位平方数之和。 main(){inti,j,n=0,s=0;for(i=1000;i<=9999;i++){if((i/1000)==((i/100)%10)&&(i%10)==(i%100/10))for(j=10;j<=99;j++)if(i==j*j){n++;s+=i;} } printf("%d,%d",n,s); } 21.求出[100,500]以内同时满足除以7余5,除以5余3,除以3余1的 (1)所有整数的个数。 (2)所有整数之和。 (3)按升序排列第3个整数。 main(){inti,n=0,s=0,j;for(i=100;i<=500;i++)if(i%7==5&&i%5==3&&i%3==1){n++;s+=i;if(n==3)j=i;}printf("num=%d;s=%d;j=%d",n,s,j);} _ 22.其平方等于某两个正整数平方之和的正整数称为弦数。 例如,由于: 3^2+4^2=5^2因此5为弦数。 求[121,130]之间: (1)弦数的数目。 (2)最小弦数。 (3)最大弦数。 #include"math.h"main(){inti,j,k,n=0,flag=0,min,max;for(i=121;i<=130;i++){for(j=1;j n++; if(flag==0){min=i;flag=1;} max=i;gotolab; } lab: continue; } printf("num=%d,min=%d,max=%d",n,min,max); } _ 23.求满足以下三个条件: (1)X^2+y^2+z^2=51^2 (2)x+y+z之值最大。 (3)x最小。 的一组x,y,z。 main(){inti,j,k,x,y,z,n,max=51;for(i=-51;i<=51;i++)for(j=-i;j<=i;j++) for(k=-j;k<=j;k++) {n=i+j+k; if(i*i+j*j+k*k==51*51&&n>max) {max=n;x=k;y=j;z=i;} } printf("x=%d,y=%d,z=%d\n",x,y,z); }_ floatf1(floatx,intn){inti;floatj=1.0;for(i=1;i<=n;i++)j=j*x;return(j);} 24.已知: Y=1+X+(X^2)/2+……+(X^n)/n,其中: X=0.25,n=1,2,……,求: (1)Y值(精确到小数点后第5位) (2)与 (1)匹配的最小的n。 main(){floaty=1.0;intn=1;floatx,z;scanf("%f",&x);z=x;while(z>=0.00001){y+=z;n++;z=f1(x,n)/n;}y+=(z*1000000+5)/1000000;printf("y=%.5f,n=%d",y,n);}_ 25.设有符合下列条件的四位整数(千位数字非0): (a)该数是某个2位整数的平方;(b)该数第2、第3位数字相同。 问: (1)符合上述(a)、(b)条件的四位整数共有多少个? (2)在所有符合 (1)的四位整数中最大的一个? (3)所有符合 (1)的四位整数之和。 main(){inti,j,n=0,s=0,max;for(i=1000;i<=9999;i++)for(j=10;j<=99;j++)if(i==j*j&&i/100%10==i%100/10){n++;s+=i;max=i;}printf("num=%d,max=%d,s=%d",n,max,s); }_ 27.由于0,6,8,9(不包含1)旋转180度后仍为有效十进制数字,我们称其为可颠倒数字。 由三位可颠倒数字组成的整数,称为可颠倒数,如000,608均为可颠倒数。 问: (1)[000,999]间有多少个可颠倒数? (2)若可颠倒数经180度旋转后仍为原数,则称其为颠倒不变数,如906为颠倒不变数,求[100,999]之间有多少个颠倒不变数? main(){inti,j,f[4],n=0,m=0,k=0;for(i=0;i<=999;i++){f[1]=i%10; f[2]=i/10%10; f[3]=i/100; n=0; for(j=1;j<=3;j++) if(f[j]==0||f[j]==6||f[j]==8||f[j]==9) {n++; if(n==3) {m++;/*printf("i=%d",i);*/ while(i>=100) {if(f[2]! =6&&f[2]! =9&&f[1]! =0) {if(f[1]==8&&f[3]==8){k++;/*printf("i=%d",i);*/} if(f[1]! =f[3]&&f[1]! =8&&f[3]! =8){k++;/*printf("i=%d",i);*/} } break; } } } } printf("m=%d,k=%d",m,k); }_ 28.考察由两位数字组成的素数(十位数字非0),问: (1)共有多少个? (2)其中最大一个是什么? (3)所有两位素数之和。 #include"math.h"main(){inti,k,j,n=0,s=0,max;for(i=11;i<=99;i+=2){k=sqrt(i);for(j=3;j<=k;j++)if(i%j==0)break;if(j>=k+1){s+=i;n++;max=i;printf("i=%d",i);}}printf("num=%d,max=%d,s=%d",n,max,s); }_ 29.由三位不同数字构成的三位十进制整数abc(a! =0,a! =b! =c),若能被(a+b+c)^2除尽,则称abc为三味数,如405就是三味数。 问: (1)最小的三味数是什么? (2)a,b,c均为偶数的三味数是什么? main(){inti,f1,f2,f3,flag=0,min;for(i=100;i<=999;i++){f1=i%10;f2=i%100/10;f3=i/100;if(f1! =f2&&f2! =f3&&f1! =f3&&i%((f1+f2+f3)*(f1+f2+f3))==0) {if(flag==0){flag=1;printf("min=%d",i);} if(f1%2==0&&f2%2==0&&f3%2==0) printf("i=%d",i); } } }_ 30.有三个均不为0的数字,用它们组成的所有三位数的和是2886;如果将这三个数字从大到小和从小到大分别排列成两个三位数,它们的差是297。 求: (1)这三个数字分别是多少? (2)这三个数字之和是多少? main(){inti,j,k,s;for(i=1;i<=9;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++){s=0;if(i*100+j*10+k==k*100+j*10+i+297){s=2*(i*100+j*10+k+k*10+j+j*100+i*10+i+k*100);/*printf("i=%d,j=%d,k=%d,s=%d",i,j,k,s);*/ if(s==2886)printf("%d%d%d%d\n",i,j,k,i+j+k); } } } _ 31.计算: Y=(eax-e-ax)/2*sin(x+a)+a*(ln(x+a)/2)(精度10-4) (1)其中a=0.10,x=1.0; (2)其中a=0.30,x=2.0。 #include"math.h" main(){floata,x,y;printf("inputa,x: ");scanf("%f,%f",&a,&x); y=(exp(a*x)-exp(-a*x))/2*sin(x+a)+a*log((x+a)/2); printf("y=%.4f",y); }_ 32.已知: 4个整数900,850,400和200,求它们的: (1).最大公约数.(50) (2).最小公倍数.(61200) main() {inta1,a2,a3; unsignedintb1,b2,b3,b4; intx1,x2,x3,x4; x1=900;x2=850;x3=400;x4=200; a1=gcd(x1,x2); b1=x1/a1*x2; a2=gcd(x3,x4); b2=x3/a2*x4; b3=gcd(b2,b1); b4=b2/b3*b1; a3=gcd(gcd(gcd(gcd(x1,x2),x2),x3),x4); printf("\n================\n"); printf("%dand%dgcdis%d\n",x1,x2,gcd(x1,x2)); printf("%dand%dgcdis%d\n",x3,x4,gcd(x3,x4)); printf("allgcdis%d\n",a3); printf("allminis%u\n",b4);} gcd(intn1,intn2) {inttemp; if(n1 {temp=n1;n1=n2;n2=temp;} while(n2) {temp=n1%n2; n1=n2; n2=temp;} returnn1;} 33.求[1,100]之间有奇数个不同因子的整数 (1).共有多少个(10) (2).其中最大一个(100) (3).其中第二大的一个.(81) main() {inti,n,num,n1,n2; num=n1=n2=0; printf("===================\n"); for(i=1;i<=100;i++) {n=factors(i); if(n%2) {printf("i=%d,n=%d;",i,n); num++; n1=n2;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 上机 试题