C语言期末复习题C语言的强化练习.docx
《C语言期末复习题C语言的强化练习.docx》由会员分享,可在线阅读,更多相关《C语言期末复习题C语言的强化练习.docx(27页珍藏版)》请在冰豆网上搜索。
C语言期末复习题C语言的强化练习
C语言期末复习题
1.构成C语言源程序的基本单位是_D___
A.子程序
B.过程
C.文本
D.函数
2.在一个C程序中,main()函数_B__
A.必须出现在所有函数之前
B.可以在任可地方出现
C.必须出现在所有函数之后
D.以上都不对
3.以下描述正确的是_A___
A.最简单的C源程序可以不包括任何内容。
B.编译程序对C源程序编译时不检查语法。
C.C程序中没有输入输出语句。
D.在C程序中,至少必须有一个main()函数。
4.C语言是一种___结构__化程序设计语言
结构
5.下面不正确的字符串常量是__A__
A.’AB’
B.”ab’ab”
C.”a”
D.”
“6.下面四个选项中均是合法的整型常量的是:
____A__
A.340,025,-11
B.02,0x,03f
C.-0X2A,985.768,4d2
D.0X15,0X2,-760x
7.设有定义:
inta=10;则表达式a+=a*=a的值是:
___D_
A.10
B.100
C.1000
D.200
8.设有如下定义:
inta=1,b=2,c=3,d=4,x=2,y=2;则表达式(x=a>b)&&(y=c>d)运算后,y的值为____B___
A.1
B.2
C.3
D.4
9.能正确表示逻辑关系“a大于等于10或小于等于0”的C语言表达式是__D__
A.a>=10ora<=0
B.a>=0|a<=10
C.a>=10&&a<=10
D.a>=10||a<=0
10.设m是int型变量,则表达式(m=2*3,m+4),m*3的值是__18____
11.以下程序段执行后z的值是__0__
intx,y,z;
x=1;y=2;z=1.0/y*x
答:
12.以下程序段的输出结果是__b__
main()
{charm;m=’B’+32;printf(“%c\n”,m);
}
则输出的结果是:
_____
13.表达式7/3*(int)3.14/(int)(1.2*(5+2.3))的数据类型为___整型__,表达式的值为_0____
整型
0
14.计算下列表达式的值:
设inta=3,b=4,c=5;floatk=3.6;
(1)
a/b*c=3/4*5=0
(2)a*b%c=3*4%5=2
(3)k/a+2*b=3.6/3+2*4=9.0
(4)(int)(k+6/a*b)=(int)(3.6+6/3*4)=11
(5)sizeof(a)=4
(6)a+=a*=a+b=42
(7)c%b-a/2=0
(8)!
(a*b-12)=1
(9)(a*b-2)==c+3=0
(10)c>b>a=0
15.若有以下语句组,则输出结果是_B__
intx=0;if(x++<0)printf(“%d”,--x);printf(“%d”,x++);
A.-1
B.1
C.-1
-1
D.-10
答:
16.以下程序的输出结果是:
__D
main(){
intx=3,y=0,z=0;
if(x=y+z)printf(“****”);elseprintf(“####”);
}
A.有语法错误不能通过编译
B.输出****
C.通过编译,但不能通过连接
D.输出####
答案
17.以下程序的运行结果是:
__yis1
_Idothis_
main()
{intx=1,y=1;
switch(x)
{
case1:
switch(y)
{
case0:
printf(“yis0.\n”);break;
case1:
printf(yis1.\n”);break;
default:
printf(“yisunknown.\n”);break;
}
case2:
printf(“Idothis.\n”);
}
}
答案:
Idothis
18.C语言中,while与do—while语句的主要区别是__A__
A.do—while的循环体至少无条件执行一次。
B.do-while允许从外部跳到循环体内。
C.while循环体至少无条件执行一次。
D.while的循环控制条件比do-while的严格。
答案:
19.以下说法正确的是__D__
A.C语言中不能使用do-while语句构成的循环
B.do-while语句构成的循环必须用break语句才能退出。
C.do-while语句构成的循环,当while后圆括号内的表达式的值为非零时结束循环。
D.do-while语句构成的循环,当while后圆括号内的表达式值为零时结束循环。
答案
20.下面关于for语句的正确描述为:
(D )
A.for语句只能用于循环次数已经确定的情况
B.for语句是先执行循环体语句,再判断表达式
C.在for语句中,不能用break语句跳出循环体。
D.在for语句的循环体语句中,可以包含多条语句,但必须用大括号括起来。
答案:
21对于for(表达式1;;表达式3)可以理解为__B___
A.for(表达式1;0;表达式3)
B.for(表达式1;1;表达式3)
C.for(表达式1;表达式1;表达式3)
D.for(表达式1;表达式3;表达式3)
22.以下程序执行后,输出“#”号的个数是:
___C__
main()
{inti,j;for(i=1;i<5;i++)
for(j=2;j<=i;j++)printf(“#”);
}
A.0
B.4
C.6
D.7
答案:
23.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为__B__
for(i=0,j=10;i<=j;i++,j--)k=i+j;
A.9
B.10
C.11
D.12
答案
24以下程序输出的结果是:
____0122_
main()
{
inti;
for(i=0;i<3;i++)
switch(i)
{
case1:
printf(“%d”,i);
case2:
printf(“%d”,i);
default:
printf(“%d”,i);
}
}
答案:
25.请填入一个整数,使以下程序段输出10个整数。
for(i=0;i<=__20_;printf(“%d\n”,i+=2));
答案:
26编程序打印所有的水仙花数。
所谓水仙花数是指一个3位数,其各位数字的立方和等于该数。
如:
153是一个水仙花数,因为153=1*1*1+5*5*5+3*3*3。
#include
main()
{inti,j,k,n;
for(i=100;i<1000;i++)
{
j=i/100;
k=i%100/10;
n=i%100%10;
if(i==j*j*j+k*k*k+n*n*n)
printf(“%d\n”,i);
}
}
27.打印出以下图案:
*
***
*****
*******
#include
main()
{inti,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++)printf(““);
for(j=1;j<=2*i-1;j++)printf(“*”);
printf(“\n”);
}
}
28.以下描述正确的是__D__
A.return语句是函数中不可缺少的语句
B.函数中不可以有多条return语句
C.函数中,return后面一定要有表达式。
D.函数返回值一定要通过return语句返回。
答案
29.一个函数返回值的类型取决于__C__
A.定义函数时指定或缺省的函数类型
B.调用该函数时临时指定
C.调用该函数的主调函数的类型
D.return语句中表达式的类型
答案
30.以下叙述正确的是___B_
A.一个源程序中只能有一条文件包含命令。
B.预处理命令都必须以“#”开头
C.预处理命令必须定义在程序的头部。
D.以下是正确的宏定义:
#defineIBM-PC
答案:
B
31.以下程序的输出结果是__D__
#include“stdio.h”
intfun(inta,intb)
{
returna+b;
}
voidmain()
{
intx=2,y=5,z=8,r;
r=fun(fun(x,y),z);
printf(“%d”,r);
}
A.12
B.13
C.14
D.15
32.以下程序的输出结果是__A_
#include
intf(intn)
{if(n>2)
return(f(n-1)+f(n-2));
elsereturn2;}
voidmain()
{printf(“%d\n”,f(3));}
A.4
B.6
C.2
D.8
33.以下程序的输出结果是:
___2510=2__
voidmain()
{
inta,b,c;
a=10;b=25;c=f(a,b);
printf(“%d/%d=%d”,b,a,c);
}
f(intm,intn)
{return(n/m);}
答案:
1)以下符合C语言语法的实型常量是(B)
A)1.2E0.5
B)3.14.159E
C).5E-3
D)E15
2)给出以下定义:
charx[]="abcdefg";
chary[]={'a','b','c','d','e','f','g'};
则正确的叙述为(B)
A)
数组X和数组Y等价
B)
数组X的长度大于数组Y的长度
C)
数组x和数组Y的长度相同
D)
数组X的长度小于数组Y的长度
3)不能把字符串:
Hello!
赋给数组b的语句是(A
)
A)charb[10]={'H','e','l','l','o','!
'};
B)charb[10];strcpy(b,"Hello!
");
C)charb[10]="Hello!
";
D)charb[10];b="Hello!
";
4)若有以下说明:
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='a',d,g;
则数值为4的表达式是(D
)
A)a[g-c]
B)a[4]
C)a['d'-'c']
D)a['d'-c]
5)设有定义:
inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是(D
)
scanf(“%d”,pa);
scanf(“%d”,a);
scanf(“%d”,&pa);
scanf(“%d”,*pa);
6)若有以下函数调用语句
fun(a+b,(x,y),fun(n+k,d,(a,b)));
在此函数调用语句中实参的个数是(A)
A)3
B)4
C)5
D)6
7)有以下程序
voidfun(inta,intb,intc)
{a=456;b=567;c=678;}
main()
{
intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d.%d",x,y,z);
}
输出结果是(B
)
A)30,20,10
B)10,20,30
C)456,567,678
D)678,567,456
8)定义如下变题和数组:
inti;
intx[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是:
(B
)
for(i=0;i<3;i++)printf("%d",*x[2-i]);
A)159
B)741
C)357
D)369
9)以下程序运行后,输出结果是(A)
intd=1;
fun(intp)
{
intd=5;
d+=p++;
printf("%d",d);
}
main()
{
inta=3;
fun(a);
d+=a++;
printf("%d\n",d);
}
A)84
B)99
C)95
D)44
10)下面程序的输出是(B)
A)3
B)4
C)6
D)9
fun3(intx)
{staticinta=3;
a+=x;
return(a);
}
main()
{intk=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf("%d\n",n);}
11)当调用函数时,实参是一个数组名,则向函数传送的是(C)
A)数组的长度
B)数组每一个元素的地址
C)数组的首地址
D)数组每个元素中的值
12)以下程序
voidsort(inta[],intn)
{inti,j,t;
for(i=0;ifor(j=i+1;jif(a}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=0;i<10;i++)printf("%d,",aa);
printf("\n");
}
程序运行后的输出结果是(A)。
A)1,2,3,4,5,6,7,8,9,10,
B)1,2,3,8,7,6,5,4,9,10,
C)10,9,8,7,6,5,4,3,2,1,
D)1,2,10,9,8,7,6,5,4,3,
13)以下程序的输出结果是(B)
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;
}
main()
{inti,j=0;
for(i=1;i<3;i++)j+=f(i);
printf("%d\n",j);
}
A)4
B)3
C)2
D)1
14)有程序段如下:
voidreverse(inta[],intn)
{inti,t;
for(i=0;i{t=a;a=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b;
printf("%d\n",s);
}
程序运行后的输出结果是____A__。
A)22
B)10
C)34
D)30
15)有以下程序
main()
{intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,3,9,6}};
inti,s=0;
for(i=0;i<4;i++)s+=aa[1];
printf("%d\n",s);
}
程序运行后的输出结果是____D__。
A)11
B)19
C)13
D)20
16)有以下程序
main()
{inti,a[10],s=0;
for(i=1;i<10;i++)a=i;
for(i=1;i<10;i+=2)s+=a+1;
printf(“%d\n”,s);
}
程序执行后的输出结果是(D)
A)自然数1~9的累加和
B)自然数1~10的累加和
C)自然数1~9中的奇数之和
D)自然数1~10中的偶数之和
17)有以下程序
intf(intb[][4])
{inti,j,s=0;
for(j=0;j<4;j++)
{i=j;
if(i>2)i=3-j;
s+=b[j];
}
returns;
}
main()
{inta[4][4]={{1,2,3,4},{0,2,4,5},
{3,6,9,12},{3,2,1,0}};
printf(“%d\n”,f(a));
}执行后的输出结果是(B)
A)12
B)11
C)18
D)16
18)以下程序的输出结果是(A)
#include
#include
main()
{
charstr[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str));
}
A)6
B)7
C)11
D)12
19)有以下定义
#include
chara[10],*b=a;
不能给数组a输入字符串的语句是B
A)gets(A)
B)gets(a[0])
C)gets(&a[0])
D)gets(B)
20)语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是(C)
A)a\bre\'hi\'y\\\bou
B)a\bre\'hi\'y\bou
C)re'hi'you
D)abre'hi'y\bou
21)下面程序的功能是输出以下形式的金字塔图案:
*
***
*****
*******
main()
{inti,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++)printf(““);
for(j=1;j<=_______;j++)printf(“*”);
printf(“\n”);
}
}
在下划线处应填入的是(B)
A)i
B)2*i-1
C)2*i+1
D)i+2
22)有以下程序
main()
{
chark;
int
I;
for(i=1;i<3;i++)
{
scanf(“%c”,&k);
switch(k)
{case‘0’:
printf(“another\n”);
case‘1’:
printf(“number\n”);
}
}}
程序运行时,从键盘输入:
01<回车>,程序执行后的输出结果是(A
)
A)anotherB)anotherC)anotherD)number
number
number
number
number
another
number
23)若程序中定义了以下函数
doublemyadd(doublea,doubleb)
{return(a+b);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(A)
A)doublemyadd(doublea,b);
B)doublemyadd(double,double);
C)doublemyadd(doubleb,doublea);
D)doublemyadd(doublex,doubley);
24)下面的程序(D)
main()
{intx=3,y=0,z=0;
chara[]="****",b[]="####";
if(x=y+z)printf("%s",a);
else
printf("%s",b);}
A)有语法错误不能通过编译
B)输出****。
C)可以通过编译,但是不能通过连接,因而不能运行。
D)输出####。
25)有以下程序(提示:
程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)
#include
main()
{FILE*fp;
inti,a[4]={1,2,3,4},b;
fp=fopen("data.dat","wb");
for(i=0;i<4;i++)
fwrite(&a,sizeof(int),1,fp);
fclose(fp);
fp=fopen("data.dat","rb");
fseek(fp,-2L*sizeof(int).SEEK_END;
fread(&b,sizeof(int),1,fp);
/*从文件中读取sizeof(int)字节的数据到变量b中*/
fclose(fp);
printf("%d\n",B);
}
执行后输出结果是(C)
A)2
B)1
C)4
D)3
26)请读程序:
#include
inta[]={2,4,6,8};
main()
{inti;
for(i=0;i<4;i++)a=a++;
printf("%d\n",a[2]);
}
上面程序的输出结果是(A)
A)6
B)8
C)4
D)2
27)有以下程序
charfun(charx,chary)
{if(xreturny;
}
main()
{inta=’9’,b=’8’,c=’7’;
printf(“%c\n”,fun(fun(a,b),fun(b,c)));
}程序的执行结果是(D)
A)函数调用出错
B)8
C)9
D)7
28)有以下程序
strucSTU
{charname[10];
intnum;
};
voidf1(structSTUC)
{structSTU
b={“LiSiGuo”,2042};
c=b;
}
voidf2(structSTU*C)
{structSTU
b={“SunDan”,2044};
*c=b;
}
main()
{struct
STUa={“YangSan”,2041},b={“WangYin”,2043};
f1(A);f2(&B);
printf(“%d%d\n”,a.num,b.num);
}
执行后的输出结果是C
A)20412044
B)20412043
C)20422044
D)20422043
29)有以下程序
voidswap1(intc[])
{intt;
t=c[0];c[0]=c[1];c[1]=t;
}
voidswap2(intc0,intc1)
{intt;
t=c0;c0=c1;c1=t;
}
main()
{inta[2]={3,5},b[2]={3,5};
swap1(a);swap2(b[0],b[1]);
printf(“%d%d%d%d\n”,a[0],a[1],b[0],b[1]);
}
其输出结果是(A)
A)5353
B)5335
C)3535
D)3553
30)以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。
#include
voi