C语言期末练习题Word文档下载推荐.docx
《C语言期末练习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言期末练习题Word文档下载推荐.docx(29页珍藏版)》请在冰点文库上搜索。
![C语言期末练习题Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/a5ca12bf-ebbb-4125-9d90-07b6556def13/a5ca12bf-ebbb-4125-9d90-07b6556def131.gif)
(B)for(i=1;
){p=1;
p*=i;
i++;
}
(C)i=1;
p=1;
while(i<
=5){p*=i;
(D)i=1;
do{p*=i;
}while(i<
=5);
14.C语言规定else总是与配对。
(A)缩进位置相同的if(B)同一行上的if
(C)其之前最近的if(D)其之后最近的if
15.以下程序的运行结果为______。
main( )
{intn;
for(n=1;
n<
=10;
n++)
{if(n%3==0)continue;
printf(“%d”,n);
}
(A)12457810(B)369(C)12(D)12345678910
16.设x和y均为int型变量,则语句x+=y;
y=x-y;
x-=y;
的功能是。
(A)把x和y按从大到小排列(B)把x和y按从小到大排列
(C)无确定结果(D)交换x和y中的值
17.变量的指针,其含义是指该变量的_____
(A)值(B)地址(C)名(D)一个标志
18.以下函数调用语句中含有个实参。
func((e1,e2),(e3,e4,e5));
(A)2(B)3(C)5(D)语法错误
19.以下正确的描述是________
(A)continue语句的作用是结束整个循环的执行
(B)只能在循环体内和switch语句体内使用break语句
(C)在循环体内使用break语句或continue语句的作用相同
(D)goto语句只能用于退出多层循环
20.以下程序运行的结果是。
main()
{inta=2,b=3,c=2;
if(a<
b)
c)
c--;
else
c+=1;
printf(“%d\n”,c);
(A)0(B)1(C)2(D)3
21.inta[4]={2,3,4},I;
i=a[0]*a[1]+a[2]*a[3];
i的值为。
(A)2(B)4(C)6(D)10
22.以下正确的函数定义形式是。
(A)doublefun(intx,inty);
(B)doublefun(intx;
inty)
(C)doublefun(intx,inty)
(D)doublefun(intx,y)
23.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是。
(A)float型(B)int型(C)long型(D)double型
24.若有定义inta[4]={1,2,3};
请问a[a[a[0]]]的值是。
(A)1(B)2(C)3(D)4
25.以下正确的描述是____________
(A)函数的定义可以嵌套,函数的调用不可以嵌套
(B)函数的定义不可以嵌套,函数的调用可以嵌套
(C)函数的定义和函数的调用均不可以嵌套
(D)函数的定义和函数的调用均可以嵌套
26.以下不正确的说法是____________
(A)在函数内的复合语句中定义的变量在本函数范围内有效
(B)在不同函数中可以使用相同名字的变量
(C)形参是局部变量
(D)函数调用结束后,静态局部变量的值仍然保留。
27.已有定义:
intx=3,y=4,z=5;
则表达式!
(x+y)+z-1&
&
y+z/2的值是。
(A)6(B)0(C)2(D)1
28.main()
{intn[4]={1,2,3,4},k;
for(k=0;
k<
4;
k++)
{if(k/2)break;
n[k]++;
printf(“%d\n”,n[++k]);
执行后输出的结果是。
(A)2(B)3(C)4(D)5
29.判断字符串是否相等,应当使用。
(A)if(a==b)(B)if(a=b)(C)if(strcpy(a,b))(D)if(!
strcmp(a,b))
30.以下程序运行结果是。
voidsub(intx,inty,int*z)
{*z=y-x;
main()
{inta,b,c;
sub(11,7,&
a);
sub(5,a,&
b);
sub(a,b,&
c);
printf(“%d,%d,%d\n”,a,b,c);
(A)-4,-9,-5(B)-4,9,5(C)4,-9,-5(D)-4,9,-5
31.以下程序运行结果是。
{inta[2][3]={1,3,5,4,7,6},i,j,b=a[0][0];
for(i=0;
2;
i++)
for(j=0;
j<
3;
j++)
if(b<
a[i][j])
b=a[i][j];
printf(“%d\n”,b);
(A)5(B)7(C)4(D)1
32.以下程序运行结果是。
{chars[50]=”Iamastudent”,c;
inti,num=0,word=0;
c=s[i];
if(c==’’)word=0;
elseif(word==0)
{word=1;
num++;
printf(“%d\n”,num);
33.以下程序运行结果是。
#include<
string.h>
{chars[50]=”1234567”,*p=s;
inti;
i=*(p+5)-*(p+2);
printf(“%d\n”,i*strlen(s));
(A)21(B)24(C)14(D)28
34.以下程序运行结果是。
{inta[]={1,2,3,4,5,6,7,8,9},i,j,k;
for(i=0,j=8;
j;
i++,j--)
{k=a[i];
a[i]=a[j];
a[j]=k;
printf(“%d\n”,a[1]+a[5]);
(A)11(B)12(C)13(D)14
35.以下程序运行结果是。
{intx[]={1,2,3},s,*p=x,i;
for(i=0,s=1;
i++,p++)
s*=*p;
printf(“%d\n”,s);
(A)2(B)4(C)6(D)8
36.设有语句:
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
以下对数组a
中的数组元素的不正确引用是()。
Aa[p-a]B*(&
a[i])Cp[i]D*(&
(a+i))
37.下列程序的输出结果是()
stdio.h>
#defineMIN(x,y)(x)<
(y)?
(x):
(y)
{inti,j,k;
i=10;
j=15;
k=10*MIN(i,j);
printf(“%d\n”,k);
A15B100C10D150
38.以下描述中不正确的是()。
A数组是一批类型相同的若干个元素的集合
B数组的各个元素的类型可以不同
C数组在内存中占用一块连续的存储空间
D数组是一种构造类型
39.可用作C语言用户标识的一组标识符()。
AviodBa3_b3CForD2a
define_123-abcDO
WORDIFCasesizeof
40.已知i,j,k为int型变量,若从键盘输入1,2,3回车,使i的值为
1,j的值为2,k的值为3,以下选项中正确的输入语句是()。
Ascanf(“%2d%2d%2d”,&
i,&
j,&
k);
Bscanf(“%d%d%d”,&
Cscanf(“%d,%d,%d”,&
Dscanf(“i=%d,j=%d,k=%d”,&
41.与y=(x>
0?
1:
x<
-1:
0);
的功能相同的if语句是()。
Aif(x>
0)y=1;
Bif(x)
elseif(x<
0)y=-1;
if(x>
elsey=0;
elseif(x<
Cy=-1;
Dy=0;
if(x)if(x>
=0)
elseif(x==0)y=0;
elsey=-1;
42.下列程序输出的结果是()。
{inta=0,i;
for(i=1;
5;
i++){
switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
}}
printf(“%d\n”,a);
A31B13C10D20
43.下列程序中,while循环次数是()。
{inti=0;
while(i<
10){
if(i<
1)continue;
if(i==5)break;
i++;
A1B10C6D死循环,不能确定次数
44.以下说法中正确的是()。
AC语言程序总是从第一个函数开始执行
B在C语言程序中,要调用的函数必须在main()函数中定义
CC语言程序总是从main()函数开始执行
DC语言程序中的main()函数必须放在程序的开始部分
45.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是()。
A地址传递B值传递C由用户指定传递方式
D由实参传给形参,并由形参传回来给实参
46.设有:
int[10],i=5;
以下对数组元素引用不正确的是()。
Aa[9]BA[0]Ca[i]Da[i+5]
47.若有定义:
inti,j,*p=&
i,则与i=j等价的语句是()。
Ai=*p;
B*p=*&
Ci=&
Di=**p;
48.设a,b和c都是整型变量,且a=3,b=4,c=5;
则以下表达式中,值为0
的表达式是()。
Aa&
bBa<
=bCa||b+c&
b-cD!
((a<
b)&
!
c||1)
49、下面标识符中,不合法的用户标识符为()
A)PadB)a_10C)_12abD)int
50、调用scanf(“%d,%d”,&
a,&
时,正确的键盘输入是()
A)10,20B)a=10,b=20
C)10:
20D)1020
51、能表示条件0≤x≤100的表达式是()
A)0<
=x<
=100B.x>
=0,x<
=100
C)0≤x≤100D)x>
=0&
x<
52、设有:
inta=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>
b)&
(n=c>
d)后n的值为()
A)0B)1C)2D)3
53、下面不正确的字符串常量是()
A)'
abc'
B)"
12'
12"
C)"
0"
D)"
"
54、对字符串“Cat”进行完整赋值的操作是()
A)chars[3]={'
C'
'
a'
t'
};
B)chars[]="
Cat"
;
C)chars[3]={"
D)chars[3];
s="
55、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()
A)–3B)9C)–12D)6
56、设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是printf(“%d,%d\n”,x--,--y);
()
A)10,3B)9,3C)9,2D)10,2
57、在TurboC中,设inta[10];
假设数组a开始于内存2000单元,则a[2]的存储始于()
A)2002B)2004C)2006D)2008
58、在C语言中,引用数组元素时,其数组下标的数据类型允许是()
A)整型常量B)整型表达式
C)整型常量或整型表达式D)任何类型的表达式
59、若有ints[4]={1,2,3,4};
,则s[s[0]+2*s[2]-s[3]]的值是()
A)1B)2C)3D)4
60、用数组名作为函数的实参时,传递给形参的是()
A)数组的首地址B)数组的第1个元素
C)数组中的全部元素D)数组的元素个数
61、以下程序的输出结果是()
{charch[3][5]={"
AAAA"
"
BBB"
CC"
printf(“%s”,ch[1]);
A)"
BBBCC"
62、有以下程序段
intk=0;
while(k=1)k++;
while循环执行的次数是()
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行1次
63、设有以下说明语句
structstu
{inta;
floatb;
}stutype;
则下面的叙述不正确的是()
A)struct是结构体类型的关键字B)structstu是用户定义的结构体类型
C)stutype是用户定义的结构体类型名D)a和b都是结构体成员名
二、填空题
1、C语言程序的三种基本结构是、、。
2、一个C程序有且仅有一个函数。
3、C语言描述“x和y都大于或等于z”的表达式是。
4、C语言可以用来实现循环的结构化语句是、、。
5、数组名表示数组在内存的。
6、inta=3,*p=&
a;
*p+2的值是。
7、变量的作用域是指变量的有效范围,在作用域内可以引用该变量。
按作用域来说,变量可以分为__________变量和______变量。
8、如果程序中已有定义:
intk;
通过指针变量,将数值10赋值给k的
句是___________。
9、设a,b,c,d,m,n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则
逻辑表达式(m=a<
(n=c<
d)运算后,m,n的值分别为_________。
10、当函数的返回值的类型与函数定义的类型不一致时,系统
11、C语言中,变量是指
12、指针变量是把内存中另一个数据的_______作为其值的变量。
13、C语言源程序文件的后缀是,经过编译后,生成文件的后缀是,经过连接后,生成文件的后缀是。
14、若x为double型变量,请写出运算x=3.2,++x后表达式的值和
变量的值。
15、若有定义:
intx,a;
则语句x=(a=3,a+1);
运行后,x=,a=。
16、有下列程序段:
s=1.0;
for(k=1;
=10;
s=s+1.0/(k*(k+1));
printf(“%f\n”,s);
试填空,使下列的程序段的功能完全与之等同。
s=0.0;
__________;
d=0.0;
do{s=s+d;
_____________;
d=1.0/(k*(k+1));
}while(__________);
17、如果不指定精度,格式字符e,E和f默认输出小数点后____位小数。
18、下列程序的输出结果是()。
#include<
string>
{charb[30];
strcpy(&
b[0],”AB”);
b[1],”CDE”);
b[2],”FGH”);
printf(“%s\n”,b);
n
19、下列程序的功能是计算s=∑k!
请填空。
k=0
longf(intn)
{inti;
longs;
s=1;
_______;
i++)s*=i;
return_______;
{longs;
intk,n;
scanf(“%d”,&
n);
s=___________;
=n;
k++)s+=_______;
printf(“%ld\n”,s);
20、下列程序的输出结果是___________。
#defineN20
#defines(x)x*x
#definef(x)(x*x)
{inti1,i2;
i1=800/s(N);
i2=800/f(N);
printf(“%d%d\n”,i1,i2);
21、下列程序由两个文件组成,其运行结果是__________。
/*文件1*//*文件2*/
intx;
staticintx=5;
sub()main()
{{
x=8;
sub()
}printf(“x=%d\n”,x);
22、补充以下缺省的程序,实现求两个整型数的和:
intsum(intx,inty)
{
intz;
z=x+y;
return;
inta,b,s;
printf(“pleaseenteraandb:
”);
scanf(“%d%d”,&
s=
printf(“%d+%d=%d\n”,a,b,s);
三、阅读题(每小题5分,共20分)
1.写出下列程序的运行结果()。
{inta=100;
=50)
printf(“%d\n”,a<
=50);
elseif(a>
50)
printf(“%d\n”,a>
50);
2.写出下列程序的输出结果()。
{intn=‘b’;
switch(n)
{default:
printf(“error\n”);
break;
case‘a’:
case‘b’printf(“good\n”);
case‘c’:
printf(“pass\n”);
case‘d’:
printf(“warn\n”);
3.写出下列程序的运行结果()。
{inti,s=0;
i++)
s+=i;
4.写出下列程序的输出结果()。
{inti=10,j=0;
do
{j=j+1;
i--;
while(i>
2);
printf(“%d\n”,j);
5.有下列程序段,请写出运行结果。
func(intx)
{inty=13;
x=x+y;
returnx;
{intx=3;
func(x);
printf("
%d"
x+x);
输出:
6.有下面程序段,请写出运行结果
{intsum,j;
for(j=1;
=100;
j++){sum=0;
sum=sum+j;
printf(“sumis%d”,sum);
7.有下面程序段,请写出运行结果
floata=3.4;
intb;
b=a*3;
printf(“%d”,b);
8.