c语言题目及答案.docx
- 文档编号:11931591
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:26
- 大小:32.38KB
c语言题目及答案.docx
《c语言题目及答案.docx》由会员分享,可在线阅读,更多相关《c语言题目及答案.docx(26页珍藏版)》请在冰豆网上搜索。
c语言题目及答案
考试题型
一、单项选择题(30分)
二、填空题(20分)
三、阅读程序写结果(20分)
四、编程序题(30)
复习题一
一、选择题
1.下列说法中正确的是。
A.C语言程序由主函数和0个或多个函数组成
B.C语言程序由主程序和子程序组成
C.C语言程序由子程序组成
D.C语言程序由过程组成
2.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次为。
A.3,3,2B.3,2,2C.3,2,3D.2,3,2
3.设有inti=010,j=10;则printf("%d,%d\n",++i,j--);的输出的是。
A.11,10B.9,10C.010,9D.10,9
4.设a、b为字符型变量,执行scanf("a=%c,b=%c",&a,&b);后使a为'A',b为'B',从键盘上的正确输入是。
A.'A''B'B.'A','B'C.A=A,B=BD.a=A,b=B
5.已知intx=12,y=3;执行下述程序后,变量x的值是____。
do{x/=y--;}while(x>y);
A.1B.2C.3D.程序运行有错误
6.C语言中while和do-while循环的主要区别是。
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
7.设x和y均为int型变量,则执行下面的循环后,y的值为。
for(y=1,x=1;y<=50;y++){
if(x>=10)break;
if(x%2==1){x+=5;continue;}
x-=3;
}
A.2B.4C.6D.8
8.以下正确的说法是____。
A.用户若需调用标准函数,调用前必须重新定义
B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C.系统根本不允许用户重新定义标准函数
D.用户若需要调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
9.若调用一个函数,且此函数中没有return语句,则关于该函数正确的说法是___。
A.没有返回值
B.能返回若干个系统默认值
C.能返回一个用户所希望的函数值
D.返回一个不确定的值
10.已知函数定义如下:
floatfun1(intx,inty)
{floatz;
z=(float)x/y;
return(z);
}
主调函数中有inta=1,b=0;可以正确调用此函数的语句是____。
A.printf("%f",fun1(a,b));B.printf("%f",fun1(&a,&b));
C.printf("%f",fun1(*a,*b));D.printf("%f",fun1(b,a));
11.宏定义:
#definePI31.14159中,宏名PI代替______。
A.单精度B.双精度C.常量D.字符串
12.若有以下数组说明,则数值最小和最大的元素下标分别是。
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
A.1,12B.0,11C.1,11D.0,12
13.以下合法的数组定义是。
A.inta[3][]={0,1,2,3,4,5};B.inta[][3]={0,1,2,3,4};
C.inta[2][3]={0,1,2,3,4,5,6};D.inta[2][3]={0,1,2,3,4,5,};
14.函数调用:
strcat(strcpy(str1,str2),str3);的功能是。
A.将字符串str1复制到字符串str2中后再连接到字符串str3之后。
B.将字符串str1连接到字符串str2之后再复制到字符串str3之后。
C.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后。
D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中。
15.设有二维数组定义如下,则不正确的数组元素引用是。
inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
A.a[2][3]B.a[a[0][0]][1]C.a[7]D.a[2][‘c’-‘a’]
16.若用数组名作为函数调用时的实参,则实际上传递给形参的是。
A.数组首地址B.数组的第一个元素值
C.数组中全部元素的值D.数组元素的个数
17.以下对指针变量进行操作的语句,正确的选项是。
A.int*p,*q;q=p;B.inta,*p,*q;q=&a;p=*q;
C.inta=b=0,*p;p=&a;b=*p;D.inta=20,*p,*q=&a;p=q;
18.若有以下定义和语句:
ints[4][5],(*ps)[5];ps=s;
则对s数组元素的正确引用形式是。
A.ps+1B.*(ps+3)
C.ps[0][2]D.*(ps+1)+3
19.当说明一个共用体变量时系统分配给它的存储容量是。
A.共用体中最后一个成员所需的存储容量
B.共用体中第一个成员所需的存储容量
C.成员中占存储量最大者所需的存储容量
D.各成员所需存储容量的总和
20.有定义如下:
structstudent
{intage;
charnum[8];
}stu[3]={{20,"200401"},{21,"200402"},{10,"200403"}};
structstudent*p=stu;
以下选项中引用结构体变量成员的表达式错误的是。
A.(p++)->numB.p->num
C.(*p).numD.stu[3].age
二、填空题
1.设a=3,b=2,c=1,则a>b的值为,a>b>c的值为。
2.若w,x,y,z,m均为int型变量,则执行下面程序段后的m值是。
w=1;x=2;y=3;z=4;
m=(w w: x; m=(m m: y; m=(m m: Z; 3.下面程序的输出结果是____。 #include main() {inta=1,b=0; do{ switch(a) {case1: b=1;break; case2: b=2;break; default: b=0; } b=a+b; }while(! b); printf("a=%d,b=%d",a,b); } 4.下面程序的输出结果是____。 #include main() {intx,i; for(i=1;i<=100;i++){ x=i; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf("%d",x); } } 5.下面程序的输出结果是____。 #include intfunc(inta,intb) {intc; c=a+b; return(c); } voidmain() {intx=6,y=7,z=8,r; r=func((x--,y++,x+y),z--); printf("%d\n",r); } 6.下面程序的输出结果是____。 #include voidmain() {intx=1; voidf1(),f2(); f1(); f2(x); printf("%d\n",x); } voidf1(void) {intx=3; printf("%d",x); } voidf2(x) intx; {printf("%d",++x); } 7.程序中有定义: #defineS(r)r/r inta=4,b=3,area; 则表达式area=S(a+b)的值为_______。 三、程序完善题 1.以下程序的功能是计算分段函数y的值。 请完善程序。 #include voidmain() {intx,c,m; floaty; scanf(“%d”,&x); if( (1))c=-1; elsec= (2); switch(c) {case–1: y=0;break; case0: y=x;break; case1: y=10;break; case2: case3: y=-0.5*x+20;break; default: y=-2; } if((3))printf(“y=%f”,y); elseprintf(“error\n”); } 2.有以下程序段: s=1.0; for(k=1;k<=n;k++) s=s+1.0/(k*(k+1)); printf("%f\n",s); 填空完成下述程序,使之与上述程序的功能完全相同。 s=0.0; (1); k=0; do{ s=s+d; (2); d=1.0/(k*(k+1)); }while((3)); printf("%f\n",s); 3.根据以下嵌套的if语句说给条件,填写switch语句,使它完成相同的功能。 (假设score的取值在1~100之间。 ) if语句: if(score<60)k=1; elseif(score<70)k=2; elseif(score<80)k=3; elseif(score<90)k=4; elseif(score<=100)k=5; switch语句: switch( (1)) { (2): k=1;break; case6: k=2;break; case7: k=3;break; case8: k=4;break; (3): k=5; } 4.输入2个整数,输出它们的最小公倍数和最大公约数。 请完善程序。 #include voidmain() {intm,n,gbs,gys; scanf( (1)); for(gbs=m; (2);gbs=gbs+m); gys=(3); printf(“gbs=%d\tgys=%d\n”,gbs,gys); } 5.下面函数的功能是判断一个数是否为素数。 请完善程序。 voidf(intm) {intm,i,k; k=__ (1)__; for(i=2;i<=_ (2)__;i++) if(__(3)__)break; if(__(4)__)printf(“是素数”); elseprintf(“非素数”); } 6.一个5位数,判断它是不是回文数。 即12321是回文数,个位与万位相同,十位与千位相同。 请完善程序。 voidfun(longx) {longge,shi,qian,wan; wan= (1); qian=___ (2)__; shi=___(3)___; ge=x%10; if(__(4)__) printf("thisnumberisahuiwen\n"); elseprintf("thisnumberisnotahuiwen\n"); } 四、程序设计题 1.编写程序计算分段函数y值。 2.编写程序,输入一个字符串,求该字符串的有效长度。 要求不能使用系统函数。 3.编写程序实现,将键盘输入的一个十进制整数转换为2进制数并输出。 参考答案: 一、选择题 1 2 3 4 5 6 7 8 9 10 A C B D D A C B A D 11 12 13 14 15 16 17 18 19 20 D B B C C A C C C D 二、填空题 1、10 2、13、a=1,b=2 4、25675、21 6、3217、7 三、程序完善题 1、x<0x/10x<40 2、d=1k++k<=n 3、score/10case0,1,2,3,4,5: default 4、“%d%d”,&m,&ngbs%n! =0m*n/gbs 5、m/2km%i==0i<=k 6、x/10000(x%10000)/1000(x%100)/10wan==ge&&qian=shi 四、程序设计题 1、#include voidmain() {floatx,y; scanf(“%f”,&x); if(x>0)y=exp(-x); elseif(x==0)y=1; elsey=-exp(x); printf(“%f”,y); } 2、#definemax20; voidmain(){ charstr[max]; intlen; scanf(“%s”,str); for(len=0;str[len]! =0;len++) ; printf(“%d”,len); } 3、#include voidmain(){ unsignedn; charstr[10],t; intk,i,j; printf(“pleaseinput: ”); scanf(“%u”,&n); for(i=0;n! 0;i++) { str[i]=n%2+’0’; n/=2; } str[i]=’\0’; printf(“theresultis: ”); for(k=0,j=i-1;k {t=str[k];str[k]=str[j];str[j]=t;} puts(str); } 复习题二 一、选择题 1.字符串"ABC"在内存占用的字节数是。 A.3B.4C.6D.8 2.设整型变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m和n的值是。 A.0,0B.0,1C.1,0D.1,1 3.a是int类型变量,c是字符变量。 下列输入语句中哪一个是错误的。 A.scanf("%d,%c",&a,&c);B.scanf("%d%c",a,c); C.scanf("%d%c",&a,&c);D.scanf("d=%d,c=%c",&a,&c); 4.字符变量ch='A',int类型变量k=25,执行printf("%3d,%d3\n",ch,k);的输出为: 。 A.65,253B.65253C.65,25D.A25 5.已知inti=1,j=0;执行下面语句后j的值是____。 while(i) switch(i) {case1: i+=1;j++;break; case2: i+=2;j++;break; case3: i+=3;j++;break; default: i--;j++;break; } A.1B.2C.3D.死循环 6.C语言中while和do-while循环的主要区别是。 A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 7.设x和y均为int型变量,则执行下面的循环后,y的值为。 for(y=1,x=1;y<=50;y++){ if(x>=10)break; if(x%2==1){x+=5;continue;} x-=3; } A.2B.4C.6D.8 8.在C语言中,函数的数据类型是指____。 A.函数返回值的数据类型B.函数形参的数据类型 C.调用该函数时的实参的数据类型D.任意指定的数据类型 9.在c语言中以下不正确的说法是___。 A.实参可以是常量、变量或表达式 B.形参可以是常量、变量或表达式 C.实参可以为任意类型 D.形参应与其对应的实参类型一致 10.已知函数定义如下: floatfun1(intx,inty) {floatz; z=(float)x/y; return(z); } 主调函数中有inta=1,b=0;可以正确调用此函数的语句是____。 A.printf("%f",fun1(a,b));B.printf("%f",fun1(&a,&b)); C.printf("%f",fun1(*a,*b));D.printf("%f",fun1(b,a)); 11.宏定义的宏展开是在_______阶段完成的。 A.第一遍编译B.第二遍编译 C.程序执行D.预编译 12.若有以下数组说明,则数值最小和最大的元素下标分别是。 inta[12]={1,2,3,4,5,6,7,8,9,10,11,12}; A.1,12B.0,11C.1,11D.0,12 13.以下合法的数组定义是。 A.inta[3][]={0,1,2,3,4,5};B.inta[][3]={0,1,2,3,4}; C.inta[2][3]={0,1,2,3,4,5,6};D.inta[2][3]={0,1,2,3,4,5,}; 14.函数调用: strcat(strcpy(str1,str2),str3);的功能是。 A.将字符串str1复制到字符串str2中后再连接到字符串str3之后。 B.将字符串str1连接到字符串str2之后再复制到字符串str3之后。 C.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后。 D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中。 15.设有二维数组定义如下,则不正确的数组元素引用是。 inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; A.a[2][3]B.a[a[0][0]][1]C.a[7]D.a[2][‘c’-‘a’] 16.若用数组名作为函数调用时的实参,则实际上传递给形参的是。 A.数组首地址B.数组的第一个元素值 C.数组中全部元素的值D.数组元素的个数 17.以下对指针变量进行操作的语句,正确的选项是。 A.int*p,*q;q=p;B.inta,*p,*q;q=&a;p=*q; C.inta=b=0,*p;p=&a;b=*p;D.inta=20,*p,*q=&a;p=q; 18.若有以下定义和语句: ints[4][5],(*ps)[5];ps=s; 则对s数组元素的正确引用形式是。 A.ps+1B.*(ps+3) C.ps[0][2]D.*(ps+1)+3 19.当说明一个结构体变量时,系统分配给它的存储容量是。 A.结构体中最后一个成员所需的存储容量 B.结构体中第一个成员所需的存储容量 C.成员中占存储量最大者所需的存储容量 D.各成员所需存储容量的总和 20.有定义如下: structsk {inta; floatb; }data,*p; 如果有: p=&data;则对于结构体变量data的成员a的正确引用是____。 A.(*p).data.aB.(*p).aC.p->data.aD.p.data.a 二、填空题 1.设a=3,b=2,c=1,则a>b的值为,a>b>c的值为。 2.设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为。 3.以下程序段的输出结果是。 inta=10,b=50,c=30; if(a>b) a=b; b=c; c=a; printf("a=%db=%dc=%d\n",a,b,c); 4.以下程序的输出结果是。 #include voidmain() {intx=2,y=-1,z=2; if(x if(y<0)z=0; elsez+=1; printf("%d\n",z); } 5.下面程序的输出结果是____。 #include intfunc(inta,intb) {intc; c=a+b; return(c); } voidmain() {intx=6,y=7,z=8,r; r=func((x--,y++,x+y),z--); printf("%d\n",r); } 6.下面程序的输出结果是____。 #include voidmain() {intx=1; voidf1(),f2(); f1(); f2(x); printf("%d\n",x); } voidf1(void) {intx=3; printf("%d",x); } voidf2(x) intx; {printf("%d",++x); } 7.以程序的输出结果是_______。 #defineMA(x)x*(x-1) #include voidmain() {inta=1,b=2; pirntf(“%d\n”,MA(1+a+b)); } 三、程序完善题 1.下列程序计算并输出方程X2+Y2+Z2=1989的所有整数解。 请完善程序。 #include voidmain() { (1); for(i=-45;i<=45;i++) for( (2)) for(k=-45;k<=45;k++) if((3)) printf(“%4d%4d%4d\n”,i,j,k); } 2.有以下程序段: s=1.0; for(k=1;k<=n;k++) s=s+1.0/(k*(k+1)); printf("%f\n",s); 填空完成下述程序,使之与上述程序的功能完全相同。 s=0.0; (1); k=0; do{ s=s+d; (2); d=1.0/(k*(k+1)); }while((3)); printf("%f\n",s); 3.根据以下嵌套的if语句说给条件,填写switch语句,使它完成相同的功能。 (假设score的取值在1~100之间。 ) if语句: if(score<60)k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 题目 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)