二级C上机题库100题.docx
- 文档编号:28469672
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:51
- 大小:26.92KB
二级C上机题库100题.docx
《二级C上机题库100题.docx》由会员分享,可在线阅读,更多相关《二级C上机题库100题.docx(51页珍藏版)》请在冰豆网上搜索。
二级C上机题库100题
C语言机试答案
第一套1.编写函数fun,它的功能是:
计算并输出下列级数和:
S=1/2+1/2*3+1/3*4+...1/n*(n+1)
例如,当n=10时,函数值为:
0.909091
#include
#include
doublefun(intn)
{
doubles=0;
inti;
for(i=1;i s+=1.0/(i*(n+1)); returns; } main() { printf("%f\n",fun(10)); } 2.在[10000,20000]范围内考察个位数字是7的素数,问: (1)这样的素数有多少个? (2)其中最大的一个等于几? #include intmain(void) { intmax,num=0; inti,j; for(i=10000;i<20001;i++) { for(j=2;j if(i%j==0) break; if(i==j&&i%10==7) { num++; max=i; } } printf("num=%d,max=%d\n",num,max); return0; } 3.编写程序,从键盘输入一年份,判断该年份是否为闰年。 #include intmain(void) { intyear; printf("pleaseinputtheyear: \n"); scanf("%d",&year); if((year%400==0)||(year%4==0&&year%100! =0)) printf("%disaleapyear! ",year); else printf("%disnotaleapyear! ",year); return0; } 第二套1.编写函数fun,它的功能是: 计算并输出下列级数和: 例如,当n=10时,函数值为: 0.909091 #include #include doublefun(intn) { doubles=0; inti; for(i=1;i s+=1.0/(i*(n+1)); returns; } main() { printf("%f\n",fun(10)); } 2.回文数是指正读和反读都一样的自然数。 例如,8,121,5445这三个数都是回文数。 求: (1)[1,1000]之内既是回文数,又是素数的最大整数。 (2)[1,1000]以内既是回文数,又是素数的整数有多少个。 #include inthuiwen(intn) { intp,m,flag=0; ints=0; m=n; do { p=m%10; s=s*10+p; m=m/10; }while(m); if(s==n) flag=1; returnflag; } intsushu(intn) { inti,flag=0; for(i=2;i if(n%i==0) break; if(i==n) flag=1; returnflag; } intmain(void) { inti,max,num=0; for(i=1;i<1001;i++) { if(huiwen(i)&&sushu(i)) { max=i; num++; } } printf("num=%d,max=%d\n",num,max); return0; } 3.编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。 比如输入: ”Howareyou”,有3个单词和2个空格 #include intmain(void) { charline[81]; intword=0,blank=0,flag=0; inti=0; gets(line); while(line[i]! ='\0') { if(line[i]=='') { blank++; if(flag) flag=0; } else if(! flag) { word++; flag=1; } i++; } printf("word=%d,blank=%d",word,blank); return0; } 第三套1.编写函数fun,它的功能是: 求Fibonacci数列中大于t的最小的一个数,结果由函数返回。 其中Fibonacci数列F(n)的定义为: F(0)=0,F (1)=1F(n)=F(n-1)+F(n-2)例如: 当t=1000时,函数值为: 1597。 #include #include #include intfun(intt) { intf1=0,f2=1,temp; while(f2 { temp=f1; f1=f2; f2=temp+f1; } returnf2; } main() { intn; n=100; printf("n=%d,f=%d\n",n,fun(n)); } 2.先从键盘上输入一个3行3列矩阵元素的值,然后输出主对角线元素平方之和. #include intmain(void) { intarray[3][3]; inti,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { scanf("%d",&array[i][j]); if(i==j) sum+=array[i][j]*array[i][j]; } printf("sum=%d\n",sum); return0; } 3.编程: 删除字符串中的数字字符。 #include intmain(void) { charstring[81]; inti=0,j; gets(string); while(string[i]! ='\0') { if(string[i]>='0'&&string[i]<='9') { j=i; do { string[j]=string[j+1]; j++; }while(string[j]! ='\0'); } else i++; } printf("%s\n",string); return0; } 第四套1.编写函数fun,它的功能是: 求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。 例如若n为1000时,函数值应为: s=153.909064。 #include #include #include doublefun(intn) { inti; doubles,sum=0; for(i=1;i<1000;i++) { if(i%3==0&&i%7==0) sum+=i; } s=sqrt(sum); returns; } main() { printf("s=%f\n",fun(1000)); } 2.编程求出两个非零正整数的最大公约数. #include intmain(void) { intm,n,t; printf("pleaseinputtwopositiveinteger: \n"); scanf("%d%d",&m,&n); if(m>0&&n>0) { if(m { t=m;m=n;n=t; } do { t=m%n; m=n; n=t; }while(t); printf("themaxcommondivisoris%d\n",m); } else printf("Error! \n"); return0; } 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)) #include intmain(void) { doublesum=1; doublep=1,q=1; intn=1; while(p/q>5e-4) { p*=n; q*=(2*n+1); sum+=p/q; n++; } printf("pi=%f",2*sum); return0; } 第五套1.现矩阵(3行3列)的转置(即行列互换)。 例如,输入下面的矩阵: 100200300 400500600 700800900 程序输出: 100400700 200500800 300600900 #include #include intfun(intarray[3][3]) { inttemp,i,j; for(i=0;i<3;i++) { for(j=0;j { temp=array[i][j]; array[i][j]=array[j][i]; array[j][i]=temp; } } return0; } main() { inti,j; intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}}; for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%7d",array[i][j]); printf("\n"); } fun(array); printf("convertedarray: \n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%7d",array[i][j]); printf("\n"); } return0; } 2.编写程序,计算s=s=1-1/2+1/3-1/4+……+1/99-1/100 #include intmain(void) { doubles=0; inti,flag=1; for(i=1;i<101;i++) { s+=1.0/i*flag; flag=-flag; } printf("s=%f\n",s); return0; } 3.编写程序,求2~100中的所有的亲密素数对的个数。 亲密素数: 如果x是素数,则x+2也是素数。 #include intsushu(intn) { inti,flag=0; for(i=2;i if(n%i==0) break; if(i==n) flag=1;returnflag; } intmain(void) { inti,num=0; for(i=2;i<101;i++) if(sushu(i)&&sushu(i+2)) { printf("%d,%d\n",i,i+2); num++; } printf("num=%d\n",num); return0; } 第六套1.从键盘入一个整数k(2≦k≦10000),输出它的所有质因子(即所有为素数的因子)。 例如,若输入整数: 2310,则应输出: 2、3、5、7、11。 #include intsushu(intn) { inti,flag=0; for(i=2;i if(n%i==0) //break; if(i==n) flag=1; returnflag; } intmain(void) { inti,k; printf("pleaseinputaninteger: (2<=k<=10000)\n"); scanf("%d",&k); for(i=2;i { if(k%i==0&&sushu(i)) printf("%d\t",i); } return0; } 2.编写函数fun,它的功能是: 计算正整数n所有因子(1和n除外)之和作为函数值返回。 例如: n=120时,函数值为239 #include #include intfun(intn) { inti,sum=0; for(i=2;i if(n%i==0) sum+=i; returnsum; } main() { printf("%d\n",fun(120)); } 3.编写程序,求s=1/(1*2)+1/(2*3)+……+1/(n*(n+1) #include #include doublefun(intn) { doubles=0; inti; for(i=1;i s+=1.0/(i*(n+1)); returns; } main() { printf("%f\n",fun(10)); } 第七套1.编写函数fun,它的功能是计算下列级数和,和值由函数值返回。 例如,当n=10,x=0.3时,函数值为1.349859 #include #include #include doublefun(doublex,intn) { doubles=1,p=1; inti; for(i=1;i { p*=x/i; s+=p; } returns; } main() { printf("%f\n",fun(0.3,10)); } 2.编写程序,求出并输出所有的“水仙花数”。 所谓水仙花数,是指一个三位数,其各位数字的立方之和等于该数。 #include main() { inta,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 #include main() { floata,b,c,area,p; scanf("%f,%f,%f",&a,&b,&c); p=(a+b+c)/2; if(a+b>c&&a+c>b&&b+c>a) { area=sqrt(p*(p-a)*(p-b)*(p-c)); printf("Area=%6.2f\n",area); } elseprintf("Error\n"); } 第八套1.编写函数fun,函数的功能是: 根据以下公式计算s,计算结果作为函数值返回: n通过形参传入。 S=1+1/(1+2)+1/(1+2+3)+……+1/(1+2+3+…+N) 例如: 若n的值为11时,则函数的值为: 1.833333 #include #include #include floatfun(intn) { inti; floats=0,p=0; for(i=1;i { p+=i; s+=1.0/p; } returns; } main() { intn; floats; printf("\npleaseenterN: "); scanf("%d",&n); s=fun(n); printf("theresultis: %f\n",s); } 2.编程求: 一球从100米高度自由落下,每次落地后反跳回原来高度的一半,再落下。 求它在第10次落地时,共经过多少米? 第10次反弹多高? #include intmain(void) { inti; doubles=100,sum=100; for(i=1;i<10;i++) {s=s/2; sum+=2*s; } printf("s=%lf,sum=%lf\n",s/2,sum); return0; } 3.编程: 根据以下公式求π值,并作为函数值返回.(精确到0.000001). π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+…… #include intmain(void) { doublesum=1; doublep=1,q=1; intn=1; while(p/q>5e-4) { p*=n; q*=(2*n+1); sum+=p/q; n++; } printf("pi=%f",2*sum); return0; } 第九套1.下列程序中,函数fun的功能是: 将十进制正整数m转换成k(2≤k≤9)进制数,并按位输出。 例如: 若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 #include #include voidfun(intm,intk) { intt=1; longs=0; do { s+=(m%k)*t; t*=10; } while(m/=k); s+=(m%k)*t; printf("%d",s); } main() { intb,n; printf("\npleaseenteranumberandabase: \n"); scanf("%d%d",&n,&b); fun(n,b); printf("\n"); } 2.一个自然数平方的末几位与该数相同时,称该数为同构数.例如,252=625,则25为同构数.编程求出1~1000中所有的同构数. #include"stdio.h" main() { inta,b; for(a=1;a<10;a++) { b=a*a; if(b%10==a)printf("%4d\n",a); } for(a=10;a<100;a++) { b=a*a; if(b%100==a)printf("%4d\n",a); } for(a=100;a<=1000;a++) { b=a*a; if(b%1000==a)printf("%4d\n",a); } } 3.编程计算的值。 当程序正确时,结果为: 2488.000000。 函数定义-1.0如下: f(x)=2x*x+3x+4(x>=2)且f(x)=-2x*x+3x-4(x<2) #include doublefun(doublex) { doubles; if(x<=2) s=2*x*x+3*x+4; else s=-2*x*x+3*x-4; returns; } intmain(void) { doubles; s=fun(fun(-1.0)+fun(5.0)); printf("%f\n",s); return0; } 第十套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 #include longfun(inta,intn) { inti; longs=a,p=a; for(i=1;i { p=p*10+a; if(i==n-1) s=p-s; else s+=p; } returns; } main() { inta,n; printf("\npleaseenteraandn: "); scanf("%d%d",&a,&n); printf("Thevalueoffunctionis: %ld\n",fun(a,n)); } 2.将4~100中的偶数分解成两个素数之和,每个数只取一种分解结果.如100=3+97,100=11+89,100=17+83等,但我们只取第一种分解即可. #include main() { intx,k,a,b,count=0; for(x=4;x<101;x=x+2) { for(a=2;a<=(x/2);a++) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 上机 题库 100