C++程序设计(第二版_吴乃陵_况迎辉)课后答案

2019-01-07 13:07

第一章 C++基础知识习题 1 第一章 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 !(a>b)&&c&&(x*=y)&&b++ ch3||(b+=a*c)||c++ z=(a<<2)/(b>>1)

答: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则是数值先转换,完成的是整除。

!(a>b)&&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=(a<<2)/(b>>1) 表达式值为:6。运算后a与b的值不变仍为3和5。

提示:a的数值为(00000011)2,左移2位为(00001100)2即12,相当整数2两次,而b的数值为(00000101)2,右移1位为(00000010)2,即2,相当于整除2。 1.3 判断下列哪些是常量,哪些是变量。

\int array[5]={1,2,3,4,5}; char s[]=\答:\文字常量 const int n=10; 常变量 int m=5; 变量 'a' 文字常量 char ch='a' 变量

int array[5]={1,2,3,4,5}; 变量 char s[]=\变量

1.4 将下列算式或叙述用C++表达式描述。

(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; cin>>a>>b>>x>>y>>ch1;

ch2=cin.get(); cin>>ch3; 若从键盘输入: 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;

cin>>oct>>a>>b>>hex>>c>>dec>>d; 若从键盘输入: 23 23 23 23

执行后各变量的值用十进制表示各是多少? 答:a:19,b:19,c:35,d:23 1.8 对于习题1.7,若执行:

cout<

第二章 基本控制结构程序设计习题

一.基本概念与基础知识自测题 3.1 程序阅读题 3.1.1 设有说明: int a=3, b=100;

下面的循环语句执行 (1) 次,执行后a、b的值分别为 (2) 、 (3) 。 while(b/a>5){ if(b-a>25) a++; else b/=a;

} 解答: 本题检查学生整除的概念。跟踪: a 3 4 5 ? 15 16 17

(1)14 (2)17 (3)100

3.1.2 设有说明: int n,x,k,y;

下面程序段的功能是备选答案中的 (1) ,当n=10,x=10 打印结果是n (2) 。 cin>>x>>n; k=0; do{ x/=2;

b 100 100 100 ? 100 100 100

b/a 33 25 20 ? 6 6 5

循环次数 1 2 3 ? 13 14 停

b-a 97 96 95 ? 85 84

k++;

}while(k

}while(k

A. y = (1 + x )n

n

B. y = (1 x

+ )2n 2 n

C. y = (1 x + n) n2

D. y = (1 x +

2 n +1) 2

第二章 基本控制结构程序设计习题

解答:

2

x第一个循环使 y 成为:(1 x ) 2n ; 第一个循环使 x 成为:; y 成为:1 + n ;2 + 2 n x

2 n

(1)B

x 连除 4 次以后为零,所以: 考虑整除, n2

(2)1

3.1.3 请看如下程序段: if(num==1) cout<<”Alpha”; else if(num==2) cout<<”Bata”;

else if(num==3) cout<<”Gamma”;

else cout<<”Delta”;

当num的值分别为 1、2、3 时,上面程序段的输出分别为(1) 、(2) 、(3) 。 解答:

检查条件语句与字符串输出概念: (1)Alpha (2)Bata (3)Gamma

3.1.4 执行下面程序段后,m和k的值分别为 (1) 、 (2) 。 int m,k;

for(k=1,m=0;k<=50;k++){ if(m>=10) break; if(m%2==0){ m+=5; continue; } m-=3; }

解答:注意 continue 语句的使用 初值 m=1 k=0 第 1 次循环后 m=5 k=1 第 2 次循环 m=2 k=2 第 3 次循环 m=7 k=3 第 4 次循环 m=4 k=4 第 5 次循环 m=9 k=5 第 6 次循环 m=6 k=6 第 7 次循环 结束,k++未m=11

做 (1)11

(2)6

二.编程与综合练习题 3.2 编程求一元二次方程 ax2+bx+c=0 的根。包括以下判断和结果:若输入 a=0,给出提示;

第二章 基本控制结构程序设计习题 3

若Δ>0,输出两个不等实根;若Δ=0,输出两个相等实根;若Δ<0,输出两个复数根。

解:本题以一个绝对值极小的数作为实数 0。 #include #include #include void main(){

double a,b,c;

double delta,x1,x2;

const double zero=1e-9; //定义一个很小的常数 int sign;

cout<<\输入三个系数a(a!=0), b, c:\cin>>a>>b>>c;

if(fabs(a)

为0,方程根是-c/b\}

cout<<\

if(fabs(delta)

cout<<\方程有两个相同实根:\cout<<\}

else {

if(delta>0)

sign=1; else

sign=0;

delta=sqrt(fabs(delta)); x1=-b/(2*a); x2=delta/(2*a);

if(sign){ cout<<\方程有两个不同实根:\

cout<<\

else{//delta<0 cout<<\方程无实根!有两个不同复数根:\

cout<<\<

3.3 设计程序将输入的百分制成绩转换为五分制输出,90 分以上为 5 分,分为 4 分, 70~79 分为 3 分,60~69 分为 2 分,60 分以下为 1 分。 解:10 分一档用 10 进行整除获得,转换用开关语句实行。

80~89


C++程序设计(第二版_吴乃陵_况迎辉)课后答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2014年7月《设计原理》试卷Doc1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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