编程培训所有C语言题库(修改后).docx
试卷编号:2203所属语言:C语言试卷方案:所有C语言题库 试卷总分:1220分共有题型:1种、程序填空 共122题(共计1220分)第1题(10.0分)题号:558 难度:中 第2章/ *【程序填空】功能:一个40磅重的板碎成4块,每块正好是个整数磅,且用这 4块当祛码能称出140磅的整数重量的物体。编程求这4块 的各自重量。*/include <stdio. h>#include <stdlib.h>main ()(int i, j, k, 1, p, tl, t2, t3, t4;for(i=l;i<38;i+)/*SPACE*/for( ? ;j<38-i;j+)/*SPACE*/ for(k=j;k< ? ;k+) (1=40-i-j-k;for(p=l;p<40;p+)(for(tl=-l;tl<2;tl+)for(t2=-l;t2<2;t2+)for(t3=-l;t3<2;t3+)for (t4=-l;t4<2;t4+) /*SPACE*/ if( ? =p) goto next;break;/*SPACE*/next:if(p= ?)printf ("%d, %d, %d, %dn*, i, j, k, 1);exit(0);printf ("error.");答案:("案 1)= j二i=(答案 2)= 39-i-j 39 -i -j=(答案 3)=i*tl+j*t2+k*t3+l*t4=或=i*tl+j*t2+k*t3+l*t4(q )-39第2题(10.0分)题号:525难度:较易第2章/*【程序填空】功能:利用全局变量计算长方体的体积及三个面的面积。*/#include <stdio. h>int si, s2, s3;int vs(int a, int b, int c)(int v;/*SPACE*/v= ?;sl=a*b;/*SPACE*/s2= ?;s3=a*c;return v;main ()(int v, 1, w, h;printf('ninput length, width and height: ");/*SPACE*/ scanf(*%d%d%d*, ? ,&w,&h);/*SPACE*/v= ?;printf ("v=dsl=%d s2=%ds3二dn”, v, si, s2, s3);答案:=(答案 1)二二a*b*c=或=a*c*b b*a*c=或=b*c*ac*a*b=或= c*b*a ,(、b*c或二二二c*b=(答案 3)=(答案 4)= vs(l, w, h)第3题(10.0分)/t题号:356难度:易【程序填空】题目:从键盘输入组整数,使用条件表达式找出最大的整数。当输入的整数为0时结束。例如,输入1 2 3 5 4 0时,输出"max=5"。*/include <stdio. h>#include <conio. h>main ()(int num=-l;int max = 0;printf (请输入组整数:'n");/*space*/? (num!=O)scanf ("%d", &num);/*SPACE*/max = ? ? num : max;/*space*/? ("max=%dn", max);)答案:=(答案 D=while=(答案2)=num>max=或=num>=max前max<nummax<=num=(答案 3)二 printf第4题(10.0分)题号:537难度:易!*【程序填空】功能:从读入的整数数据中,统计大于零的整数个数和小于零的 整数个数。用输入零来结束输入,程序中用变量i统计大于 零的整数个数,用变量j统计小于零的整数个数。*/#include <stdio. h>main()(int n, i, j;printf("Enter iNT number, with 0 to endn"):i=j=0;scanf ("%d", &n):while(n!=0)(/*SPACE*/if(n>0)i= ?;/*$PACE*/if(n<O)j= ?;/*SPACE*/scanf("%d", ?);printf("i=%4d, j=%4dn", i, j);答案:=(答案1)=i+1或=1+i=(答案 2)=j+1 1+j(答案3)&n第5题(10.0分)题号:364 难度:中 第6章 【程序填空】功能:计算并输出high以内最大的I0个素数之和,high由主函数传 给fun函数,若high的值为100,则函数的值为732。1,1,1 111 11111111 Iinclude <conio. h>#include <stdio. h>include <math.h> int fun( int high ) int sum=0, n=0, j, yes;/*SPACE*/ while(high>=2) && ( ?) (yes=l;for (j=2;j<=high/2;j+ )/*SPACE*/ if ( ?) (yes=0;break; if(yes) (sum+=high;n+;) high一;)/*space*/?;main()printf(*%dn*, fun(100);答案:(免案1)n<10=或=10>nn<=9=或=9>=n="(答案 2)=high%j=0=或=!(high%j)=(答案 3)= return sum return(sum)第6题(10.0分)题号:353难度:易第6章/*【程序填空】功能:对任一整数N(NWO),它都可以分解成1(或1)和一些质数(素 数)因子的形式。例如:当N=150时,可分解成1X2X3X5X5;当N二一150时,可分解为1X2X3X5X5。下边程序能实现这种分解过程。当N=150,输出以下分解结果:N= 1* 2*3*5*5*/include <stdio. h>0include <stdlib. h>main ()(int n, i, r;scanf ("%d", &n);if (n=0)printf ("data error n");exit(0);/*space*/else if ( ?)printf("n=l");else(printf("n=-l");n=n;)/*space*/for( ? ;i<=n;i+)/*space*/?;while(r=0)(printf("*%d",i);/*space*/?;r=n%i;)printf("n");答案:=(答案 1 )=n>00<n=(答案 2)=i=2=(答案3)=r=n%i=(答案 4)= n=n/i=或= n/=i第7题(10.0分)题号:584难度:中 第2章【程序填空】功能:如果整数A的全部因子(包括1 ,不包括A本身)之和等 于B:且整数B的全部因子(包括1 ,不包括B本身) 之和等于A ,则将整数A和B称为亲密数。求3000以内 的全部亲密数。include <stdio.h>#include <stdio. h>main()Iint a, i, b, n ;printf("Friendly-numbers pair samller than 3000:n");for(a=l ; a<3000 ; a+)(for(b=0,i=l ; i=a/2 ; i+ )/*space* /if(!(a%i) ?;for(n=0,i=l ; i<=b/2 ; i+) /*SPACE*/ if(!(b%i) ?;和b相等的情况/*space*/if( ?1 && a<b)a=b 的话,就包括printf ("%4d'%4dn", a, b);)答案:=(答案 1)=b+=i=或=b=b+in+=i肃n=n+i=(答案 3)= n a第8题(10.0分)题号:535难度:易第2章/ *【程序填空】功能:百鸡问题:100元买100只鸡,公鸡只5元钱,母鸡只3 元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡 各多少只?此处用的while循环,之前我们用的for循环*/#include <stdio. h>main()(int cocks, hens, chicksi 公鸡 kd:k,母鸡 hen,小鸡 tjik cocks=0;while(cocks<=19)I/*SPACE*/?二0;/*SPACE*/while(hens<= ?)chicks=100-cocks-hens;if(5*cocks+3*hens+chicks/3=100)此处有点问题,应加上&&(chicks%3=0),比如3, 20, 77 printf ("%d, %d, %dn*, cocks, hens, chicks);/*SPACE*/?;)/*space*/?;答案:=(答案 1)= hens=(答案 2)= 33=(答案 3)= hens+曲+hens=或= hens=hens+l= 或= hens=l+hens=(答案 4)= cocks+=或=+cocks或二二= cocks=cocks+l=二或二二二 cocks=l+cocks第9题(10.0分)题号:345难度:易第1章/*【程序填空】题目:从键盘键盘输入3个整数,然后找出最大的数并输出。例如:输入”12, 45, 43”, 输出,三个数是:12, 45, 43,最大数是:45.。*/include <stdio. h>#include <conio. h> main ()int a, b, c, max;printf ("请输入三个整数:'n");/*SPACE*/? ("%d,%d,&a, &b, &c);printf ("三个数是:%d,%d,%d. ”, a, b, c); /*SPACE*/if ( ? ) max=a;else max=b;if (max<c) max=c;/*SPACE*/printf ("最大数是:%d. ”, ?);答案:=(答案1)= scanf=(答案 2)= a>b=或=a>=b=或=b<a=或= b<=a=(答案 3)二=max第10题(10.0分)题号:579难度:易第2章/*【程序填空】功能:输出1到100之间每位数的乘积大于每位数的和的数。 例如:数字26,数位上数字的乘积12大于数字之和8。*/include <stdio. h> mainOint n, k=l, s=0, m;for(n=l;n<=100;n+) k=l;s=0;/*SPACE*/ ?;/*SPACE*/ while( ?) (k*=m%10;s+=m%10;/*space*/?;)if (k>s)printf (*%d ", n);答案:=(答案1)= m=n=(答案 2)=m>00<m=(答案 3)=m=m/l0=或=m/=10第11题(10.0分)题号:539难度:较易第2章/*【程序填空】功能:计算圆周率的近似值。需要图片,万维系统有此题,可以尝试猜下*/ttinclude <stdio. h>include <math. h> main()int s, n;/*SPACE*/ double ? ,t;t=l;pi=0;n=l;s=l;/*SPACE*/ while( ? >=2e-6) (pi+=t;n+=2;s=-s;t=s/n;)/*space*/pi*= ?;printf ("pi=%. 6fn", pi);答案:=(答案 1)=pi(答案2)fabs (t)3)第12题(10.0分)题号:606难度:中第1章 【程序填空】给定程序中,sum(int n)函数的功能是:递归调用计算1n的 累加和。请填空。例如:输入:100输出S5050#include "stdio. h" int sum(int n)if(n=l)/*space*/?;else/*space*/?);)void main()(int m;scanf("%d", &m);printf(*%d*, sum(m);)答案:=(答案 1)=return (1)=(答案 2)=return(sum(n-l) + n)第13题(10.0分)题号:360 难度:易 第1章/*【程序填空】题目:打印出11000中满足个位上的数字、十位上的数字和百位 上的数字都相等的所有三位数。本题输出“111, 222, 333, 444, 555, 666, 777, 888, 999, 1000"/include <stdio. h>main()(int i, g, s, b;for (i=l; i<=1000; i+)/*space*/s=(i/10)%10;/*space*/b二八?】)10;/*space*/ if(g=s ? s=b) printf (飞d, ”, i);答案:=(答案 1)= i%10=(答案 2)= i/100=(答案 3)=&&第14题(10.0分)题号:561 难度:易 第2章【程序填空】功能:三角形的面积为:area=sqrt(s*(s-a)*(s-b)*(s-c).其中,s=(a+b+c)/2,a、b、c为三角形三条边的长。定义两个带 参数的宏,个用来求s,另一个用来求area。编写程序, 在程序中用带参数的宏求面积area.*/include <stdio. h>#include "math, h"/*space*/# ? S(x, y, z) (x+y+z)/2#define AREA (s, x, y, z) sqrt (s* (s-x) * (s-y) * (s-z)main()double area;float a, b, c, s; printf ("a, b, c=");/*space*/ scanf (*%f, %f,%f”, &a, ? ,&c); if(a+b>c&&b+c>a&&c+a>b)/*space*/s= ?;/*SPACE*/ area= ?;printf("area=%fn", area);)答案:=(答案1)= define=(答案 2)= &b=(答案3)=S(a, b, c)=(答案 4)= AREA(s, a, b, c)第15题(10.0分)题号:557难度:易第2章/ *【程序填空】功能:算式:? 2*7? =3848中缺少个十位数和一个个位数。编 程求出使该算式成立时的这两个数,并输出正确的算式。/#include <stdio. h>#include <stdlib. h>mainO(int x, y;/*space*/for(x=l; ? ;x+)/*SPACE*/for( ? ;y<10;y+) 多思考下,小坑 /*space*/ if( ? =3848)(/*SPACE*/ printf(*%d*%d=3848n', ?); exit(0);答案:=(答案 i)=x<10=或=10>x=或=x<=9=或=9>=x=(答案2)y=03)(10*x+2)*(70+y)=或= (10*x+2)*(70+y)-r二r-r士-(J )10*x+2, 70+y=或=10 * x + 2 , 70 + y第16题(10.0分)题号:496 难度:易 第1章/*【程序填空】题目:给定程序中,函数fun的功能是:根据形参i的值返回某个函数的值。当调用正确时,程序输出:xl=5. 000000, x2=3. 000000, xl*xl+xl*x2=40. OOOOOOo#include <stdio. h> double fl(double x)( return x*x;double f2 (double x, double y)( return x*y;)double fun(int i, double x, double y)(if (i=l)/*SPACE*/ return ? (x);else/*SPACE*/ return ? (x, y);main()( double xl=5, x2=3, r; r = fund, xl, x2); r += fun(2, xl, x2); printf("nxl二f, x2=%f, xl*xl+xl*x2=%fnn”, xl, x2, r);答案:=(答案 1)= fl=(答案 2)= f2第17题(10.0分)题号:473难度:难【程序填空】题目:甲乙丙丁 4人同时开始放鞭炮,甲每隔tl s放一次,乙每隔t2 s放一次, 丙每隔t3 s放一次,丁每隔t4 s放一次,每人各放n次。函数fun的功能是根据形参炸响,只算一次响声,第一次响声是在第0s。例如:若tl = 7, t2=5, t3=6, t4=4, n=10,则总共可听到28次鞭炮声。0include <stdio. h>/*SPACE*/define 0K(i, t, n) ( ? =0) && (i/t<n)int fun(int tl, int t2, int t3, int t4, int n)intcount,t ,maxt=tl;if(maxt<t2)maxt = t2;if(maxt<t3)maxt = t3;if (maxt count=l;<t4)i*maxt = t4;给count赋初值/*space*/ for(t=l; t< maxt*(n-l); ?) (if (0K(t, tl, n) ! I 0K(t, t2, n) | | 0K(t, t3, n) I | 0K(t, t4, n) count+;/*space*/return ?;)mainO(int tl=7, t2=5, t3=6, t4=4, n=10, r;r = fun(tl, t2, t3, t4, n); printf ( The sound : %dn , r);答案:=(答案 1)= i%t二(答案 2)= t+=或= t=t+l=或= t+=l=(答案 3)= count第18题(10.0分)题号:350难度:易 第1章/*【程序填空】题目:计算两个正数数n和m(m 1000)之间所有数的和。n和m从 键盘输入。例如,输入“1,100”,输出"1到100之间所有数的和是:5050o "/#include <stdio. h>#include <conio. h>main() (int i, n, m;long sum;printf("请输入两个正整数:n,mn");/*space*/?(飞d,%d", &n, &m );/*SPACE*/ for( ? ; i<=m; i+) (/*space*/sum = ?;)printf ("切到%d之间所有数的和是:%ldn", n, m, sum);答案:=:(答案 1)= scanf二(答案2)二i=n=(答案 3)二 sum+i i+sum第19题(10.0分)题号:362 难度:易/*【程序填空】功能:以下程序的功能如(图1)。 没有图片,但1、2、4空可以填 */#include <conio. h>include <stdio. h>/*SPACE*/ double f( ?) (/*space*/?;/*space*/if ( ?)y=2. 0*x*x+3. 0*x+4. 0;elsey=-2. 0*x*x+3. 0*x-4. 0;/*SPACE*/ ?;main () (printf (*%fn*» f (f (-1. 0) +f (5. 0);答案:=:(答案 d= float xdouble x (答案2) double y=(答案 3)= x<=2=或=2>=xx<=2. 0=或=2. 0>=x=(答案 4)=return y=或=return (y)第20题(10.0分)题号:444难度:易第1章/*【程序填空】题目:下列给定程序中,函数fun的功能是:找出100到x(x<999)之间各位上的数字之和 为15的所有整数,并在屏幕输出;将符合条件的整数的个数作为函数值返回。例如:当n值为500时,各位数字之和为15的整数有:159、168、177、186、195、249、 258、 267、 276、 285、 294、 339、 348、 357、 366、 375、 384、 393、 429、 438、 447、456、465、474、483、492 共有 26 个。辛/include <stdio. h>int fun(int x)(int n, si, s2, s3, t;/*SPACE*/n= ?;t=100;/*space*/while(t<= ?)sl=t%10;s2=(t/10)%10;s3=t/100;if (sl+s2+s3=15)printf (*%d ", t);n+;)/*space*/?;)return n;main()(int x=-l;while(x>999| |x<0) 应该为 x= 100printf("Please input(0<x<=999):"); scanf ("%d", &x);printf("nThe result is: %dn", fun(x);答案:=(答案 !)=0=(答案 2)=(答案 3)= t+t=t+l=或=t+=l+ +t第21题(10.0分)题号:336难度:易【程序填空】题目:求出-10到30之内能被7或11整除,但不能同时被 7或11整除的所有整数。例如:输出"-7, 7,11, 14, 21, 22, 28,".*/#include <conio. h>include <stdio. h>main() (int i;/*space*/ for( ? ;i<=30; i+) (/*space*/if( (i%7=0 ? i%ll=0) &&i%77!=0)/*space*/? ("%d,",i); )答案:=(答案 1)=i=-10=(答案 2)=II=(答案 3)=printf第22题(10.0分)题号:420难度:易第93章/*【程序填空】题目:以下程序求100200之内的素数。*/ttinclude <stdio. h>include "math, h”void sushu(int m)Iint k;int i;/*SPACE*/?for(i=2:i<=k:i+)/*SPACE*/?if(i>=k+l) printf("%4d",m);void main()(int m;for ( m=101;m<=200;m+)/*space*/答案:=(答案 1)= k=(int)sqrt (m):=(答案2)= if(m%i=0) break ;=或= if(!(m%i) break ;=(答案 3)= sushu (m)第23题(10.0分)题号:332难度:易/*【程序填空】题目:请输入个大于100的正整数a,将a的百位、十位和个位依 次放在b的个位、十位和百位上。例如:输入"321",输出”结果是:123”。*/#include <conio. h>#include <stdio. h>main ()(/*SPACE*/ ? a, b;printf ("请输入个大于100的正整数:"); /*SPACE*/ scanf ("%d", ?);b=(a%10)*100 + (a八)%10)*10 + (a/100)%10;/*SPACE*/printf ("结果是:%dn"»【?】);答案:=(答案 1)= int=(答案 2)= &a(答案3) b第24题(10.0分)题号:434难度:易第2章/*【程序填空】题目:下列程序从键盘输入所需数据,求出Z的值并输出,要求输出结果保留2位小数。辞include <stdio. h>/*space*/?main () int x;double y,z;/*SPACE*/ scanf(* ? *,&x,&y); z=2*x*sqrt(y); /*SPACE*/ printf(*z= ? ", z);答案:(答案1)#include<math. h>=sK=#include "math, h”=(答案 2)=%d%lf%d,%lf=(答案3)=%. 2f=或=%. 21f第25题(10.0分)题号:562难度:易第2章/*【程序填空】功能:要求输出结果为3。*/#include <stdio. h>/*space*/int akm( ? , int n)if(m=O)/*SPACE*/ (? n+1;else if(m!=O&&n=O)akm(m-l, 1);else if(m!=O&&n!=O) akm(m-l, akm(m, n-l);)main ()/*SPACE*/ int m=l, n=l, ?;s=akm (m, n);printf s);)答案:=(答案 1)=int m=(答案 2)=return=(答案 3)=第26题(10.0分)题号:346难度:易 第1章【程序填空】题目:从键盘键盘输入3个整数,然后找出最小的数并输出。例如:输入"10,41, 31”,输出“三个数是:10,41,31 .最小数是:10.include <stdio. h>#include <conio. h>main()(/*space*/? a, b, c, min;printf ("请输入三个