1、二级C上机题库100题 C语言机试答案第一套 1.编写函数fun,它的功能是:计算并输出下列级数和:S=1/2+1/2*3+1/3*4+.1/n*(n+1)例如,当n = 10时,函数值为:0.909091#include#includedouble fun(int n) double s=0; int i; for (i=1;in+1;i+) s+=1.0/(i*(n+1); return s;main() printf(%fn,fun(10);2.在10000, 20000范围内考察个位数字是7的素数, 问: (1) 这样的素数有多少个? (2) 其中最大的一个等于几?#includein
2、t main(void) int max,num=0; int i,j; for(i=10000;i20001;i+) for(j=2;ji;j+) if(i%j=0) break; if(i=j&i%10=7) num+; max=i; printf(num=%d,max=%dn,num,max); return 0;3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。#includeint main(void) int year; printf(please input the year:n); scanf(%d,&year); if(year%400=0)|(year%4=0&yea
3、r%100!=0) printf(%d is a leap year!,year); else printf(%d is not a leap year!,year); return 0;第二套1.编写函数fun,它的功能是:计算并输出下列级数和:例如,当n = 10时,函数值为:0.909091#include#includedouble fun(int n) double s=0; int i; for (i=1;in+1;i+) s+=1.0/(i*(n+1); return s;main() printf(%fn,fun(10);2.回文数是指正读和反读都一样的自然数。例如,8, 12
4、1, 5445这三个数都是回文数。求: (1) 1,1000之内既是回文数,又是素数的最大整数。(2) 1,1000以内既是回文数,又是素数的整数有多少个。#includeint huiwen(int n) int p,m,flag=0; int s=0; m=n; do p=m%10; s=s*10+p; m=m/10; while(m); if(s=n) flag=1; return flag;int sushu(int n) int i,flag=0; for(i=2;in;i+) if(n%i=0) break; if(i=n) flag=1; return flag;int main
5、(void) int i,max,num=0; for(i=1;i1001;i+) if(huiwen(i)&sushu(i) max=i; num+; printf(num=%d,max=%dn,num,max); return 0;3. 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。比如输入:”How are you”,有3个单词和2个空格#includeint main(void) char line81; int word=0,blank=0,flag=0; int i=0; gets(line); while(linei!=0) if(linei= ) blank+;
6、if(flag) flag=0; else if(!flag) word+; flag=1; i+; printf(word=%d,blank=%d,word,blank); return 0;第三套 1.编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2)例如:当t =1000时,函数值为:1597。#include#include#includeint fun(int t) int f1=0,f2=1,temp; while(f2t) temp
7、=f1; f1=f2; f2=temp+f1; return f2;main() int n; n=100; printf(n=%d,f=%dn,n,fun(n);2.先从键盘上输入一个3行3列矩阵元素的值,然后输出主对角线元素平方之和.#includeint main(void) int array33; int i,j,sum=0; for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&arrayij); if(i=j) sum+=arrayij*arrayij; printf(sum=%dn,sum); return 0;3. 编程:删除字符串中的数字字符。#i
8、ncludeint main(void) char string81; int i=0,j; gets(string); while(stringi!=0) if(stringi=0&stringi=9) j=i; do stringj=stringj+1; j+; while(stringj!=0); else i+; printf(%sn,string); return 0;第四套 1.编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。例如若n为1000时,函数值应为:s = 153.909064。#include#includ
9、e#includedouble fun (int n) int i; double s,sum=0; for(i=1;i1000;i+) if(i%3=0&i%7=0) sum+=i; s=sqrt(sum); return s;main() printf(s=%fn,fun(1000);2.编程求出两个非零正整数的最大公约数.#includeint main(void) int m,n,t; printf(please input two positive integer :n); scanf(%d%d,&m,&n); if(m0&n0) if(mn) t=m;m=n;n=t; do t=m
10、%n; m=n; n=t; while(t); printf(the max common divisor is %dn,m); else printf(Error!n); return 0;3.请编写程序:根据以下公式求(要求满足精度0.0005)的近似值:/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+(1*2*3*4*n)/(3*5*7*(2n+1))#includeint main(void) double sum=1; double p=1,q=1; int n=1; while(p/q5e-4) p*=n; q*=(2*n+1); sum+=p/q; n+
11、; printf(pi=%f,2*sum); return 0;第五套 1.现矩阵(3行3列)的转置(即行列互换)。例如,输入下面的矩阵:100 200 300400 500 600700 800 900程序输出:100 400 700200 500 800300 600 900#include#includeint fun(int array33) int temp,i,j; for(i=0;i3;i+) for(j=0;ji+1;j+) temp=arrayij; arrayij=arrayji; arrayji=temp; return 0;main() int i,j; int arr
12、ay33=100,200,300,400,500,600,700,800,900; for(i=0;i3;i+) for(j=0;j3;j+) printf(%7d,arrayij); printf(n); fun(array); printf(converted array:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%7d,arrayij); printf(n); return 0;2. 编写程序,计算s=s=1- 1/2+ 1/3-1/4 + 1/99- 1/100#includeint main(void) double s=0; int i,fl
13、ag=1; for(i=1;i101;i+) s+=1.0/i*flag; flag=-flag; printf(s=%fn,s); return 0;3.编写程序,求2100中的所有的亲密素数对的个数。亲密素数:如果x是素数,则x+2也是素数。#includeint sushu(int n) int i,flag=0; for(i=2;in;i+) if(n%i=0) break; if(i=n) flag=1;return flag;int main(void) int i,num=0; for(i=2;i101;i+) if(sushu(i)&sushu(i+2) printf(%d,%
14、dn,i,i+2); num+; printf(num=%dn,num); return 0;第六套 1. 从键盘入一个整数k(2k10000),输出它的所有质因子(即所有为素数的因子)。例如,若输入整数:2310,则应输出:2、3、5、7、11。#includeint sushu(int n) int i,flag=0; for(i=2;in;i+); if(n%i=0) / break; if(i=n) flag=1; return flag;int main(void) int i,k; printf(please input an integer:(2=k=10000)n); scan
15、f(%d,&k); for(i=2;ik;i+) if(k%i=0&sushu(i) printf(%dt,i); return 0;2.编写函数fun,它的功能是:计算正整数n所有因子(1和n除外)之和作为函数值返回。例如:n = 120时,函数值为239#include#includeint fun(int n) int i,sum=0; for(i=2;in;i+) if(n%i=0) sum+=i; return sum;main() printf(%dn,fun(120);3. 编写程序,求s=1/(1*2)+1/(2*3)+1/(n*(n+1)#include#includedou
16、ble fun(int n) double s=0; int i; for (i=1;in+1;i+) s+=1.0/(i*(n+1); return s;main() printf(%fn,fun(10);第七套 1.编写函数fun,它的功能是计算下列级数和,和值由函数值返回。例如,当n = 10,x = 0.3时,函数值为1.349859#include#include#includedouble fun (double x,int n) double s=1,p=1; int i; for(i=1;in+1;i+) p*=x/i; s+=p; return s;main() printf
17、(%fn,fun(0.3,10);2. 编写程序,求出并输出所有的“水仙花数”。所谓水仙花数,是指一个三位数,其各位数字的立方之和等于该数。#includemain() int a,b,c,d,k; for(k=100;k=999;k+) a=k/100; b=(k-a*100)/10; c=k-a*100-b*10; d=a*a*a+b*b*b+c*c*c; if(k=d) printf(%5d,k); printf(n);3.给出三角形的三边a,b,c,求三角形的面积。#include#includemain() float a,b,c,area,p; scanf(%f,%f,%f,&a,
18、&b,&c); p=(a+b+c)/2; if(a+bc&a+cb&b+ca) area=sqrt(p*(p-a)*(p-b)*(p-c); printf(Area=%6.2fn,area); else printf(Errorn);第八套 1.编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回:n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+N)例如:若n的值为11时,则函数的值为:1.833333#include#include#includefloat fun(int n) int i; float s=0,p=0; for(i=1;i
19、n+1;i+) p+=i; s+=1.0/p; return s;main() int n; float s; printf(nplease enter N:); scanf(%d,&n); s=fun(n); printf(the result is :%fn,s);2.编程求:一球从100米高度自由落下,每次落地后反跳回原来高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?#includeint main(void) int i; double s=100,sum=100; for(i=1;i10;i+) s=s/2; sum+=2*s; printf(s=%lf,
20、sum=%lfn,s/2,sum); return 0;3.编程:根据以下公式求值,并作为函数值返回.(精确到0.000001). /2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+#includeint main(void) double sum=1; double p=1,q=1; int n=1; while(p/q5e-4) p*=n; q*=(2*n+1); sum+=p/q; n+; printf(pi=%f,2*sum); return 0;第九套 1.下列程序中,函数fun的功能是:将十进制正整数m转换成k(2k9)进制数,并按位输出。例如:若输入8和2
21、,则应输出1000(即十进制数8转换成二进制表示是1000)。#include#includevoid fun (int m,int k) int t=1; long s=0; do s+=(m%k)*t; t*=10; while(m/=k); s+=(m%k)*t; printf(%d,s);main() int b,n; printf(n please enter a number and a base:n); scanf(%d%d,&n,&b); fun(n,b); printf(n);2.一个自然数平方的末几位与该数相同时,称该数为同构数.例如,252=625,则25为同构数.编程求
22、出11000中所有的同构数.#include stdio.hmain() int a,b; for(a=1;a10;a+) b=a*a; if(b%10=a)printf(%4dn,a); for(a=10;a100;a+) b=a*a; if(b%100=a)printf(%4dn,a); for(a=100;a=2)且f(x)=-2x*x+3x-4(x2)#includedouble fun(double x) double s; if(x=2) s=2*x*x+3*x+4; else s=-2*x*x+3*x-4; return s;int main(void) double s; s=
23、fun(fun(-1.0)+fun(5.0); printf(%fn,s); return 0;第十套 1.下列程序中,fun函数的功能是:求 s = aa aa - - aaa aa a(此处aa aa表示n个a,a和n的值在1至9之间)例如:a = 3,n = 6,则以上表达式为: s = 333333 33333 3333 333 33 3 其值为:296298#include#includelong fun(int a,int n) int i; long s=a,p=a; for(i=1;in;i+) p=p*10+a; if(i=n-1) s=p-s; else s+=p; ret
24、urn s;main() int a,n; printf(n please enter a and n:); scanf(%d%d,&a,&n); printf(The value of function is :%ldn,fun(a,n);2.将4100中的偶数分解成两个素数之和,每个数只取一种分解结果.如100=3+97,100=11+89,100=17+83等,但我们只取第一种分解即可.#include main() int x,k,a,b,count=0; for(x=4;x101;x=x+2) for(a=2;a=(x/2);a+) for(k=2;ka;k+) if(a%k=0) break; if(a=k) b=x-a; for(k=2;kb;k+) if(b%k=0) break; if(b=k) printf(%3d=%3d+%3dt,x,a,b); count+; break; if(count%3=0) printf(n);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1