习题1及其解答(第二版)doc.doc
第1章 基本数据与表达式1.1选择题1.一个最简单的C+程序,可以只有一个( c )。(a) 库函数(b) 自定义函数(c) main函数(d) 空函数2.用C+语言编制的源程序要变为目标程序必须要经过( d )。(a) 解释(b) 汇编(c) 编辑(d) 编译3. C+程序中的简单语句必须以( b )结束。(a) 冒号(b) 分号(c) 空格(d)花括号4.有说明 int a=0; double x=5.16; 以下语句中,( c )属于编译错误。(a) x=a/x;(b) x=x/a;(c) a=a%x;(d) x=x*a;5. 执行C+程序时出现的“溢出错误属于( c )错误。(a) 编译 (b) 连接 (c) 运行 (d) 逻辑6.以下选项中,全部都是C+关键字的选项为( c )。(a) while IF Static(b) break char go(c) sizeof case extern (d) switch float integer7. 按C+标识符的语法规定,合法的标识符是( a )。(a) _abc(b) new (c) (d) "age"8以下选项中,( a )不能作为C+的分隔符。(a) 标识符(b) ;(c) :(d) +9以下正确的八进制整型常量表示是( b )。(a) 0a0(b) 015(c) 080(d) 0x1010以下错误的十六进制整型常量表示是( c )。(a) 0x11(b) 0xaf(c) 0xg(d) 0x1f11 在以下选项中,全部都合法的浮点型数据的选项为( b )。(a) -1e3.5 15. 2e-4(b) 12.34 -1e+5 0.1E-12(c) 0.2e-2 -12345. e-5(d) 5.0e(1+4) 0.1 8e+212以下正确的字符常量为( d )。(a) "a"(b) name(c) a(d) 10113以下选项中,( d )不能交换变量a和b的值。(a) t=b; b=a; a=t; (b) a=a+b; b=a-b; a=ab;(c) t=a; a=b; b=t; (d) a=b; b=a; 14关于以下语句表达错误的选项是( a )。int i=10, *p=&i;(a) p的值为10(b) p指向整型变量i(c) *p表示变量i的值(d) p的值是变量i的地址15有以下变量说明,下面不正确的赋值语句是( b )。int a=5, b=10, c; int *p1 = &a, *p2 = &b; (a) *p2 = b ;(b) p1 = a ;(c) p2 = p1 ;(d) c = *p1 *( *p2 ) ;16有以下变量说明,下面正确的语句是( b )。 int a=10, b; int &pa=a, &pb=b; (a) &pb = a;(b) pb = pa;(c) pb = &pa;(d) *pb = *pa;17执行下面语句序列后,a和b的值分别为( b )。int a = 5 , b = 3 , t ;int &ra = a ;int &rb = b ;t = ra ; ra = rb ; rb = t ;(a) 3和3(b) 3和5(c) 5和3(d) 5和518. 在以下运算符中,( d )优先级最高。(a) <=(b) *=(c) +(d) *19.在以下运算符中,( d )优先级最低。(a) ! (b) &&(c) !=(d) ? :20设 int i=1, j=2; 那么表达式 i+j 的值为( c )。(a) 1 (b) 2(c) 3(d) 421设 int i=1, j=2; 那么表达式 +i+j 的值为( d )。(a) 1 (b) 2(c) 3(d) 422在以下表达式选项中,( c )是正确。(a) +(a+)(b) a+b(c) a+b(d) a+b23已经知道 int i=0, j=1, k=2; 那么逻辑表达式 +i|-j&&+k 的值为( b )。(a) 0 (b) 1(c) 2(d) 324. 执行以下语句后,x的值是( d ),y的值是( c )。 int x, y ; x = y = 1; + x | + y ;(a) 不确定(b) 0(c) 1(d) 225.设X为整型变量,不能正确表达数学关系 1X5 的C+逻辑表达式是( a )。(a) 1< X <5(b) X=2|X=3|X=4(c) 1<X&&X<5(d) !(X<=1)&&!(X>=5)26. 已经知道 int x=5; 执行以下语句后,x的值为( c )。x += x -= x * x; (a) 25(b) 40(c) 40 (d) 2027. 设 int a=1, b=2, c=3, d=4; 那么以下条件表达式的值为( a )。a < b ? a : c < d ? c : d(a) 1(b) 2(c) 3(d) 428. 以下逗号表达式的值为( d )。( x = 4 * 5, x * 5 ), x + 25 (a) 25(b) 20(c) 100(d) 451.2把以下数学表达式写成c+算术表达式1 2. xxx(ax+b)+c+d+e3. ln1+|10 4.5. cot 6. lg(a2+ab+b2) 【答案】1. 1/(1 + 1/(1 + 1/(x + y)2. x * ( x * ( x * ( a * x + b ) + c ) + d ) + e3. log( 1 + pow( fabs( ( a + b )/( a b ) ),10)4. sqrt( 1 + 3.14159/2 * cos( 48 * 3.14159/180 ) )5. 1/tan( ( 1 - x*x )/( 1 + x*x)或者cos( ( 1 - x*x )/( 1 + x*x ) )/sin( ( 1 - x*x )/( 1 + x*x ) )6. log10( a * a + a * b + b * b )1.3 用关系表达式或逻辑表达式表示以下条件1. i 被j整除2. n是小于正整数k的偶数3. 1x<104. x,y其中有一个小于z5. y 100,10,并且 y 10,1006. 坐标点x, y落在以10, 20为圆心,以35为半径的圆内7. 三条边a,b和c构成三角形8. 年份Year能被4整除,但不能被100整除或者能被400整除【答案】1. i%j = 02.n<k&&n%2 = 03. 1<=x && x<10 4. x<z|y<z5. !( y>=-100 && y<=-10 ) && !( y>=10 && y<=100 )6. sqrt(pow(x-10),2) + pow(y-20),2)< 357. a+b>c && b+c>a && c+a>b8. (year%4 = 0) && (year%100!=0)|(year%400=0)1.4 阅读以下程序,写出执行结果1.#include <iostream.h> void main() int a = 1, b = 2, x, y; cout << a+b << endl; cout << a % b << endl; x = !a>b; y = x- && b; cout << x << endl; cout << y << endl; 【答案】 4 2 -1 02#include <iostream.h> void main() int x,y,z,f; x = y = z = 1; f = -x | y- && z+; cout << "x =" << x << endl; cout << "y =" << y << endl; cout << "z =" << z << endl; cout << "f =" << f << endl; 【答案】 x=0 y=0 z=2 f=13#include<iostream.h>#include<iomanip.h>void main() int a=123; int &ra=a; int *pa=&a; cout<<setw(5)<<dec<<a<<setw(5)<<oct<<ra<<setw(5)<<hex<<*pa<<endl;【答案】 123 173 7b1.5 思考题1什么叫数据类型?数据的类型定义有什么作用?2数据对象在C+中有什么不同的访问方式?请编写一个程序验证之。3普通数据类型变量和指针类型变量的定义、存储、使用方式上有何区别?请编写一个程序验证之。4什么叫数据对象的引用?对象的引用和对象的指针有什么区别?请用一个验证程序说明之。5为了约束只能对数据对象的值做读操作,C+采用什么方式?请做出简要归纳。6什么叫表达式?表达式值的类型由什么因素决定?使用不同运算符连接以下3个变量,请写出5个以上获得值等于1的表达式。int a=1, b=2; double x=0.5;1.6 编程题1.输入一个三位整数,将它反向输出。【解答】#include <iostream.h>void main() int x,i,j,k; cout << "please input x:" cin >> x; i = x/100; j = ( x - i*100 ) / 10; k = x - i*100 - j*10; cout << k << j << i << endl;2.输入平面上某点横坐标x和纵坐标y,假设该点在由图1.11表示的方块区域内,那么输出1;否那么,输出0。图1.11 正方形【解答】 #include <iostream.h>void main() float x,y,b; cout << "please input x,y:" cin >> x >> y; b = ( -2<=x ) && ( x<=2 ) && ( -2<=y ) && ( y<=2 ); cout << b << endl;3.输入三个整数,求出其中最小数要求使用条件表达式。【解答】#include <iostream.h>void main()int a,b,c,temp,min; cout << "please input a,b,c:" cin >> a >> b >> c; temp = ( a<b ) ? a:b; min = ( temp<c ) ? temp:c; cout << "min=" << min << endl;