C++思考与练习题Word文件下载.docx
《C++思考与练习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++思考与练习题Word文件下载.docx(41页珍藏版)》请在冰豆网上搜索。
、&
、!
=、||、?
:
、/=,优先级最低的算符为,优先级最高的为。
8.经过下述赋值以后,变量x的数据类型是。
intx=2;
doubley;
y=(int)(float)x;
9.若有以下定义:
intm=5,y=2;
则计算表达式y+=y-=m*=y后的y值是。
10.若s是int型变量,且s=6,则下面表达式值是。
s%2+(s+1)%2
1.已知枚举类型定义语句为:
enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};
则下列叙述中错误的是()。
A)枚举常量NAME的值为1
B)枚举常量NUMBER的值为1
C)枚举常量MINUS的值为6
D)枚举常量PRINT的值为10
2.下面四个选项中,均是合法整型常量的是()。
A)160B)-0xcdfC)–01D)-0x48a
-0xffff01a986,0122e5
0110xe0680x
3.下面四个选项中,均是不合法的浮点数的是()。
A)160.B)123C)–.18D)–e3
0.122e4.2123e4.234
e3.e50.01e3
4.下面不正确的字符串常量是()。
A)‘abc’B)“12’12”C)“0”D)“”
5.下面正确的字符常量是()。
A)“c”B)‘\\’’C)‘W’D)”AB”
6.若有代数式3ae/bc,则不正确的表达式是()。
A)a/b/c*e*3B)3*a*e/b/c
C)3*a*e/b*cD)a*e/c/b*3
7.以下符合C++语法的赋值表达式是()。
A)d=9+e+f=d+9B)d=9+e,f=d+9
C)d=9+e,e++,d+9D)d=9+e++=d+7
8.在C++中,要求运算数必须是整型的运算符是()。
A)/B)++C)!
=D)%
9.设:
charw;
intx;
floaty;
doublez;
则表达式w*x+z-y值的数据类型为()。
A)floatB)charC)intD)double
10.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为()。
x=(i=4,j=16,k=32)
A)4B)16C)32D)52
第2章思考与练习题
1.有一种只在循环语句或switch语句中使用的流程控制语句,表示该语句的关键字是。
2.C++中用于控制程序执行流程的三种基本结构是、和。
3.以下程序的输出结果是。
#include<
iostream>
usingnamespacestd;
intmain()
{
intx=100,a=20,b=10;
intv1=5,v2=0;
if(a<
b)
if(b!
=15)
if(!
v1)x=1;
else
if(v2)x=10;
x=-1;
cout<
<
x<
endl;
return0;
}
4.以下程序的输出结果是。
intx=1,y=1,a=1,b=1;
switch(x)
{case1:
switch(y)
{case1:
a++;
break;
case2:
b++;
}
a++;
case3:
default:
}
a<
'
'
b<
5.以下程序的输出结果是。
inti;
for(i=1;
i<
=5;
i++)
{if(i%2)
cout<
;
else
continue;
cout<
>
#'
6.以下程序的输出结果是。
intnum=0;
while(num<
=2)
{num++;
num;
7.以下程序的输出结果是。
inta,b;
for(a=1,b=1;
=100;
a++)
{if(b>
=18)
break;
if(b%3==1)
{b=b+3;
}
b=b-5;
a;
8.以下程序的输出结果是。
(从键盘输入105<
回车>
)
intscore,grade;
cin>
score;
grade=score/10;
if(grade>
9)
grade=9;
switch(grade)
{
case9:
"
A"
case8:
B"
break;
case7:
C"
case6:
D"
default:
E"
1.对于语句cout<
endl<
x;
中的各个组成部分,下列叙述中错误的是()。
A)“cout”是一个输出流对象
B)“endl”的作用是输出回车换行
C)“x”是一个变量
D)“<
”称作提取运算符
2.执行语句序列
inti=0;
while(i<
25)i+=3;
i;
输出结果是()。
A)24B)25C)27D)28
3.有如下程序:
intx=3;
do{
x-=2;
}while(!
(--x));
执行这个程序的输出结果是()。
A)1B)30C)l-2D)死循环
4.if语句的语法格式可描述为
格式1:
if(<
条件>
)<
语句>
或
格式2:
语句1>
else<
语句2>
关于上面的语法格式,下列表述中错误的是()。
A)<
部分可以是一个if语句,例如if(if(a=0)⋯)⋯
B)<
部分可以是一个if语句,例如if(⋯)if(⋯)⋯
C)如果在<
前加上逻辑非运算符!
并交换<
和<
的位置,语句功
能不变
D)<
部分可以是一个循环语句,例如if(⋯)while(⋯)⋯
5.对于程序段:
i=0;
do
{sum+=i++;
}while(i<
2);
则do-while循环体执行的次数为()。
A)1B)2C)3D)4
6.以下关于do-while的描述中,正确的是()。
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C)在do-while循环体中,一定要有能使while后面表达式的值变为零("
假"
)的操作
D)do-while循环中,根据情况可省略while
7.以下关于for的描述中,正确的是()。
A)for循环只能用于循环次数已确定的情况
B)for循环是先执行循环体,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体语句中,可包含多个语句
8.以下的for循环:
for(x=0,y=0;
(y!
=123)&
(x<
4);
x++);
共循环了()次。
A)是无限循环
B)执行4次
C)循环次数不定
D)执行3次
1.编写程序,输入一个整数,判断它是奇数还是偶数;
若是奇数,输出Isodd.若是偶数,输出IsEven。
2.编写程序,将输入的数字(0~6)转换成对应的星期输出。
3.编写程序,某商场给予顾客购物的折扣率如下:
购物金额<
200无折扣
500元>
购物金额>
=2009折
1000元>
=500元8折
=1000元7.5折
输入一个购物金额,输出打折率和购物实际金额。
4.编写程序,求1-3+5-7+9-……-99+101的值。
5.编写程序,打印以下图案。
提示:
该图案可分成上下两个部分处理,上部4行,下部3行。
用两个循环语句实现。
每一行的输出又用两个循环实现,输出空格部分和星号部分。
空格的个数和星号的个数与行号有规律。
第3章思考与练习题
1.若下面程序运行时输出结果为
1,A,10.1
2,B,3.5
请将程序补充完整。
voidtest(int,char,double);
test(1,'
A'
10.1);
test(2,'
B'
);
voidtest(inta,charb,doublec)
c<
2.已知递归函数f的定义如下:
intf(intn)
if(n<
=1)return1;
//递归结束情况
elsereturnn*f(n-2);
//递归
则函数调用语句f(5)的返回值是。
3.是指一个函数可以和同一作用域中的其他函数具有相同的名字,但这些同名函数的参数类型、参数个数、返回值以及函数功能可以完全不同。
4.只允许该源文件中所有函数使用的全局变量称为,定义时应采用关键字。
1.下列关于C++函数的叙述中,正确的是()。
A)每个函数至少要具有一个参数
B)每个函数都必须返回一个值
C)函数在被调用之前必须先声明
D)函数不能自己调用自己
2.有如下程序:
#include<
voidfun(int&
x,inty){intt=x;
x=y;
y=t;
intmain()
inta[2]={23,42};
fun(a[1],a[0]);
std:
cout<
a[0]<
"
"
<
a[1]<
执行后的输出结果是()。
A)42,42B)23,23C)23,42D)42,23
3.下列关于C++函数的说明中,正确的是()。
A)内联函数就是定义在另一个函数体内部的函数
B)函数体的最后一条语句必须是return语句
C)标准C++要求在调用一个函数之前,必须先声明其原型
D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
4.有如下程序:
voidfunction(doubleval);
doubleval;
function(val);
val;
voidfunction(doubleval)
val=3;
编译运行这个程序将出现的情况是()。
A)编译出错,无法运行B)输出:
3
C)输出:
3.0D)输出一个不确定的数
5.下列有关内联函数的叙述中,正确的是()。
A)内联函数在调用时发生控制转移
B)内联函数必须通过关键字inline来定义
C)内联函数是通过编译器来实现的
D)内联函数体的最后一条语句必须是rennin语句
6.若有下面的函数调用
fun(a+b,3,max(n-1,b)
则fun的实参个数是()。
A)3B)4C)5D)6
1.输入三个整型数据,分别编写函数来求解三个数据的最大值、最小值和平均值,要求在主函数中完成数据的输入和计算结果的输出。
2.编写函数,将一个整数n转换成一个字符串。
如,输入整数1234,应输出字符串1234。
3.编写函数,分别统计出由实参传递的字符串中所有英文字母、数字、空格和其他字符的个数。
第4章思考与练习题
1.执行语句序列
intx=10,&
r=x;
cout<
-'
r<
输出结果为。
2.下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false。
请在横线处填上适当内容,实现该函数。
boolfun(char*str)
inti=0,j=0;
while(str[j]);
for(j--;
i<
j&
str[i]==str[j];
i++,j--);
returnij;
3.程序中有如下语句
for(inti=0;
5;
i++)cout<
*(p+i)<
"
能够依次输出int型一维数组DATA的前5个元素。
由此可知,变量p的定义及初始化语句是。
4.已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标为i-1的单元,其中1≤i<n。
例如,当n=4,a中原有数据为1,2,3,4时,则移动后a中元素为2,3,4,4。
请将语句补充完整:
for(inti=0;
n-1;
i++)a[i]=a[]。
5.下面程序的执行结果是。
{
inta=10,*p=&
a,**q=&
p,b=20;
(++**q*b-++(*p))<
6.下面程序的执行结果是。
inta[]={2,4,6,8,10};
int*p=a;
p=a;
(*p)++<
*(p++)<
for(i=0;
a[i]<
1.要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是()。
A)intvect[]={30,50,-88};
B)intvect[]={30,50,-88,0,0};
C)intvect[5]={30,50,-88};
D)intvect[5]={30,50,-88,0,0};
2.下列语句中,错误的是()。
A)constintbuffer=256;
B)constinttemp;
C)constdouble*point;
D)constdouble*rt=newdouble(5.5);
int*p;
*p=9;
Thevalueatp:
*p;
编译运行程序将出现的情况是()。
A)够编译时出现语法错误,不能生成可执行文件
B)运行时一定输出:
9
C)运行时一定输出:
*9
D)运行时有可能出错
4.下列语句中,错误的是()。
B)constdouble*point;
C)intconstbuffer=256;
D)double*constpoint;
5.有如下说明
inta[10]={1,2,3,4,5,,6,7,8,9,10},*p=a;
则数值为9的表达式是()。
A)*p+9B)*(p+8)C)*p+=9D)p+7
6.下列关于数组的描述中,不正确的是()。
A)数组的下标是从0开始的
B)数组名是一个常量指针
C)数组的每一个元素都是同一类型的
D)数组元素只能赋初值,而不能在定义后赋值
7.()是给目标变量起的别名,本身不占有内存空间。
A)指针B)引用C)结构体D)共用体
8.某结构体变量定义如下:
structbirthday
intyear;
intmonth;
intday;
}bir,*p;
下列对于结构体变量成员的引用,正确的是()。
A)bir->
dayB)(*p).month
C)p.monthD)bir.day
1.编写程序,从键盘上任意输入若干个整数,统计非负数的个数,并计算出它们之和。
2.编写程序,实现将字符串中的字符逆序输出。
3.编写函数,实现交换2个数组中的对应元素的值。
4.编写函数,实现两个字符串的连接,并将连接后的结果存放在第一个字符串中。
5.编写函数,判断一个字符串在另一个字符串中是否存在,如果存在,则返回该字符串出现的次数;
如果不存在,则返回值0。
第5章思考与练习题
1.下列程序的输出结果为
Objectid=0
Objectid=1
class