C++程序设计基础(第4版)习题解答(2)

2019-08-30 18:12

cout<<\的地址:\ cout<<\的值:\ cout<<\的地址:\

cout<<\所指向的变量的值:\ cout<<\的地址:\

}

4.数据对象在C++中有几种不同的访问方式?请编写一个程序验证之。 【解答】

数据对象在C++中的访问方式有:名访问,引用(别名)访问,间址访问。 验证程序:

#include using namespace std; int main() { int a; cout<<\ cin>>a; a=a+5; cout<<&a<

//名访问 //输出变量地址 //地址访问,输出变量值 //说明指针变量,指向变量a //间址访问,输出变量值 //ra是a的引用

//引用访问,输出变量a的值

}

5.为了约束对数据对象的值进行只读操作,C++采用什么方式?请进行简要归纳。

【解答】

约束数据对象只读形式如下: 约束对象 标识常量 指针常量 指向常量的指针 指向常量的指针常量 常引用 说明形式 const 类型 常量标识符=常量表达式; 类型 * const 指针; const 类型 * 指针; 或者 类型 const * 指针; const 类型 * const 指针; 或者 类型 const * const 指针; const 类型 & 引用名 = 对象名; 6.什么是表达式?表达式值的类型由什么因素决定?使用不同运算符连接以下3个变量,请写出5个以上获得值为true的表达式。

int a=1, b=2; double x=0.5;

【解答】

表达式是由数据和运算符,按求值规则,表达一个值的式子。 表达式值的类型的决定因素为操作数的类型。

(1)如果运算符左右操作数类型相同,运算结果也是相同类型。

(2)如果运算符左右操作数类型不同,首先把类型较低(存储要求,示数能力较低)的数据转换成类型较高的数据,然后运算。

(3)赋值表达式的类型由被赋值变量的类型决定。当把一个表达式的值赋给一个变量时,系统首先强制把运算值转换成变量的类型,然后执行写操作。

6个值等于true的表达式:

(1)b>a && a>x (4)a==(b*x)

(2)(a+b)!=x (5)a-b

(3)a||(b+x) (6)(a/x==b)

7.阅读以下程序,分析下面语句序列中每一个字符―?‖和―&‖的含义,并写出输出结果。

#include using namespace std; int main() {

int a=10, b=20; int ?p = &a, ?q = &b; ?p = ?p ? ?q; int & ra = a; ra=a; int ? & rt = q; ?rt = 30;

cout<<\?p=\?p<<\?q=\?q <<\?rt=\?rt<

字符―*‖和―&‖的意义见程序中添加的注释。

#include using namespace std; int main() {

int a=10, b=20; int *p = &a, *q = &b; *p = *p * *q; int & ra = a; ra=a; int * & rt = q; *rt = 30;

//―*‖是指针类型说明符,―&‖是引用说明符 //―*‖是间址访问符

//―*‖是指针类型说明符,―&‖是取址运算符

//第1、2、4个―*‖是间址访问符,第3个―*‖算术乘运算符 //―&‖是引用说明符

//输出语句中的―*‖是间址访问符

cout<<\

<<\}

程序输出结果为:

a=200 b=30 *p=200 *q=30 ra=200 *rt=30

1.6 编程题

1.输入一个3位整数,将它反向输出。 【解答】

#include using namespace std; int main() { int x,i,j,k;

cout << \ cin >> x; i = x/100; j = x/10 ; k = x;

cout << k << j << i << endl; }

2.输入平面上某点横坐标x和纵坐标y,若该点位于图1.11所示的方块区域内,则输出1;否则,输出0。

【解答】

#include using namespace std; int main() {

double x,y,b;

cout << \ cin >> x >> y;

b = ( -2<=x ) && ( x<=2 ) && ( -2<=y ) && ( y<=2 ); cout << b << endl; }

3.输入3个整数,求出其中最小数(要求使用条件表达式)。 【解答】

#include using namespace std; int main() {

int a,b,c,temp,min;

cout << \ cin >> a >> b >> c; temp = ( a

图1.11 方形区域

第2章 程序控制结构

2.1 选择题

1.已知 int i=0, x=1, y=0;,在下列选项中,使i的值变成1的语句是( C )。 (A)if( x&&y ) i++; (B)if( x==y ) i++;

(C)if( x||y ) i++;

(D)if( !x ) i++;

???1x?02.设有函数关系为y=?0x?0,下列选项中,能正确表示上述关系的是( C ??1x?0(A) y = 1; (B) y = -1;

if( x >= 0 ) if( x != 0 ) if( x == 0 ) y = 0; if( x > 0 ) y = 1; else y = -1; else y = 0

(C) if( x <= 0 ) (D) y = -1;

if( x < 0 ) y = -1; if( x <= 0 ) else y = 0; if( x < 0 ) y = -1; else y = 1; else y = 0; 3.假设i=2,执行下列语句后i的值为( B )。

switch( i ) {

case 1 : i ++; case 2 : i --; case 3 : ++ i; break; case 4 : -- i; default : i ++; } (A)1

(B)2

(C)3

(D)4

4.已知int i=0,x=0;,在下面while语句执行时循环次数为( D )。 while( !x && i< 3 ) { x++; i++; } (A)4 (B)3

(C)2

(D)1

5.已知int i=3;,在下面do_while 语句执行时的循环次数为( B )。

do{ i--; cout<

(B)2

(C)3

(D)无限

6.下面for语句执行时的循环次数为( B )。

int i, j;

for ( i=0, j=5;i=j; )

{ cout<

(C)10

(D)无限

7.以下程序段形成死循环的是( B )。 (A)int x; for( x=0; x<3; ) { x++; }; (B)int k = 0; do { ++k; } while( k>=0 ); (C)int a=5; while( a ) { a--; };

。 )

(D)int i=3; for(; i; i -- );

2.2 阅读下列程序,写出运行结果

1.

#include using namespace std; int main() {

int a,b,c,d,x;

a = c = 0; b = 1; d = 20; if( a )

d = d-10; else

if( !b ) if( !c ) x = 15; else x = 25; cout << d << endl;

} 【解答】 20 2.

#include using namespace std; int main() {

int a = 0, b = 1; switch( a ) { case 0: switch( b ) {

case 0 : cout<<\case 1 : cout<<\} case 1:

a++; b++; cout<<\}

} 【解答】 a= 0 b= 1 a= 1 b= 2 3.

#include


C++程序设计基础(第4版)习题解答(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: