《C 程序设计教程》课后习题答案

  • 格式:doc
  • 大小:499.00 KB
  • 文档页数:103

第1章 C++及其开发环境概述

一、问答题

1.结构化程序设计主要有哪些劣势?

【答案】

(1)程序的开发效率低下

(2)程序的可重用性差

(3)程序的维护成本高

(4)无法适应信息的快速膨胀和多样化

2.面向对象的程序设计有哪些优点?

【答案】

(1)程序的开发效率高

(2)程序代码的可重用性高

(3)程序易于维护

3.C++的发展经历了哪些阶段?

【答案】

C++语言起源于C语言。1980年初期,美国贝尔实验室的Bjarne Stroustrup博士及其同事在C语言的基础上,从Simula67中引入面向对象的特征,开发出一种过程性与对象性相结合的程序设计语言,最初称为“带类的C”,1983年正式取名为C++。

后来,Stroustrup和他的同事陆续将运算符重载、继承、虚函数等特性引入C++,1989年后推出AT&T C++ 2.0版,并经过多次改进和完善,发展成为现在的C++。

4.C++主要有哪些特点?

【答案】

(1)C++可以被看成C语言的一个超集,是对C的增强和扩展。因此,许多C代码可以不经修改即可为C++所用。自然,也可以利用C++开发环境来开发C程序。

(2)C++几乎支持所有面向对象的程序设计特征,因此,利用C++不仅可以进行传统的结构化程序设计,而且可以较好地进行面向对象的程序开发。

(3)C++很好地保持了C的简洁、高效、灵活和接近汇编语言的特点,因此,C++程序的执行效率也很高。

5.一个C++程序一般由哪几部分构成?

【答案】

① 预处理命令。C++提供了三种预处理命令,即宏定义命令、文件包含命令和条件编译命令。

② 全局声明部分。此部分内容通常会给出用户自定义的数据类型声明,以及程序中所涉及变量的定义,例如类的声明。

数据结构

2

③ 函数。一个程序中可包含一个或多个函数,它们是执行用户指定操作的主要部分。

6.使用Visual C++ 开发C++程序时一般要经过哪几个步骤?每个步骤的作用是什么?相应地产生哪些文件?

【答案】

(1)编写程序

C++是一种高级语言,所以用其编写的程序称为“源程序”,以.cpp做为后缀。我们可以利用Visual C++、Turbo C++等编译软件来编写C++源程序。

(2)编译程序

计算机不能识别高级语言,为了将源程序翻译成计算机可识别的二进制指令,需将源程序进行编译,编译之后的文件称作“目标文件”,以.obj作为后缀。编译时以每个源程序单元为单位,每一个源程序文件编译成一个目标文件。因此,如果一个工程中有多个源程序单元,系统会分别将其编译成多个目标文件。

另外,编译时系统会自动进行错误检查,一旦检查出有错误,便不会生成目标文件,需改正后重新编译。

(3)连接目标文件

一个程序中可能会包含很多文件,编译后会生成很多独立的目标文件,此时系统的“连接程序”将这些目标文件和库文件以及系统提供的其他信息连接起来,形成二进制可执行文件,以.exe为后缀。

(4)运行程序

运行二进制可执行文件,得到运行结果。如运行结果不正确,则需修改源文件,之后重新编译运行。

二、分析运行结果

1.

#include

using namespace std;

int main( )

{

cout<<"My "<<"sister ";

cout<<"is "<<"a ";

cout<<"beautiful girl!"<

return 0 ;

}

运行结果为:

My sister is a beautiful girl!

2.

#include

using namespace std;

int main( )

{

课后习题答案

3

int a,b,c;

cin>>a>>b;

c=a+b;

cout<<"a+b="<

return 0;

}

运行结果为:

2 3↙

a+b=5

第2章 C++程序设计基础(上)

一、选择题

(1)在一个C++程序中,main函数的位置( )。

A.必须在程序的开头 B.必须在程序的后面

C.可以在程序的任何地方 D.必须在其他函数中间

【答案】C

(2)用C++语言编写的源程序要变为目标程序必须要经过( )。

A.解释 B.汇编 C.编辑 D.编译

【答案】D

(3)C++程序基本单位是( )。

A.数据 B.字符 C.函数 D.语句

【答案】C

(4)C++程序中的语句必须以( )结束。

A.冒号 B.分号 C.空格 D.花括号

【答案】B

(5)下列选项中,全部都是C++关键字的选项为( )。

A.while IF static B.break char go

C.sizeof case extern D.switch float integer

【答案】C

(6)下列正确的八进制整型常量表示是( )。

A.0a0 B.015 C.080 D. 0x10

【答案】B

(7)在下列运算符中,( )优先级最高。

A.<= B.*= C.+ D.*

【答案】D

数据结构

4

(8)在下列运算符中,( )优先级最低。

A.! B.&& C.!= D.?:

【答案】D

(9)设i=1,j=2,则表达式i+++j的值为( )。

A.1 B.2 C.3 D.4

【答案】C

(10)设i=1,j=2,则表达式++i+j的值为( )。

A.1 B.2 C.3 D.4

【答案】D

(11)在下列表达式选项中,( )是正确。

A.++(a++) B.a++b C.a+++b D.a++++b

【答案】C

(12)已知i=0,j=1,k=2,则逻辑表达式++i||--j&&++k的值为( )。

A.0 B.1 C.2 D.3

【答案】B

(13)执行下列语句后,x的值是( ),y的值是( )。

int x,y;

x=y=1;++x||++y;

A.不确定 B.1,1 C.2,1 D.2,2

【答案】C

(14)已知x=5,则执行语句x+=x-=x*x;后,x的值为( )。

A.25 B.40 C.-40 D.20

【答案】C

(15)设a=1,b=2,c=3,d=4,则条件表达式a

A.1 B.2 C.3 D.4

【答案】A

(16)逗号表达式(x=4*5,x*5),x+25的值为( )。

A.25 B.20 C.100 D.45

【答案】C

二、写出下列数学表达式的C++算术表达式

(1)yx11111 (2)x{x[x(ax+b)+c]+d}+e

(3))baba1ln(10 (4)48cos21

(5))x1x1(ctg22 (6)log10(a2+ab+b2)

课后习题答案

5

【答案】

(1)1/(1+1/(1+1/(x+y)))

(2)x*(x*(x*(a*x+b)+c)+d)+e

(3)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)i整除j (2)n是小于正整数k的偶数

(3)1<=x<10 (4)x,y其中有一个小于z

(5)y[–100,–10],并且y[10,100]

(6)坐标点(x,y)落在以(10,20)为圆心,以35为半径的圆内

(7)三条边a,b和c构成三角形

(8)年份Year能被4整除,但不能被100整除或者能被400整除

【答案】

(1)i%j==0 (2)(n

(3)1<=x&&x<10 (4)x

(5)!(y>=-100&&y<=-10)&&!(y>=10&&y<=100)

(6)sqrt(pow((x-10),2)+pow((y-20),2))<35

(7)a+b>c&&b+c>a&&c+a>b

(8)(year%4==0)&&(year%100!=0)||(year%400==0)

四、阅读下列程序,写出执行结果

(1)

#include

using namespace std;

void main()

{

int a=1,b=2,x,y;

cout<

cout<

x=!a>b;

y=x-- &&b;

cout<

cout<

}

【答案】

4

数据结构

6

2

-1

0

(2)

#include

using namespace std;

void main()

{

int x,y,z,f;

x=y=z=1;

f=--x||y--&&z++;

cout<<"x="<

cout<<"y="<

cout<<"z="<

cout<<"f="<

}

【答案】

x=0

y=0

z=2

f=1

五、编程题

(1)输入一个三位整数,将它反向输出。

【解答】

#include

using namespace std;

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<

}

(2)输入平面上某点横坐标x和纵坐标y,若该点在由图2-8表示的方块区域内,则输出1;否则,输出0。