c++习题.docx
《c++习题.docx》由会员分享,可在线阅读,更多相关《c++习题.docx(56页珍藏版)》请在冰点文库上搜索。
c++习题
第一章C语言概述
一、选择题
1、C语言程序的基本单位是()
(A)函数(B)过程(C)子程序(D)子例程
2、下列各选项中,合法的C语言关键字是()
(A)integer(B)sin(C)string(D)void
3、下列选项中,是C语言提供的合法关键字是()
(A)swicth(B)cher(C)default(D)Case
4、C语言的程序一行写不下时,应该()
(A)用回车符换行(B)在任意一个空格处换行
(C)用分号换行(D)用逗号换行
5、下列叙述不正确的是()
(A)在C程序中,%是只能用于整数运算的运算符
(B)在C程序中,无论是整数还是实数,都能正确无误地表示
(C)若a是实型变量,C程序中a=20是正确的,因此实型变量允许被整型数赋值。
(D)在C程序中,语句之间必须用分号“;”分隔
6、在C程序中,可以作为用户标识符的一组标识符是()
(A)voiddefineWORD(B)as_b3_224Else
(C)Switch–wercase(D)4bDOSIG
7、在C语言中,下列合法的字符常量是()
(A)’\039’(B)’\x76’(C)’ab’(D)’\o’
8、C语言中定义了一个变量,该变量代表内存中的一个()
(A)区域(B)单元(C)地址(D)容量
9、已知字母a的ASCII码为97,则执行下列语句后输出为()
chara=’a’;
a--;
printf(“%d,%c”,a+’2’-‘0’,a+’3’-‘0’);
(A)a,c(B)a--运算不合法,故有语法错误
(C)98,c(D)格式描述和输出项不匹配,输出无定值
10、若ch为char型变量,k为int型变量,则执行下列语句后的输出为
()
ch=’a’;
k=12;
printf(“%x,%o,”,ch,ch,k);
printf(“k=%%d\n”,k);
(A)因变量类型与格式描述符的类型不匹配,输出为定值
(B)输出项与格式描述符个数不符,输出为0或不定值
(C)61,141,k=%d
(D)61,141,k=%12
11、以下说法正确的是()
(A)C语言程序是从第一个定义的函数开始执行
(B)在C语言程序中,要调用的函数必须在main()函数中定义
(C)C语言程序是从main()函数开始执行
(D)C语言程序中的main()函数必须放在程序的开始部分
12、以下叙述中不正确的是()
(A)在C程序中所有的变量必须先定义后使用
(B)在程序中,aph和APH是两个不同的变量
(C)若a和b类型相同,在执行了赋值语句a=b后,b中的值放入a中,b中的值不变
(D)当输入数值时,对于整型变量只能输入整型值,对于实型值只能输入实型值
13、以下选项中合法的用户标识符是()
(A)int(B)a#(C)5mem(D)_243
14、以下选项中合法的C语言字符常量是()
(A)’\t’(B)”A”(C)67(D)A
15、以下选项中不正确的转义字符是()
(A)’\\’(B)’\’’(C)’020’(D)’\0’
16、C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符()
(A)必须为字母(B)必须为下划线
(C)必须为字母或下划线(D)可以是字母、数字、下划线中任意一种
二、填空题
1、C语言中的标识符可分为_____、_____和预定义标识符3类。
2、在C语言程序中,用关键字_____定义基本整型变量,用关键字_____定义单精度实型变量,用关键字_____定义字符型变量。
3、计算机中内存储器的最小存储单位是_____,其中能容纳的数是_____。
4、通常一个字节包含_____个二进制位。
在一个字节中能存放的最大(十进制)整数是_____,最小(十进制)整数是_____,它的二进制数的形式是_____。
5、一个C语言程序的开发过程包括:
编辑、_____、连接和运行4个步骤。
6、在C源程序中,可使用_____和_____两种方式进行注释。
7、在C语言中,输入操作时由库函数_____完成,输出操作由库函数_____完成。
8、若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值为_____。
9、若a、b和c均为int型变量,则计算表达式a=(b=4)+(c=2)后,a值为_____,b值为_____,c值为_____。
10、字符串”ab\034\\\x79”的长度为_____。
第二章运算符与表达式
一、选择题
1、以下程序的输出结果为()
#include
voidmain()
{inti=4,a;
a=i++;
printf(“a=%d,i=%d”,a,i);}
(A)a=4,i=4(B)a=5,i=4(C)a=4,i=5(D)a=5,i=5
2、若已定义x和y为double类型,则表达式“x=1,y=x+3/2”值为()
(A)1(B)2(C)2.0(D)2.5
3、已知字符A的ASCII码值为65,以下程序()
#include
voidmain()
{chara='A';
intb=20;
printf("%d,%o",(a=a+1,a+b,b),a+'a'-'A',b);}
(A)表达式非法,输出零或不确定值
(B)因输出项过多,无输出或输出不确定值
(C)输出结果为20,142
(D)输出结果为20,142,20
4、对于条件表达式(M)?
(a++):
(a--),其中的表达式M等价于()
(A)M==0(B)M==1(C)M!
=0(D)M!
=1
5、若有定义:
intx=3,y=2;floata=2.5,b=3.5;则下面表达式的值为()
(x+y)%2+(int)a/(int)b
(A)1.0(B)1(C)2.0(D)2
6、若x和n均是int型变量,且x的初值为12,n的初值为5,则执行下面表达式后x的值为()
x%=(n%=2)
(A)0(B)1(C)2(D)3
7、假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()
(A)7(B)8(C)9(D)10
8、下列程序的输出结果是()
#include
voidmain()
{doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf(“%d\n”,d*y);}
(A)3(B)3.2(C)0(D)3.07
9、设intx=1,y=1;表达式(!
x||y--)的值是()
(A)0(B)1(C)2(D)-1
10、执行以下程序段后,c3的值为()
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
(A)0(B)0.5(C)1(D)2
11、如下程序的运行结果是()
#include
voidmain()
{inty=3,x=3,z=1;
printf(“%d%d\n”,(++x,y++),z+2);}
(A)34(B)42(C)43(D)33
12、能正确表示逻辑关系“a≥10或a≤0”的C语言表达式是()
(A)a>=10ora<=0(B)a>=0|a<=10
(C)a>=10&&a<=0(D)a>=10||a<=0
13、设x、y、t均为int型变量,则执行语句:
x=y=3;t=++x||++y;后,y的值为()
(A)不定值(B)4(C)3(D)1
14、设a、b、c、d、m、n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为()
(A)0(B)1(C)2(D)3
15、假定w、x、y、z、m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(ww:
x;m=(mm:
y;m=(mm:
z;
则该程序运行后,m的值是()
(A)4(B)3(C)2(D)1
16、下列程序的输出结果是()
#include
voidmain()
{inta=0,b=0,c=0;
if(++a>0||++b>0)
++c;
printf(“a=%d,b=%d,c=%d”,a,b,c);}
(A)a=0,b=0,c=0(B)a=1,b=1,c=1
(C)a=1,b=0,c=1(D)a=0,b=1,c=1
17、在C语言中,如果下面的变量都是int类型,则输出的结果是()
sum=pad=5;pad=sum++,pad++,++pad;
printf(“%d\n”,pad);
(A)7(B)6(C)5(D)4
18、以下程序的输出结果是()
#include
voidmain()
{inti=010,j=10;
printf(“%d,%d\n”,++i,j--);}
(A)11,10(B)9,10(C)010,9(D)10,9
19、已知inti;floatf;,正确的语句是()
(A)(intf)%i;(B)int(f)%i;(C)(intf%i);(D)(int)f%i;
20、已知inta=4,b=5;,则执行表达式a=a>b后,变量a的值为()
(A)0(B)1(C)4(D)5
21、判断char类型数据c1是否为大写字母的最简单且正确的表达式为()
(A)’A’<=c1<=’Z’(B)(c1>=’A’)&(c1<=’Z’)
(C)(c1>=’A’)AND(c1<=’Z’)(D)(c1>=’A’)&&(c1<=’Z’)
二、填空题
1、若i为int整型变量且赋值为6,则运算i++后表达式的值是_____,变量i的值是_____。
2、条件“203、下面程序的输出结果是_____。
#include
voidmain()
{intx=023;
printf(“%d\n”,--x);}
4、对以下数学式,写出3个与a/c*b等价的C语言表达式_____、_____、_____。
5、若a是int型变量,则执行表达式a=25/3%3后a的值为_____。
6、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为_____。
7、若有定义intm=5,y=2;则执行表达式y+=y-=m*=y后y的值为_____。
8、已知inty;floatx=-3;,执行语句y=x%2;后,变量y的值为_____。
第三章基本语句
一、选择题
1、合法的C语言赋值语句是()
(A)a=b=58(B)k=int(a+b)(C)a=58,b=58(D)--i;
2、若变量已正确定义,以下程序段:
x=5.16894;
printf(“%f\n”,(int)(x*1000+0.5)/(float)1000);
的输出结果是()
(A)输出格式说明与输出项不匹配,输出无定值
(B)5.170000(C)5.168000(D)5.169000
3、若有以下程序段:
inta=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf(“%d,%d,%d\n”,a,b,c);
其输出结果是()
(A)3,0,-10(B)0,0,5(C)-10,3,-10(D)3,0,3
4、若有以下程序段:
#include
voidmain()
{inta=2,b=5;
printf(“a=%%d,b=%%d\n”,a,b);}()
(A)a=%2,b=%5(B)a=2,b=5
(C)a=%%d,b=%%d(D)a=%d,b=%d
5、以下程序段:
floata=3.1415;
printf(“|%6.0f|\n”,a);
其输出结果是()
(A)|3.1415|(B)|3.0|(C)|3|(D)|3.0|
6、若变量c定义为float类型,当从终端输入283.1900后按回车键,能给变量c赋以283.19的输入语句是()
(A)scanf(“%f”,c);(B)scanf(“%8.4f”,&c);
(C)scanf(“%6.2f”,&c);(D)scanf(“%8f”,&c);
7、下面程序的输出结果是()
#include
main()
{intx=5,y=3;
printf(“%d”,y=x/y);}
(A)0(B)1(C)3(D)不确定的值
8、若变量已正确定义,下面程序段的输出结果是()
x=5.238794;
printf(“%f\n”,(int)(x*1000+0.5)/(float)1000);
(A)5.239000(B)输出格式说明与输出项不匹配,输出无定值
(C)5.238000(D)5.24
9、下面的程序()
#include
main()
{intx=3,y=0,z=0;
if(x=y+z)printf(“*****”);
elseprintf(“#####”);}
(A)有语法错误不能通过编译(B)输出*****
(C)可以通过编译,但不能运行(D)输出#####
10、执行下面程序中的输出语句后,a的值是()
#include
main()
{inta;
printf(“%d\n”,(a=3*5,a*4,a+5));}
(A)65(B)20(C)15(D)10
11、以下程序实现将两个数对调的操作,请填空()
#include
main()
{inta,b;
scanf(“%d%d”,&a,&b);
a=a+b;b=a-b;a=______;}
(A)a+b(B)a-b(C)b*a(D)a/b
12、若变量已正确说明,则以下程序段:
a=2;b=3;
printf(a>b:
”***a=%d”;”###b=%d”,a,b);()
(A)没有正确的输出格式控制(B)输出为:
***a=2
(C)输出为:
###b=3(D)输出为:
***a=2###b=3
13、已知inta,b;,用语句scanf(“%d%d”,&a,&b);输入a,b值时,不能作为输入数据分隔符的是()
(A),(B)空格(C)回车(D)Tab键
14、语句printf(“%d”,(a=2)&&(b=-2));的输出结果是()
(A)无输出(B)结果不确定(C)-1(D)1
15、下述程序的输出结果是()
#include
main()
{printf(“%f”,2.5+1*7%2/4);}
(A)2.500000(B)2.750000(C)3.375000(D)3.000000
16、根据定义和数据的输入方式,输入语句的正确形式是()
已有定义:
floatf1,f2;
数据的输入方式:
4.52
3.5
(A)scanf(“%f,%f”,&f1,&f2);(B)scanf(“%f%f”,&f1,&f2);
(C)scanf(“%3.2f%2.1f”,&f1,&f2);(D)scanf(“%3.2f,%2.1f”,&f1,&f2);
二、填空题
1、变量i、j、k均已定义为int类型并赋有初值0,用以下语句进行输入:
scanf(“%d”,&i);scanf(“%d”,&j);scanf(“%d”,&k);
当执行以上输入语句,从键盘输入(代表回车键);
12.3
则变量i、j、k的值分别是_____、_____、_____。
2、复合语句在语法上被认为是_____,空语句的形式是_____。
3、本题程序如下:
#include
main()
{charc;inti;
printf(“输入一个正整数(小于255):
”);
scanf(“%d”,&i);
c=(char)i;
printf(“%c的ASCII码为%d\n”,c,i);}
从键盘输入97,执行结果为_____。
4、以下程序的输出结果为_____。
#include
main()
{printf(“*%f,%4.3f*\n”,3.14,3.1415);}
第四章选择结构
一、选择题
1、下列错误的语句是()
(A)if(a>b)printf(“%d”,a);(B)if(&&);a=m;
(C)if
(1)a=m;elsea=n;(D)if(a>0);{elsea=n;}
2、读下列程序:
#include
main()
{floata,b,t;
scanf(“%f,%f”,&a,&b);
if(a>b){t=a;a=b;b=t;}
printf(“%5.2f,%5.2f”,a,b);}
运行时从键盘输入3.8,-3.4,则正确的输入结果是()
(A)-3.40,-3.80(B)-3.40,3.80
(C)-3.4,3.8(D)3.80,-3.40
3、读下列程序:
#include
main()
{intx,y;
scanf(“%d”,&x);
y=0;
if(x>=0)
{if(x>0)y=0;}
elsey=-1;
printf(“%d”,y);}
运行时从键盘输入32,则输出结果是()
(A)0(B)-1(C)1(D)不确定值
4、对下述程序,()是正确的判断
#include
main()
{intx,y;
scanf(“%d,%d”,&x,&y);
if(x>y)
x=y;y=x;
else
x++;y++;
printf(“%d,%d”,x,y);}
(A)有语法错误,不能通过编译(B)输入3和4,输出4和5
(C)输入4和3,输出3和4(D)输入4和3,输出4和4
5、以下程序的输出结果是()
#include
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;}
case2:
a++;b++;break;
case3:
a++;b++;}
printf(“\na=%d,b=%d”,a,b);}
(A)a=1,b=0(B)a=2,b=1(C)a=1,b=1(D)a=2,b=2
6、为表示关系:
x≥y≥z,应使用的C语言表达式是()
(A)(x>=y)&&(y>=z)(B)(x>=y)AND(y>=z)
(C)(x>=y>=z)(D)(x>=y)&(y>=z)
7、下列程序的输出结果是()
#include
voidmain()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec+=1;
printf(“%d\n”,c);}
(A)0(B)1(C)2(D)3
8、以下程序的输出结果是()
#include
main()
{intw=4,x=3,y=2,z=1;
printf(“%d\n”,(ww:
z?
z:
x));}
(A)1(B)2(C)3(D)4
9、以下程序的运行结果是()
#include
voidmain()
{intk=2;
switch(k)
{case1:
printf(“%d”,k++);break;
case2:
printf(“%d”,k++);
case3:
printf(“%d”,k++);break;
case4:
printf(“%d”,k++);
default:
printf(“Full\n”);}}
(A)13(B)23(C)22(D)32
10、语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是()
(A)a\bre\'hi\'y\\\bou(B)a\bre\'hi\'y\bou
(C)re'hi'you(D)abre'hi'y\bou
11、如下程序的输出结果是()
#include
main()
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
a++;b++;}
printf(“a=%d,b=%d\n”,a,b);}
(A)a=2,b=1(B)a=1,b=1(C)a=1,b=0(D)a=2,b=2
12、阅读以下程序:
#include
main()
{intx;
scanf("%d",&x);
if(x--<5)printf("%d",x);
elseprintf("%d",x++);}
程序运行后,如果从键盘上输人5,则输出结果是:
()
(A)3(B)4(C)5(D)6
13、以下程序的输出结果是()
#include
main()
{inta=15,b=21,m=0;
switch(a%3)
{case0:
m++;break;
case1:
m++;
switch(b%2)
{default:
m++;
case0:
m++;break;}}
printf(“%d”,m);}
(A)4(B)3(C)2(D)1
14、下列程序的输出结果是()
#include
voidmain()
{inta=-1,b=4,k;
k=(++a<0)&&!
(b--<=0);
printf(“%d%d%d”,k,a,b);}
(A)104(B)103(C)003(D)004
15、假定所有变量均已正确说明,下列程序段运行后x的值是()
a=b=c=0;x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;