cout<<\的地址:\ cout<<\的值:\ cout<<\的地址:\
cout<<\所指向的变量的值:\ cout<<\的地址:\
}
4.数据对象在C++中有几种不同的访问方式?请编写一个程序验证之。 【解答】
数据对象在C++中的访问方式有:名访问,引用(别名)访问,间址访问。 验证程序:
#include //名访问 //输出变量地址 //地址访问,输出变量值 //说明指针变量,指向变量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 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 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 cout << \ cin >> x; i = x/100; j = x/10 ; k = x; cout << k << j << i << endl; } 2.输入平面上某点横坐标x和纵坐标y,若该点位于图1.11所示的方块区域内,则输出1;否则,输出0。 【解答】 #include double x,y,b; cout << \ cin >> x >> y; b = ( -2<=x ) && ( x<=2 ) && ( -2<=y ) && ( y<=2 ); cout << b << endl; } 3.输入3个整数,求出其中最小数(要求使用条件表达式)。 【解答】 #include 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 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 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