c++程序设计第二版完整答案.doc
文本预览下载声明
第一章 C++基础知识习题
1.1 判断下列标识符的合法性。
sin book 5arry _name Example2.1 main
$1 class_cpp a3 x*y my name
答:合法的:sin book _name main class_cpp a3
非法的:5arry Example2.1 $1 x*y my name
1.2 假定有下列变量:
int a=3,b=5,c=0;
float x=2.5,y=8.2,z=1.4;
char ch1=’a’,ch2=’5’,ch3=’0’,ch4;
求下列表达式的值,以及运算后表达式所涉及的各变量的值。
x+(int)y%a x=z*b++,b=b*x,b++ ch4=ch3-ch2+ch1
int(y/z)+(int)y/(int)z !(ab)c(x*=y)b++
ch3||(b+=a*c)||c++ z=(a2)/(b1)
答:x+(int)y%a 表达式值为:4.5,运算后x、y、a的值不变,仍分别为2.5、8.2、3。
提示:运算时取出y变量的数值强制转化为整型数放入寄存器参加运算,但内存中y本身的数值不变化。只有赋值运算和自增、自减运算才改变变量本身的值
x=z*b++,b=b*x,b++ 表达式值为:42,运算后x为7.0,b为43。
提示:逗号表达式,依次运算,表达式的值是最后一次运算的值。后++是变量先参加运算然后变量自身加1,所以第1步x等于1.4*5,即7.0,然后b增为6;第2步b赋值为42;第3步,表达式的值是上一步后b的值42,但随后b的值自增1,成为43。
ch4=ch3-ch2+ch1 表达式值为:’\\’,字符外斜杠。运算后ch1、ch2、ch3值不变。
提示:字符型的变量实质是范围很小的整型量。
int(y/z)+(int)y/(int)z 表达式值为:13。y和z自身的值不变。
提示:int(y/z)是完成实数除法后,商强制转化为整型,(int)y/(int)z则是数值先转换,完成的是整除。
!(ab)c(x*=y)b++ 表达式值为:0。运算后x仍为2.5,b仍为5
提示:只要出现一个false右边的不再做,因为c为0,即false,所以其右的所有运算不再做。
ch3||(b+=a*c)||c++ 表达式值为:1。运算后b为5,c为0,均不变。
提示:只要出现一个true,右边不再做。ch3的值为48。
z=(a2)/(b1) 表达式值为:6。运算后a与b的值不变仍为3和5。
提示:a的数值为2,左移2位为2即12,相当整数2两次,而b的数值为2,右移1位为2,即2,相当于整除2。
1.3 判断下列哪些是常量,哪些是变量。
China const int n=10; int m=5; a char ch=a
int array[5]={1,2,3,4,5}; char s[]=Hello;
答:China文字常量
const int n=10;常变量
int m=5;变量
a文字常量
char ch=a变量
int array[5]={1,2,3,4,5}; 变量
char s[]=Hello; 变量
1.4 将下列算式或叙述用C++表达式描述。
(1)
(2) (x+y)/((x-y)*ay)
(3) 位于原点为圆心,a, b为半径的圆环中的点坐标。
(4) 。
(5) 并且字符ch不为\0。
答:pi/2+sqrt(asin(x)*asin(x)+c*c)
(x+y)/((x-y)*pow(a,y))
((x*x+y*y)=a*a)((x*x+y*y)=b*b)
(a!=b)(a!=c)(b!=c)
(k=20)(ch!=\0)
1.6 设有语句:
int a, b;
float x,y;
char ch1,ch2,ch3;
cinabxych1;
ch2=cin.get();
cinch3;
若从键盘输入:
3 2 1.8 7 a b c
执行后各变量取值如何?注意abc三字符两两间有空格。
答:a是3,b是2,x是1.8,y是7,ch1是’a’,ch2是空格,ch3是’b’。
1.7 设有语句:
int a,b,c,d;
cinoctabhexcdecd;
若从键盘输入:
23 23 23 23
执行后各变量的值用十进制表示各是多少?
答:a:19,b:19,c:35,d:23
1.8 对于习题1.7,若执行:
couta′\t′hex
显示全部