《大一C语言题库.doc》由会员分享,可在线阅读,更多相关《大一C语言题库.doc(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、编程大题571.有一函数:当x0时,y=1。编一程序,输入x的值,输出y的值。#includeint main()int x,y;scanf(%d,&x);if (x=0) if (x0) y=1; else y=0;else y=-1;printf(x=%d,y=%dn,x,y);return 0;2.输入三个实数,将这三个数按由大到小的顺序排列,并输出这三个数。#include int main() float a,b,c,t; scanf(%f,%f,%f,&a,&b,&c); if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(bc) t=
2、b; b=c; c=t; printf(%5.2f,%5.2f,%5.2fn,a,b,c); return 0;3.有三个整数a,b,c,由键盘输入,输出其中最大者。#includeint main()int a,b,c,max;printf(请输入a,b,cn);scanf(%d,%d,%d,&a,&b,&c);max=a;if(maxb)max=b;if(maxc)max=c;printf(最大的数为%dn,max);return 0;4.编程求圆面积、圆周长。要求圆半径由键盘输入,输出时要求有文字说明,取小数点后两位数字。#include void main()float r, l, s
3、;float pi=3.1415926; printf(表输入圆半径r:); scanf(%f, &r); l=2*pi*r; s=pi*r*r; printf(圆周长为:l=%6.2fn, l); printf(圆面积为:s=%6.2fn, s); 5.有分段函数:当x10时,y=sqrt(x)。编一程序,输入x的值,输出y的值。#includeint main()int x,y;scanf(%d,&x);if(x-10)y=abs(x)+5;else if(x=10) y=4*x-8;else y=sqrt(x);printf(x=%d,y=%dn,x,y);return 0;6.编写程序
4、,判断某一年是否是闰年。(闰年的条件是:能被4整除,但是不能被100整除,或者可以被400整除。)#include int main()int year,leap; printf(enter year:); scanf(%d,&year); if (year%4=0) if(year%100=0) if(year%400=0) leap=1; else leap=0; else leap=1; else leap=0; if (leap) printf(%d is ,year); else printf(%d is not ,year); printf(a leap year.n); retu
5、rn 0;7.输入一个华氏温度,要求输出摄氏温度,输出时要求有文字说明,取小数点后两位数字。公式为c=5/9(f-32)#include int main()float c,f; printf(请输入一个华氏温度:);scanf(%f,&f); c=(5.0/9.0)*(f-32); printf(摄氏温度为:%5.2fn,c);return 0; 8.有一函数:当x1时,y=|x|;当1=x=10时,y=3x+11。编一程序,输入x的值,输出y的值。 #include #include void main()int x, y; printf(输入x:);scanf(%d,&x); if (x
6、1) y=abs(x); else if (x*p2) t=p1;p1=p2;p2=t; if(*p1*p3) t=p1;p1=p3;p3=t; if(*p2*p3) t=p2;p2=p3;p3=t; printf(%d,%d,%dn,*p1,*p2,*p3); 10.输入一个字符,判断它是否是小写字母,如果是,将它转换成大写字母;如果不是,不转换。然后输出最后得到的字符。#include void main ( )char ch; scanf(%c,& ch); ch=(ch=A& ch=Z)?(ch+32):ch; printf(%cn,ch); 11.编程求圆柱体积,圆柱表面积。要求圆半
7、径,圆柱高由键盘输入,输出时要求有文字说明,取小数点后两位数字。#include void main()float r, h, v, s;float pi=3.1415926; printf(表输入圆半径r、圆柱高h:); scanf(%f%f, &r,&h); v=pi*r*r*h; s=2*pi*r*r+2*pi*r*h; printf(圆柱体积为:v=%6.2fn, v); printf(圆柱表面积为:s=%6.2fn, s); 12. 编程求圆柱体积,圆柱表面积。要求圆半径,圆柱高由键盘输入,输出时要求有文字说明,取小数点后两位数字。#include void main()float
8、r, h, v, s;float pi=3.1415926; printf(表输入圆半径r、圆柱高h:); scanf(%f%f, &r,&h); v=pi*r*r*h; s=2*pi*r*r+2*pi*r*h; printf(圆柱体积为:v=%6.2fn, v); printf(圆柱表面积为:s=%6.2fn, s); 13.有三个整数a,b,c,由键盘输入,输出其中最小者。#includeint main()int a,b,c,max;printf(请输入a,b,cn);scanf(%d,%d,%d,&a,&b,&c);max=a;if(maxb)max=b;if(maxc)max=c;p
9、rintf(最小的数为%dn,max);return 0;14.输入一个字符,判断它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。#include void main ( )char ch; scanf(%c,& ch); ch=(ch=A& ch=Z)?(ch+32):ch; printf(%cn,ch); 15.输入三角形的三边长,求三角形面积。求三角形面积的公式为area=sqrt(s(s-a)(s-b)(s-c),其中s=(a+b+c)/2#include #include void main ( )float a,b,c,s,area;scan
10、f(%f%f%f,&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c);printf(%fn,area); 16.编程求2!+4!+6!+8!+10!的值,并输出结果。#include int main() int n=1,sum=0,j,m=1,i; for(i=1;i=5;i+) m=1; for(j=1;j=2*i;j+) m=m*j; sum=sum+m; printf(sum=%dn,sum); return 0;17.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,
11、又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想吃时就剩一个桃子了。求第一天共摘了多少个桃子。#includeint main()int day,x1,x2;day=9;x2=1;while(day0)x1=(x2+1)*2;x2=x1;day-;printf(total=%dn,x1);return 0; 18.输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。#includevoid main()int i,j,k,n; printf(narcissus numbers are);for(n=100;n1000;n+) i=n/10
12、0; j=n/10-i*10; k=n%10; if(n=i*i*i+j*j*j+k*k*k) printf(%5d,n); printf(n);19.编程求1100之间的所有素数,并输出结果。#include #include int main()int n,m=0,k,i; for(n=1;n=100;n=n+2) k=sqrt(n); for (i=2;i=k+1) printf(%d ,n); m=m+1; if(m%10=0) printf(n); printf(n); return 0;20.编程求1!+3!+5!+7!+9!的值,并输出结果。#include int main()
13、 int n=1,sum=0,j,m=1,i; for(i=1;i=5;i+) m=1; for(j=1;j=2*i-1;j+) m=m*j; sum=sum+m; printf(sum=%dn,sum); return 0;21.用pi/41-1/3+1/5-1/7+.公式求pi的近似值,直到某一项的绝对值小于10的-6次方为止。#include #include int main() int sign=1; double pi=0,n=1,term=1; while(fabs(term)=1e-6) pi=pi+term; n=n+2; sign=-sign; term=sign/n; p
14、i=pi*4; printf(pi=%10.8fn,pi); return 0;22.一个球从100m高度自由落下,每次落地后又反跳回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米?#includeint main()int i;double m=100,sum=0;for(i=0;i10;i+)sum=sum+m;m=m/2;printf(%fn,sum);return 0; 23.输入两个正整数m和n,求其最大公约数和最小公倍数。#includevoid main()int p,r,n,m,temp; printf(请输入n和m: );scanf(%d,%d,%d,&n,&
15、m); if(nm)temp=n;n=m;m=temp; p=n*m; while(m!=0) r=n%m;n=m;m=r; printf(:%dn,n);printf( :%dn,p/n); 24.利用循环,编程求1!+2!+3!+10!的值,并输出结果。#include int main() int n=1,sum=0,j,m=1,i; for(i=1;i=10;i+) m=1; for(j=1;j=i;j+) m=m*j; sum=sum+m; printf(sum=%dn,sum); return 0;25.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.,求出这个
16、数列前20项之和。#includeint main()int i,n=20;double a=2,b=1,s=0,t;for(i=1;i=n;i+)s=s+a/b;t=a,a=a+b,b=t;printf(sum=%16.10fn,s);return 0;26.求Fibonacci数列前40个数。这个数列有以下特点:第1和第2个数为1,从第3个数开始,该数是其前面两个数之和。#include int main() int f1=1,f2=1,f3; int i; printf(%12dn%12dn,f1,f2); for(i=1; i=38; i+) f3=f1+f2; printf(%12d
17、n,f3); f1=f2; f2=f3; return 0;27.一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编程求1000以内所有完数。#include int main() int m,s,i;for (m=2;m1000;m+)s=0;for (i=1;im;i+)if(m%i)=0)s=s+i;if(s=m)printf(%d,its factors are ,m);for(i=1;im;i+)if(m%i=0) printf(%d ,i);printf(n); return 0; 28.求S=a+aa+aaa+.+aa
18、.a(n个a)之值。其中a是一个数字,n代表a的位数。例如:2+22+222+2222+22222(此时n为5),n由键盘输入。#include int main()int a,sn=0,tn=0,k,i=1,n;printf(a,n=:);scanf(%d,%d,&a,&n);while(i=n)tn=tn+a;sn=sn+tn;a=a*10;+i; printf(a+aa+aaa+.=%dn,sn); return 0;29.编程求100200之间的所有素数,并输出结果。#include #include int main()int n,m=0,k,i; for(n=101;n=200;n
19、=n+2) k=sqrt(n); for (i=2;i=k+1) printf(%d ,n); m=m+1; if(m%10=0) printf(n); printf(n); return 0;30.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#includevoid main()char c;int letters=0,space=0,digit=0,other=0; printf(n);while(c=getchar()!=n) if(c=a&c=A&c=0&c=9) digit+; elseother+; printf(:%dn:%dn:%dn:%dn,letter
20、s,space,digit,other); 31.将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,4,3,2,0。要求改为0,2,3,4,6,8。#include#define N 6void main()int aN,i,temp; printf(enter array a:n);for(i=0;iN;i+)scanf(%d,&ai); printf(array a:n);for(i=0;iN;i+)printf(%4d,ai);for(i=0;iN/2;i+) temp=ai;ai=aN-i-1;aN-i-1=temp; printf(n Now,array a:n);for(i=
21、0;iN;i+)printf(%d ,ai); printf(n);32.编写一个函数,求数列1+1/2+1/3+1/4+1/5+.1/n,利用主函数调用这个函数并输出结果。#include#includevoid main()int i,s=1;float n,t,a;t=1;a=0;n=1;printf(input n:,n);while(i=n)a=a+t;i=i+;t=s/i; printf(a=%10.6fn,a);33.将一个二维数组int a34的行和列的元素互换,存到另外一个二维数组中。#include void main()int a23=1,2,3,4,5,6;int b3
22、2,i,j; printf(array a:n);for (i=0;i=1;i+) for (j=0;j=2;j+) printf(%5d,aij);bji=aij;printf(n);printf(array b:n);for (i=0;i=2;i+)for(j=0;j=1;j+) printf(%5d,bij);printf(n);34.利用循环输出以下图形* * * *#include int main() int i,j,m; for (i=1;i=5;i+) m=i; for(m=1;mi;m+) printf( ); for(j=0;j=5-i;j+) printf(*); pri
23、ntf(n); return 0;35.用冒泡排序法对输入的10个数进行降序排序,并存入数组中。int paixu(x) int x; int i,j,t; for(j=1;j10;j+) for(i=0;ixi+1) t=xi+1;xi+1=xi;xi=t; main() int y10;int i; for(i=0;i10;i+) scanf(%d,&yi); paixu(y); for(i=0;i10;i+) printf(%5d,yi); printf(n); 36.有一个3乘4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。#include void main
24、()int i,j,row=0,colum=0,max; int a34=1,2,3,4,9,8,7,6,-10,10,-5,2; max=a00; for (i=0;i=2;i+) for (j=0;jmax) max=aij;row=i;colum=j; printf(max=%d,row=%d,colum=%dn,max,row,colum); 37.用冒泡排序法对输入的10个数进行升序排序,并存入数组中。int paixu(x) int x; int i,j,t; for(j=1;j10;j+) for(i=0;ixi+1) t=xi+1;xi+1=xi;xi=t; main() in
25、t y10;int i; for(i=0;i10;i+) scanf(%d,&yi); paixu(y); for(i=0;i10;i+) printf(%5d,yi); printf(n); 38.利用循环,输出以下图形* * * *#include int main() int i,j,m; for (i=0;i5;i+) m=i; for(m=0;mi;m+) printf( ); for(j=0;j5;j+) printf(*); printf(n); return 0;39.输出以下杨辉三角形(要求输出10行)。11 11 2 11 3 3 11 4 6 4 1115 10 10 5
26、 1.main() static int m,n,k,b1111; b01=1; for(m=1;m11;m+) for(n=1;n=m;n+) bmn=bm-1n-1+bm-1n; printf(%-5d,bmn);printf(n); 40.利用循环输出以下图形 * * *#include int main() int i,j,m; for (i=1;i=4;i+) m=i; for(m=1;m=4-i;m+) printf( ); for(j=0;j2*i-1;j+) printf(*); printf(n); return 0;41.利用循环,输出以下图形* * * *#include
27、 int main() int i,j,m; for (i=1;i=4;i+) m=i; for(m=1;mi;m+) printf( ); for(j=0;j2*(5-i)-1;j+) printf(*); printf(n); return 0;42.求一个33的整型矩阵对角线元素之和。main() int i=0,j=0,a33,s1,s2; for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); s1=a00+a11+a22; s2=a02+a11+a20; printf(s1=%d,s2=%dn,s1,s2); 43.编写程序,将两个字符串连接起来
28、,不要使用strcat函数。main() int i,j;char str1100,str2100,str3201; printf(input a string:);gets(str1); for(i=0;str1i!=0;i+) str3i=str1i;printf(input a string:);gets(str2); for(j=0;str2j!=0;j+) str3j+i=str2j;str3j+i=0; printf(%sn,str3); 44.写一个函数,求两个整数中的较大者,用主函数调用这个函数,并输出结果,两个整数由键盘输入。#include void main()int m
29、ax(int x,int y); int a,b,c;scanf(%d,%d,&a,&b); c=max(a,b); printf(max is %dn,c);int max(int x,int y) if(xy) return(x); elsereturn(y); 45.编写两个函数分别求两个整数的最大公约数和最小公倍数,在主函数中调用这两个函数,并输出结果,两个整数由键盘输入。#includevoid main()int cm(int x,int y);int cd(int x,int y);int a,b,m,n;printf(输入两个数:);scanf(%d %d,&a,&b);m=c
30、m(a,b);n=cd(a,b);printf(最大公约数是%dn最小公倍数%dn,n,m);int cm(int x,int y)int k;k=xy? x:y;for(;k+)if(k%x=0&k%y=0) break;return(k);int cd(int x,int y)int i,j,k;k=xy? y:x;for(i=1;i=k;i+)if(x%i=0&y%i=0) j=i;return(j); 二、选择题一、选择题1,该变量已正确定义为整型,则表达式n=i=2,+i,i+ 。已知字母A的ASCII值为65,下列程序运行后的输出结果是main()char a,b;a=A+5-3;
31、b=a+6-2;printf(%d%c,a,b);2.下列isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。请填空。int isprime(int a)int i;for(i=2;i=a/2;i+)if(a%i=0);3.设有定义:float x=123.4567;,则执行下列语句后的输出结果是printf(%fn,(int)(x*100+0.5)/100.0);4.若有定义:int a=4,b=5,c=6;接着顺序执行下列语句后,变量b中的值是。c=(a-=(b-5);c=(a%3)+(b=1);若a的值为1,则表达式!a|+a的值是。5.下列程序的功能是:求出
32、数组x中各相临两个元素的和依次存放到数组a中,然后输出。请填空。main()int x10,a9,i;for(i=0;i10;i+)scanf(%d,&xi);for(;i10;i+)ai-1=xi+;for(i=0;i9;i+)printf(%d,ai);printf(n);6.设有定义语句:int a3=0,1,3,则数组元素a12是7.下列程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行4个输出,请填空。main()int a10,b10,i;for(i=0;i10;i+)scanf(%d,&ai);for(i=1;i10;i+);for(i
33、=1;i10;i+)printf(%d,bi-1);if(i%4=0) printf(n);8.下面程序将二维数组a的行和列互换后存放到一个二维数组b中,请填空。main()int a23=1,2,3,4,5,b32,i,j;for(i=0;i2;i+)for(j=0;j3;j+)1.下列叙述中错误的是( )A.算法正确的程序最终一定会结束。B.算法正确的程序可以有零个输出。C.算法正确的程序可以有零个输入。D.算法正确的程序对于相同的输入一定有相同的结果。B2.下列叙述中错误的是( )A.C程序必须由一个或一个以上的函数组成。B.函数调用可以作为一个独立的语句存在。C.若函数有返回值,必须通
34、过return语句返回。D.函数形参的值也可以传回给对应的实参。D3.C语言源程序名的后缀是( )A.exeB.cC.objD.cpB4.下列叙述中错误的是( )A.用户定义的标示符允许使用关键字。B.用户定义的标示符应做到“见名知意”。C.用户定义的标示符必须以字母或下划线开头。D.用户定义的标示符中大、小写字母代表不同标示。A5.下列关于函数的叙述正确的是( )A.每个函数都可以被其他的函数调用(包含main函数)。B.每个函数都可以被单独编译。C.每个函数都可以单独运行。D.在一个函数内部可以定义另一个函数。B6.下列不合法的用户标示符是( )A.j2_keyB._intC.4dD._8_C7.下列定义变量的语句中错误的是( )A.int _int;B.double int_;C.char for;D.float us$;D8.按照C语言规定的用户标示符命名规则,不能出现在标示符中的是( )A.大写字母B.连字符C.数字字符D.下划线B9.对于一个正常运行的C程序,下列叙述正确的是( )A.程序的执行总是起止于main函数。B.程序的执行总是从第一个函数开始,结束于main函数C.程序的执行总是从main函数开始,在最后一个函数结束D.程序的执行总是从第一个函数开始,在最后一个函数结