C++语言程序设计教程课后习题答案Word格式文档下载.docx
《C++语言程序设计教程课后习题答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计教程课后习题答案Word格式文档下载.docx(67页珍藏版)》请在冰豆网上搜索。
4.C++源程序的扩展名是cpp。
5.使用插入符进行标准输出文件输出时,使用的输出流对象名是cout。
1.4上机调试下列程序,并分析输出结果
1.
#include<
iostream.h>
voidmain()
{
inti,j;
cout<
"
Enterij:
"
;
cin>
i>
j;
i="
i<
'
'
j="
j<
endl;
i+j="
i+j<
i*j="
i*j<
}
假定,输入数据如下:
Enterxy:
5V9l
答:
i=5,j=9
i+j=14,i*j=45
2.
intmax(int,int);
inta,b,c;
a=5;
b=8;
c=max(a,b);
max("
a<
b<
)="
c<
intmax(intx,inty)
returnx>
y?
x:
y;
max(5,8)=8
voidf1(),f2();
在北京.\n"
f1();
f2();
再见.\n"
voidf1()
在上海.\n"
voidf2()
在广州.\n"
在北京。
在上海。
在广卅。
再见。
1.5编译下列程序,修改所出现的错误,获得正确结果
main()
Inmain().\n"
修改后如下:
voidMAIN()
a;
intb=a+a;
b=<
\n"
inta;
b=”<
”\n"
3.
i=5;
intk=i+j;
COUT<
k<
#include<
j=10;
1.6通过对1.5题中3个程序的修改,回答下列问题
1.从1.5题中第1题程序的修改中,总结出编程应该注意哪些问题。
C++程序要包含iostraem.h,main()函数前应加类型说明符void。
2.C++程序中所出现的变量是否必须先说明后使用?
在函数体内说明变量时是否都要放在函数体的开头?
C++程序中所出现的变量必须先说明后使用。
在函数体内说明变量时不一定要放在函数体的开头。
3.使用cout和插入符(<
)输出字符串常量时应注意什么?
可输出一个字符串常量,也可输出多个字符串常量。
每输出一个字符串常量要使用一次插入符(<
)。
4.程序中定义过的变量,但没有赋值,也没有默认值,这时能否使用?
不能使用。
因为它的值不确定。
5.一个程序编译通过并已生成执行文件,运行后并获得输出结果,这一结果是否一定正确?
不一定正确。
可能还有算法错。
第2章变量和表达式及数组
练习题2
2.1判断题
√1.C++语言的合法字符集与C语言的完全相同。
2.标识符规定大小写字母没有区别。
3.C++程序中,不得使用没有定义或说明的变量。
√4.变量的存储类指出了变量的作用域和寿命。
√5.变量的数据类型指出了变量在内存中存放的字节数。
6.定义变量时,变量的存储类说明符不得省略。
7.自动类变量与内部静态类变量的作用域和寿命都是相同的。
8.自动类变量可以定义在函数体外,这时应加说明符auto。
9.外部类变量与外部静态类变量的作用域是相同的。
10.变量被定义后是否有默认值与存储类无关,与数据类型有关。
√11.C++程序中,通常使用const来定义符号常量,定义时必须指出类型。
12.变量被定义或说明后,它一定具有有意义的值。
13.字符串常量与字符常量的区别仅表现在定义形式上的不同,一个用双撇号,另一个用单撇号。
14.所有变量的可见性和存在性都是一致的。
√15.变量在它的作用域内一定是可见的,又是存在的。
√16.C++语言中除了包含C语言的所有运算符外,还规定自身的若干个运算符。
√17.增1和减1运算符以及赋值运算符都具有副作用。
18.增1和减1运算符不仅可以作用在变量上,也可以作用在表达式上。
19.关系运算符可以用来比较两个字符的大小,也可以比较两个字符串的大小。
20.移位运算符在移位操作中,无论左移还是右移,对移出的空位一律补0。
21.变量的类型高低是指它被存放在内存的地址值大小。
22.使用sizeof运算符可以求得某种类型和某个变量在内存中占的字节数,不能求得某个表达式的类型在内存中所占的字节数。
√23.在C++语言中,非保值转换应用强制类型转换。
√24.表达式中各操作数计算顺序取决于运算符的优先级和结合性。
√25.在C++程序中,变量值是可以改变的,变量的地址值是不能改变的。
√26.数组中所有元素的类型都是相同的。
27.定义数组时必须对数组进行初始化。
√28.数组某维的大小可以用常量表达式,不可用变量名。
29.定义一个数组没有对它进行初始化,则该数组的元素值都是无意义的。
√30.用来给数组进行初始化的初始值表内的数据项的个数必须小于等于数组元素个数。
31.在定义一个数组时,对其部分元素进行了初始化,没有初始化的元素的值都是无意义的。
√32.数组被初始化时是判越界的。
33.字符数组就是字符串。
√34.使用printf()函数输出显示字符串时使用格式符%s,输出显示字符时使用%c或%d。
35.给数组元素赋值时只可用常量表达式。
2.2单选题
1.下列变量名中,非法的是(C)。
A.A25B.My_car
C.My-strD.abc
2.下列常量中,十六进制int型常量是(A)。
A.0x5fB.x2a
C.046D.7a
3.下列常量中,不是字符常量的是(B)。
A.'
\n'
B."
y"
C.'
x'
D.'
\7'
4.在函数体内定义了下述变量a,a的存储类为(D)。
inta;
A.寄存器类B.外部类
C.静态类D.自动类
5.下列关于变量存储类的描述中,错误的是(C)。
A.任何变量定义后都具有一个确定的存储类
B.变量的存储类确定了变量的作用域和寿命
C.定义变量时没有存储类说明符者一律为自动类
D.内部静态类变量和外部静态类变量的存储类说明符都是static
6.下列关于变量数据类型的描述中,错误的是(A)。
A.定义变量时int型数据类型可以省略
B.变量的数据类型可以决定该变量占内存的字节数
C.变量的数据类型是可以被强制的
D.变量的数据类型是有高低之分的
7.长双精度浮点型常量的后缀是(C)。
A.UB.F
C.LD.无
8.下列运算符中,不能用于浮点数操作的是(D)。
A.++B.+
C.*=D.&
(双目)
9.下列运算符中,优先级最高的是(A)。
A.*(双目)B.||
C.>
D.%=
10.下列运算符中,优先级最低的是(B)。
A.==B.?
:
C.|D.&
&
11.已知:
inta(3);
下列表达式中,错误的是(C)。
A.a%2==0B.a--+2
C.(a-2)++D.a>
=2
12.已知:
intb(5),下列表达式中,正确的是(D)。
A.b="
a"
B.++(b-1)
C.b%2.5D.b=3,b+1,b+2
13.下列关于类型转换的描述中,错误的是(C)。
A.类型转换运算符是(<
类型>
)
B.类型转换运算符是单目运算符
C.类型转换运算符通常用于保值转换中
D.类型转换运算符作用于表达式左边
14.下列表达式中,其值为0的是(A)。
A.5/10B.!
C.2>
4?
0:
1D.2&
2||0
15.下列表达式中,其值不为逻辑值的是(A)。
A.算术表达式B.关系表达式
C.逗号表达式D.逻辑表达式
16.下列关于数组概念的描述中,错误的是(B)。
A.数组中所有元素类型是相同的
B.数组定义后,它的元素个数是可以改变的
C.数组在定义时可以被初始化,也可以不被初始化
D.数组元素的个数与定义时的每维大小有关
17.下列关于数组维数的描述中,错误的是(C)。
A.定义数组时必须将每维的大小都明确指出
B.二维数组是指该数组的维数为2
C.数组的维数可以使用常量表达式
D.数组元素个数等于该数组的各维大小的乘积
18.下列关于数组下标的描述中,错误的是(B)。
A.C++语言中数组元素的下标是从0开始的
B.数组元素下标是一个整常型表达式
C.数组元素可以用下标来表示
D.数组元素的某维下标值应小于该维的大小值
19.下列关于初始值表的描述中,错误的是(C)。
A.数组可以使用初始值表进行初始化
B.初始值表是用一对花括号括起的若干个数据项组成的
C.初始值表中数据项的个数必须与该数组的元素个数相等
D.使用初始值表给数组初始化时,没有被初始化的元素都具有默认值
20.下列关于字符数组的描述中,错误的是(D)。
A.字符数组中的每一个元素都是字符
B.字符数组可以使用初始值表进行初始化
C.字符数组可以存放字符串
D.字符数组就是字符串
21.下列关于字符串的描述中,错误的是(C)。
A.一维字符数组可以存放一个字符串
B.二维字符数组可以存放多个字符串
C.可以使用一个字符串给二维字符数组赋值
D.可以用一个字符串给二维字符数组初始化
22.已知:
inta[5]={1,2,3,4};
下列数组元素值为2的数组元素是(B)。
A.a[0]B.a[1]
C.a[2]D.a[3]
23.已知:
intab[][3]={{1,5,6},{3},{0,2}};
数组元素ab[1][1]的值为(A)。
A.0B.1
C.2D.3
24.已知:
chars[]="
abcd"
;
输出显示字符'
c'
的表达式是(C)。
A.sB.s+2
C.s[2]D.s[3]
25.已知:
charss[][6]={"
while"
"
for"
else"
break"
};
输出显示"
reak"
字符串的表达式是(B)。
A.ss[3]B.ss[3]+1
C.ss+3D.ss[3][1]
2.3填空题
1.C++语言中,基本数据类型包含有整型、浮点型、字符型、空值型和布尔型。
2.变量的存储类可分为自动类、寄存器类、外邹类和静态存储类。
3.浮点型常量可分为单精度、双精度和长双精度浮点型常量。
4.结合性从右至左的运算符有单目运算符、双目运算符和赋值运算符。
5.条件表达式是由三目运算符组成的,该表达式的类型是由冒号左边和右边两个操作数中类型高的操作数类型决定的。
6.已知:
doubledd[][3]={{1.2,2.4,3.6},{4.8,5.2},{6.4}};
这里dd是一个二维数组的数组名,该数组共有9个元素,每个元素的类型是double。
数组元素dd[0][0]的值是1.2,dd[1][1]的值是5.2,数组元素dd[2][2]的值是0。
7.已知:
};
字符数组ss是二维数组,它的第1维大小应该是4。
使用cout和<
输出字符串"
时,对应的表达式是ss+2。
的子串"
时,对应的表达式是ss[1]+1。
输出字符串else中的字符'
s'
时,对应的表达式是ss[3][2]。
2.4分析下列程序
inta,b;
Enterab:
b>
intd=a-b;
d="
d<
假定输入为5和8。
d=3
constintA=8;
constcharCH='
k'
constdoubleD=8.5;
A="
A<
CH+2="
char(CH+2)<
D-5.8="
D-5.8<
A=8
CH=2=m
D-5.8=2.7
inta=9;
intb=5;
a+b="
a+b<
staticintc;
c+a="
c+a<
constlongintd=8;
a+d-b="
a+d-b<
a+b=14
c+a=9
a+d-b=12
4.
inta=3;
charb='
m'
a="
b="
inta=5;
b='
n'
a=5,b=m
a=3,b=n
5.
6%4*5/3+3<
(10&
3|8)<
(5<
2)+(5>
2)<
~4<
6
10
21
-5
6.
long(&
a)<
sizeof(a)<
sizeof(int)<
doubleb=1.5;
sizeof(1.5f)<
sizeof(b)<
sizeof(1.5L)<
<
地址值>
4,4
4,8,8
7.
inta=3,b=5;
(a>
b+a==b-2)<
(a!
=b+a<
=b)<
charc='
(c<
='
)<
(--c!
h'
+2)<
floatf=2.3f;
(--f<
=f)<
0,1
1,0
1
8.
inti,j,k;
i=j=k=5;
!
i&
++j&
--k;
i||j--||++k;
i-5||j-5&
++k;
5,5,5
9.
inti(5),j(8);
(i=i*=j)<
i=5,j=8;
i=5*j/(j---5);
(j+=i*=j-5)<
40
13,7
23
10.
inta=8;
intb=6;
doubled=1.5;
d+=a+b;
(a=1,b=2,d=2.5,a+b+d)<
(a<
0?
a:
a++:
b++)<
15.5
5.5
2
11.
intm[][3]={9,8,7,6,5,4,3,2,1},s=0;
for(inti=0;
3;
i++)
s+=m[i][i];
s<
15
12.
chars[]="
bhy543kpm345"
s[i]!
\0'
if(s[i]>
a'
s[i]<
z'
continue;
s[i];
543345
13.
intb[]={5,-3,4,1,-8,9,0,10};
inti=0,j;
for(j=i;
8;
if(b[i]>
b[j])
j=i;
b[j]<
7,10
14.
inta[][3]={1,2,3,4,5,6,7,8,9};
ints1(0),s2(0);
for(intj=0;
j++)
if(i!
=j)
s1+=a[i][j];
if(i+j==1)
s2+=a[i][j];
s1="
s1<
s2="
s2<
s1=30,s2=6
15.
#%#"
i;
'
for(intk=0;
k++)
s[k];
for(i=2;
0;
i--)
i-1;
#%#
2.5编程题
1.已知:
inta=3,b=5;
编程计算下列两个代数式的值,并比较它们是否相等。
(a+b)2
和
a2+2ab+b2