C语言练习题陈树振Word格式文档下载.docx
《C语言练习题陈树振Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言练习题陈树振Word格式文档下载.docx(26页珍藏版)》请在冰点文库上搜索。
【11】以下错误的转义形式的字符类型数据是()
A.'
\\'
B.'
\'
'
C.'
\'
D.'
\0'
*【26】设x和y均为int型变量,则以下语句:
x+=y;
y=x-y;
x-=y;
的功能是()
A.把x和y按从大到小排序B.把x和y按从小到大排序
C.无确定结果D.交换x和y中的值
【15】已知inti,a;
执行语句:
i=(a=2*3,a*5),a+6;
后,变量i的值是()
【28】已知在字母A的ASCII代码为65,以下程序的输出结果是()
#include<
stdio.h>
intmain()
{charc1='
A'
c2='
D'
;
printf("
%d,%d\n"
c1,c2);
return0;
}
【29】下面程序的输出是()
{
intx=10,y=10;
%d,%d,"
x--,--y);
x,y);
*【22】sizeof(double)是()。
第2部分C语句
【4.1】以下选项中不是C语句的是()
A.{inti;
i++;
printf("
%d\n"
i);
}
B.;
C.a=5,c=10;
D.{;
E.{}
【4.2】下列属于C语句的是()。
A.printf("
a)
B.#include<
C.{a=b;
b=c;
c=a;
D./*thisisaprogram*/
【4.8】{a=3;
c+=a-b;
}在语法上被认为是条语句。
空语句的形式是。
第3部分printf和scanf
【4.3】若inta,b,c;
则为它们输入数据的正确输入语句是()
A.read(a,b,c);
B.scanf("
%d%d%d"
a,b,c);
C.scanf("
%D%D%D"
&
a,&
b,&
c);
D.scanf("
【4.4】若floata,b,c;
要通过语句:
scanf("
%f%f%f"
&
a,&
b,&
分别为a,bc输入10,22,33。
以下不正确的输入形式是()
A.10B.10.0,22.0,33.0C.10.0D.1022
2222.033.033
33
第4部分关系运算和逻辑运算及选择运算符
填空题
【27】关系运算的运算结果是()
【21】已知:
inta=4,b=5;
则执行表达式:
a=a>
b后,变量a的值是()
A.0B.1C.4D.5
【17】已知:
charc='
inti=1,j;
执行语句j=!
c&
&
i++;
后,i和j的值是()
A.1,1B.1,0C.2,1D.2,0
【5.2】对于逻辑表达式:
1<
=x<
=2
A.当x的值大于等于1同时小于等于2时,表达式的值为真。
B.x的值为任何值,表达式的值均为真。
C.x的值为任何值,表达式的值均为假。
D.此表达式非法。
【5.3】设a为int型变量,则不能表示数学关系|a|>
10的表达式是()
A.a>
10||a<
-10B.a>
10|a<
-10C.!
(a>
=-10&
a<
=10)D.!
(a<
=10)||a<
-10
【5.4】分析下面程序执行的结果:
main()
{inta=3,b=7;
b%a);
/*输出为:
*/
!
a>
b);
a+b);
/*输出为:
a&
【5.5】要判断char型变量m是否是数字字符,可以使用下列表达式()
A.0<
=m&
m<
=9B.'
0'
<
='
9'
C."
0"
="
9"
D.前面三个答案都是错误的
【24】下列运算符中,运算优先级最高的是()
A.==B.%C)?
:
D.++
【18】已知:
intx=1,y=2,z;
则执行:
z=x>
y?
++x:
++y;
后,z的值为()
A.1B.2C.3D.4
*【25】运行下面的程序后,a的值是()
inta,x=10,y=9;
a=(--x==y)?
x+1:
y+2;
第5部分选择结构程序设计
【5.6】if语句的控制条件()
A.只能用关系表达式B.只能用关系表达式或逻辑表达式
C.只能用逻辑表达D.可以用任何表达式
【5.7】执行下列程序段后,x、y、z的值分别是()
#include<
intmain()
{intx=10,y=20,z=30;
if(x>
y)
{z=x;
x=y;
y=z;
return0;
}
【5.8】若执行以下程序时从键盘输入3,4,则输出结果是()
inta,b,s;
scanf("
%d,%d"
s=a;
if(a<
b)
s=b;
s*=s;
s);
【5.9】若a和b均是整型变量,以下语法正确的switch语句是()
A.switch(a/b)B.switch(a*a+b*b);
{case1:
case3.2:
y=a+b;
break;
{case3:
case0:
case5:
y=a-b;
casea:
}case0:
y=b-a;
C.switchaD.switch(a+b)
{default:
x=a+b;
break;
{case10:
case10:
case11:
case11:
y=a*b;
}}
【5.11】if语句的表达式只有其值为时表示逻辑“真”,其值为时表示逻辑“假”
【5.13】用逻辑表达式表示数学中的:
|x|>
4,其表达式应为__________________
【5.14】用逻辑表达式表示数学中的:
|x|<
【5.15】用逻辑表达式表示数学中的:
=4,其表达式应为__________________
【5.16】用逻辑表达式表示数学中的:
=4,其表达式应为____________________
【5.17】以下程序的输出是。
inta=1,b=2,c=3;
if(a=b>
c)
***a=%d\n"
a);
else
$$$a=%d\n"
【5.18】改错题:
以下程序求3个整数中的最小值,程序是否有错?
若有错,请改正。
{inta,b,c;
%d,%d,%d"
a,b,c);
b)&
c)
min=%d\n"
if(b<
a)&
(b<
b);
if(c<
(c<
b)
c);
第6部分循环结构程序设计
【6.1】执行语句for(i=1;
i<
4;
i++);
后,i的值是()
A.3B.4C.5D.不定
【6.2】执行语句for(i=1;
i++<
);
【6.3】运行下列程序段的输出结果是()
m='
a'
while(!
m)
%c"
m);
A.aB.aaa…C.不输出任何信息D.'
【6.4】在下列选项中,没有构成死循环的程序段是()
A.inti=100;
B.for(;
);
while
(1)
{i=i%100+1;
if(i>
100)
break;
C.intk=10;
D.ints=36;
do{while(s);
--s;
++k;
}while(k>
=100);
【6.5】阅读程序段:
执行下列程序段后输出是()
intx;
for(x=10;
x>
7;
x--)
if(x%3)
x--;
%d"
x);
【6.6】下列说法中正确的是()
A.break只用在switch语句中,而contine用在循环语句中
B.break只用在循环语句中,而contine用switch语句在中
C.break能结束循环,而contine只能结束本次循环
D.contine能结束整个循环过程,而break只能结束本次循环
【6.7】若有:
do{i=a-b++;
i);
}while(!
i);
则while中的!
i可用()代替。
A.i==0B.i!
=1C.i!
=0D.以上均不对
【6.8】以下while循环执行的次数是()
k=0;
while(k=10)
k=k+1;
【6.9】有以下程序片段,请问执行后的输出结果是()
#include<
intmain()
{
intn=10;
while(n>
7)
{printf("
n--);
【6.11】以下循环语句执行的次数是()
inti,j;
for(i=5;
i;
i--)
for(j=0;
j<
j++){......}
【6.12】下列程序的输出结果是()
inti=0,sum=0;
do{
sum+=i;
}while(i<
5);
sum);
第7部分数组
【7.1】若定义inti,*p;
使p指向i的赋值语句是()
A.p=&
B.*p=&
C.*p=i;
D.p=*&
【7.2】合法的数组定义是()
A.chara={'
H'
'
e'
l'
o'
};
B.chara[5]={"
H"
"
e"
l"
o"
C.chara[5]={'
D.chara[5]="
Hello"
;
【7.3】下列一维数组说明中,正确的是()
A.#defineSIZE8
floatb[SIZE];
B.intn;
n);
floatb[n];
C.intm=7,a[m];
D.inta(10);
【7.4】若有说明inta[5][4];
则对其数组元素的正确引用是()
A.a[3+1][2]B.a
(2)(3)C.a[0,2]D.a[3][5]
【7.5】运行下面程序段的输出结果是()
inta[7]={1,3,5};
a[3]);
A.0B.5C.3D.不确定数
【7.6】以下正确的数组定义语句是()
A.inty[1][4]={1,2,3,4,5}
B.floatx[3][]={{1},{2},{3}};
C.longs[2][3]={{1},{1,2},{1,2,3}};
D.doublet[][3]={0};
【7.7】若有说明:
inta[3]4];
则a[i][j]之前的元素个数是()
A.j*4+iB.i*4+jC.i*4-1D.i*4+j+1
【7.8】以下程序的输出结果是()
intm[3][3]={{1},{2},{3}};
intn[3][3]={1,2,3};
m[1][0]+n[0][0]);
m[0][1]+n[1][0]);
【7.9】以下程序的输出结果是()
inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;
3;
i++)
x[i][2-i]);
【7.10】下列有关字符数组与字符串的说法中正确的是()
A.字符数组中存放的一定是一个字符串。
B.所有的字符数组都可以被当作中字符串处理。
C.对存放字符串的字符数组可以象一般数组一样对数组中的单个元素进行操作。
D.一个字符数组可以认为就是一个字符串。
【7.11】用字符串初始化字符数组,下列选项正确的是()
A.chars[5]={'
i'
u'
B.chars[5];
s="
good"
C.chars[5]="
abcd"
D.chars[5];
s[]="
【7.12】不能正确为字符数组输入数据的是()
A.chars[5];
%s"
s);
B.chars[5];
C.chars[5];
s[0]);
D.chars[5];
get(s);
【7.13】若有chara[80],b[80];
则正确的是()
A.puts(a,b);
B.printf("
%s,%s"
a[],b[]);
C.putchar(a,b);
D.puts(a);
puts(b);
第8部分函数
【8.1】C语言程序的基本结构是()
A.函数B.语句C.字符D.程序行
【8.2】以下叙述中,正确的是()
A.C语言程序总是从第一个定义的函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
【8.4】已知函数fun的定义为:
voidfun()
{......}
则函数定义中void的含义是()
A.执行fun后,函数没有返回值B.执行fun后,函数不再返回
C.执行fun后,函数可以返回任何类型的值D.以上三个答案都不对
【8.5】以下叙述中错误的是()
A.函数中的自动变量可以赋初值,每调用一次赋一次初值
B.调用函数时,实参和形参在类型上只需赋值兼容
C.外部变量的隐含类型是自动存储类别
D.函数形参的存储类型是自动(auto)类型的变量
【8.7】函数返回值的数据类型是由()决定的
A.return语句中的表达式类型B.调用该函数的主调函数类型
C.调用时临时决定D.定义函数时所指定的函数类型
【8.8】变量的存储类型说明它们存储在内存的哪些区域,请写出至少3种
()。
【8.9】下面的函数递归函数sum(intn)完成1至n的累加和。
intsum(intn)
{if(n<
=0)
printf("
dataerror\n"
if(n==1)
;
return;
【8.10】下面的函数是一个求阶乘的递归函数。
intfacto(intn)
{if(n==1)
;
return;
第9部分编译预处理
【9.1】完成编译预处理的工作是在()完成的。
A.编译时B.编译前C.编译后D.执行时
【9.2】下列属于C语句的是()
A.10>
=x&
x>
=-10B.#include<
C.{a=b;
}D./*thisisaprogram*/
第10部分指针
【10.1】若定义inti,*p;
使p指向i的赋值语句是()
B.*p=&
C.*p=i;
D.p=*&
【10.3】有以下程序
intfun(intx,inty,int*cp,int*dp)
{*cp=x+y;
*dp=x-y;
{inta,b,c,d;
a=30;
b=50;
fun(a,b,&
c,&
d);
%d,%d\n"
c,d);
输出结果为()
【10.4】运行以下程序段的输出结果是()。
chars[10]="
abcdefg"
*p;
p=s;
p++;
p);
A.abcdefgB.bcdefgC.cdefgD.编译不能通过
【10.5】若有程序段:
int**pp,*p,a=100,b=200;
p=&
b;
pp=&
p;
*p*(**pp));
则输出结果为()
【10.6】若有以下定义和语句:
intarray[10]={23,54,10,33,47,98,72,80,61},*p;
p=array;
则p[5]的值是98。
【10.7】下面程序的输出结果是。
charb[]="
ABCD"
char*p;
for(p=b;
*p;
p+=2)
【10.8】下面程序的输出结果是________。
inta[10]={19,23,44,17,37,28,49,36},*p;
p=a;
(p+=3)[3]);
【10.9】下面程序的输出结果是______。
inti=3,j=1;
char*a="
DCBA"
%c%c\n"
a[i],a[j]);
【10.10】以下函数的功能是:
把两个整数型指针所指向的存储单元中的内容进行交换。
请填空。
exchange(int*x,int*y)
{intt;
t=*y;
*y=_______;
*x=_______;
*【10.11】以下fun函数的功能是:
累加数组元素中的值,n为数组中元素的个数。
累加的和放入x所指向的存储单元中,请填空。
voidfun(intb[],intn,int*x)
{intk,r=0;
for(k=0;
k<
n;
k++)
r=;
=r;
{inta[]={1,2,3,4},sum=0;
fun(a,4,&
sum);
cout<
sum;
*【10.12】说明语句:
int(*p)();
的含义是()
A.p是一个指向一维数组的指针变量
B.p是一个指针变量,指向一个整型数据
C.p是一个指向函数的指针,该函数的返回值是一个整数
D.以上都不对
*【10.13】设有说明int(*ptr)[M];
其中的标识符是()
A.M个指向整型变量的指针
B.指向M个整型变量的函数指针
C.一个指向具有M个整型元素的一维数组的指针
D.具有M个指针元素的一维指针数组,每个元素都只能指向整型变量
*【10.14】已知:
d