C++习题答案2章.docx

上传人:b****8 文档编号:27699853 上传时间:2023-07-04 格式:DOCX 页数:29 大小:23.38KB
下载 相关 举报
C++习题答案2章.docx_第1页
第1页 / 共29页
C++习题答案2章.docx_第2页
第2页 / 共29页
C++习题答案2章.docx_第3页
第3页 / 共29页
C++习题答案2章.docx_第4页
第4页 / 共29页
C++习题答案2章.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C++习题答案2章.docx

《C++习题答案2章.docx》由会员分享,可在线阅读,更多相关《C++习题答案2章.docx(29页珍藏版)》请在冰豆网上搜索。

C++习题答案2章.docx

C++习题答案2章

第二章C++简单程序设计(习题)

★2-1C++语言有那些主要特点和优点?

解:

C++语言的主要特点表现在两个方面,一是全面兼容C,二是支持面向对象的方法。

C++是一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。

C++语言最重要的特点是支持面向对象。

★2-2下列标识符哪些是合法的?

Program,-page,_lock,test2,3in1,@mail,A_B_C_D

解:

Program,_lock,test2,A_B_C_D是合法的标识符,其它的不是。

2-3例2.1中每条语句的作用是什么?

#include

voidmain(void)

{

cout<<"Hello!

\n";

cout<<"Welcometoc++!

\n";

}

解:

#include//指示编译器将文件iostream.h中的代码

//嵌入到该程序中该指令所在的地方

voidmain()//主函数名,void表示函数没有返回值

{//函数体标志

cout<<"Hello!

\n";//输出字符串Hello!

到标准输出设备(显示器)上。

cout<<"Welcometoc++!

\n";//输出字符串Welcometoc++!

}

在屏幕输出如下:

Hello!

Welcometoc++!

2-4使用关键字const而不是#define语句的好处有哪些?

解:

const定义的常量是有类型的,所以在使用它们时编译器可以查错;而且,这些变量在调试时仍然是可见的。

★2-5请写出C++语句声明一个常量PI,值为3.1416;再声明一个浮点型变量a,把PI的值赋给a。

解:

constfloatPI=3.1416;

floata=PI;

★2-6在下面的枚举类型中,Blue的值是多少?

enumCOLOR{WHITE,BLACK=100,RED,BLUE,GREEN=300};

解:

BLUE=102

2-7注释有什么作用?

C++中有哪几种注释的方法?

他们之间有什么区别?

解:

注释在程序中的作用是对程序进行注解和说明,以便于阅读。

编译系统在对源程序进行编译时不理会注释部分,因此注释对于程序的功能实现不起任何作用。

而且由于编译时忽略注释部分,所以注释内容不会增加最终产生的可执行程序的大小。

适当地使用注释,能够提高程序的可读性。

在C++中,有两种给出注释的方法:

一种是延用C语言方法,使用"/*"和"*/"括起注释文字。

另一种方法是使用"//",从"//"开始,直到它所在行的行尾,所有字符都被作为注释处理。

2-8什么叫做表达式?

x=5+7是一个表达式吗?

它的值是多少?

解:

任何一个用于计算值的公式都可称为表达式。

x=5+7是一个表达式,它的值为12。

2-9下列表达式的值是多少?

1.201/4

2.201%4

3.201/4.0

解:

1.502.13.50.25

2-10执行完下列语句后,a、b、c三个变量的值为多少?

a=30;

b=a++;

c=++a;

解:

a:

32;b:

30;c:

32;

★2-11在一个for循环中,可以初始化多个变量吗?

如何实现?

解:

在for循环设置条件的第一个";"前,用,分隔不同的赋值表达式。

例如:

for(x=0,y=10;x<100;x++,y++)

2-12执行完下列语句后,n的值为多少?

intn;

for(n=0;n<100;n++)

解:

n的值为100

★2-13写一条for语句,计数条件为n从100到200,步长为2;然后用while和do…while语句完成同样的循环。

解:

(1)for循环:

for(intn=100;n<=200;n+=2);

(2)while循环:

intx=100;

while(n<=200)

n+=2;

(3)do…while循环:

intn=100;

do

{

n+=2;

}while(n<=200);

2-14if(x=3)和if(x==3)这两条语句的差别是什么?

解:

语句if(x=3)把3赋给x,赋值表达式的值为true,作为if语句的条件;语句if(x==3)首先判断x的值是否为3,若相等条件表达式的值为ture,否则为false。

2-15什么叫做作用域?

什么叫做局部变量?

什么叫做全局变量,如何使用全局变量?

解:

P125-126

作用域是一个标识符在程序正文中有效的区域。

局部变量,一般来讲就是具有块作用域的变量;全局变量,就是具有文件作用域的变量。

2-16已知x、y两个变量,写一条简单的if语句,把较小的值赋给原本值较大的变量。

解:

if(x>y)

x=y;

else//y>x||y==x

y=x;

2-17修改下面这个程序中的错误,改正后它的运行结果是什么?

#include

voidmain()

inti

intj;

i=10;/*给i赋值

j=20;/*给j赋值*/

cout<<"i+j=<

return0;

}

解:

改正:

#include

intmain()

{

inti;

intj;

i=10;//给i赋值

j=20;/*给j赋值*/

cout<<"i+j="<

return0;

}

程序运行输出:

i+j=30

2-18编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。

解:

源程序:

#include

intmain()

{

inti;

cout<<"请输入一个数字:

";

cin>>i;

cout<<"您输入一个数字是"<

return0;

}

程序运行输出:

请输入一个数字:

5

您输入一个数字是5

2-19C++有哪几种数据类型?

简述其值域。

编程显示你使用的计算机中的各种数据类型的字节数。

解:

源程序:

#include

intmain()

{

cout<<"Thesizeofanintis:

\t\t"<

cout<<"Thesizeofashortintis:

\t"<

cout<<"Thesizeofalongintis:

\t"<

cout<<"Thesizeofacharis:

\t\t"<

cout<<"Thesizeofafloatis:

\t\t"<

cout<<"Thesizeofadoubleis:

\t"<

return0;

}

程序运行输出:

Thesizeofanintis:

4bytes.

Thesizeofashortintis:

2bytes.

Thesizeofalongintis:

4bytes.

Thesizeofacharis:

1bytes.

Thesizeofafloatis:

4bytes.

Thesizeofadoubleis:

8bytes.

★2-20打印ASCII码为32~127的字符。

解:

#include

intmain()

{

for(inti=32;i<128;i++)

cout<<(char)i;

return0;

}

程序运行输出:

!

"#$%G'()*+,./0123456789:

;<>?

@ABCDEFGHIJKLMNOP_QRSTUVWXYZ[\]^'abcdefghijklmnopqrstuvwxyz<|>~s

2-21运行下面的程序,观察其输出,与你的设想是否相同?

#include

intmain()

{

unsignedintx;

unsignedinty=100;

unsignedintz=50;

x=y-z;

cout<<"Differenceis:

"<

x=z-y;

cout<<"\nNowdifferenceis:

"<

return0;

}

解:

程序运行输出:

Differenceis:

50

Nowdifferenceis:

4294967246

【注意】:

第二行的输出并非-50,注意x、y、z的数据类型。

★2-22运行下面的程序,观察其输出,体会i++与++i的差别。

#include

intmain()

{

intmyAge=39;//initializetwointegers

intyourAge=39;

cout<<"Iam:

"<

cout<<"Youare:

"<

myAge++;//postfixincrement

++yourAge;//prefixincrement

cout<<"Oneyearpasses...\n";

cout<<"Iam:

"<

cout<<"Youare:

"<

cout<<"Anotheryearpasses\n";

cout<<"Iam:

"<

cout<<"Youare:

"<<++yourAge<<"yearsold\n";

cout<<"Let'sprintitagain.\n";

cout<<"Iam:

"<

cout<<"Youare:

"<

return0;

}

解:

程序运行输出:

Iam39yearsold

Youare39yearsold

Oneyearpasses

Iam40yearsold

Youare40yearsold

Anotheryearpasses

Iam40yearsold

Youare41yearsold

Let'sprintitagain

Iam41yearsold

Youare41yearsold

2-23什么叫常量?

什么叫变量?

解:

所谓常量是指在程序运行的整个过程中其值始终不可改变的量,除了用文字表示常量外,也可以为常量命名,这就是符号常量;在程序的执行过程中其值可以变化的量称为变量,变量是需要用名字来标识的。

2-24变量有哪几种存储类型?

解:

变量有以下几种存储类型:

auto存储类型:

采用堆栈方式分配内存空间,属于一时性存储,其存储空间可被若干变量多次覆盖使用;

register存储类型:

存放在通用寄存器中;

extern存储类型:

在所有函数和程序段中都可引用;

static存储类型:

在内存中是以固定地址存放的,在整个程序运行期间都有效。

2-25写出下列表达式的值:

1.2<3&&6<9

2.!

(4<7)

3.!

(3>5)||(6<2)

解:

1.true2.false3.true

2-26若a=1,b=2,c=3,下列各式的结果是什么?

1.a|b-c

2.a^b&-c

3.a&b|c

4.a|b&c

解:

1.-12.13.34.3

2-27若a=1,下列各式的结果是什么?

1.!

a|a

2.~a|a

3.a^a

4.a>>2

解:

1.12.-13.04.0

★2-28编写一个完整的程序,实现功能:

向用户提问"现在正在下雨吗?

",提示用户输入Y或N。

若输入为Y,显示"现在正在下雨。

";若输入为N,显示"现在没有下雨。

";否则继续提问"现在正在下雨吗?

"

解:

源程序:

#include

#include

voidmain()

{

charflag;

while

(1)

{

cout<<"现在正在下雨吗?

(YesorNo):

";

cin>>flag;

if(toupper(flag)=='Y')//toupper把小写字母转化为大写字母,包含在stdlib.h中

{

cout<<"现在正在下雨。

";

break;

}

if(toupper(flag)=='N')

{

cout<<"现在没有下雨。

";

break;

}

}

}

程序运行输出:

现在正在下雨吗?

(YesorNo):

x

现在正在下雨吗?

(YesorNo):

l

现在正在下雨吗?

(YesorNo):

q

现在正在下雨吗?

(YesorNo):

n

现在没有下雨。

或:

现在正在下雨吗?

(YesorNo):

y

现在正在下雨。

★2-29编写一个完整的程序,运行时向用户提问"你考试考了多少分?

(0~100)",接收输入后判断其等级,显示出来。

规则如下:

解:

#include

voidmain()

{

inti,score;

cout<<"你考试考了多少分?

(0~100):

";

cin>>score;

if(score>100||score<0)

cout<<"分数值必须在0到100之间!

";

else

{

i=score/10;

switch(i)

{

case10:

case9:

cout<<"你的成绩为优!

";

break;

case8:

cout<<"你的成绩为良!

";

break;

case7:

case6:

cout<<"你的成绩为中!

";

break;

default:

cout<<"你的成绩为差!

";

}

}

}

程序运行输出:

你考试考了多少分?

(0~100):

85

你的成绩为良!

★2-30实现一个简单的菜单程序,运行时显示"Menu:

A(dd)D(elete)S(ort)Q(uit),Selectone:

"提示用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A、D、S时分别提示"数据已经增加、删除、排序。

"输入为Q时程序结束。

(1)要求使用if…else语句进行判断,用break、continue控制程序流程。

解:

#include

#include

voidmain()

{

charchoice,c;

while

(1)

{

cout<<"Menu:

A(dd)D(elete)S(ort)Q(uit),Selectone:

";

cin>>c;

choice=toupper(c);

if(choice=='A')

{

cout<<"数据已经增加."<

continue;

}

elseif(choice=='D')

{

cout<<"数据已经删除."<

continue;

}

elseif(choice=='S')

{

cout<<"数据已经排序."<

continue;

}

elseif(choice=='Q')

break;

}

}

程序运行输出:

Menu:

A(dd)D(elete)S(ort)Q(uit),Selectone:

a

数据已经增加.

Menu:

A(dd)D(elete)S(ort)Q(uit),Selectone:

d

数据已经删除.

Menu:

A(dd)D(elete)S(ort)Q(uit),Selectone:

s

数据已经排序.

Menu:

A(dd)D(elete)S(ort)Q(uit),Selectone:

q

(2)要求使用Switch语句。

解:

源程序:

#include

#include

voidmain()

{

charchoice;

while

(1)

{

cout<<"Menu:

A(dd)D(elete)S(ort)Q(uit),Selectone:

";

cin>>choice;

switch(toupper(choice))

{

case'A':

cout<<"数据已经增加."<

break;

case'D':

cout<<"数据已经删除."<

break;

case'S':

cout<<"数据已经排序."<

break;

case'Q':

exit(0);

default:

;

}

}

}

程序运行输出:

Menu:

A(dd)D(elete)S(ort)Q(uit),Selectone:

a

数据已经增加.

Menu:

A(dd)D(elete)S(ort)Q(uit),Selectone:

d

数据已经删除.

Menu:

A(dd)D(elete)S(ort)Q(uit),Selectone:

s

数据已经排序.

Menu:

A(dd)D(elete)S(ort)Q(uit),Selectone:

q

★2-31用穷举法找出1~100间的质数,显示出来。

分别使用while,do-while,for循环语句实现。

解:

<源程序>

(1)使用while循环语句:

#include

#include

voidmain()

{

inti,j,k,flag;

i=2;

while(i<=100)

{

flag=1;

k=sqrt(i);

j=2;

while(j<=k)

{

if(i%j==0)

{

flag=0;

break;

}

j++;

}

if(flag)cout<

i++;

}

}

(2)使用do…while循环语句:

#include

#include

voidmain()

{

inti,j,k,flag;

i=2;

do{

flag=1;

k=sqrt(i);

j=2;

do{

if(i%j==0)

{

flag=0;

break;

}

j++;

}while(j<=k);

if(flag)cout<

i++;

}while(i<=100);

}

(3)使用for循环语句:

#include

#include

voidmain()

{

inti,j,k,flag;

for(i=2;i<=100;i++)

{

flag=1;

k=sqrt(i);

for(j=2;j<=k;j++)

{

if(i%j==0)

{

flag=0;

break;

}

}

if(flag)

cout<

}

}

程序运行输出:

2是质数.

3是质数.

5是质数.

7是质数.

11是质数.

13是质数.

17是质数.

19是质数.

23是质数.

29是质数.

31是质数.

37是质数.

41是质数.

43是质数.

47是质数.

53是质数.

59是质数.

61是质数.

67是质数.

71是质数.

73是质数.

79是质数.

83是质数.

89是质数.

97是质数.

2-32比较Break语句与Continue语句的不同用法。

解:

Break使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句,不能用在别处;

continue语句结束本次循环,接着开始判断决定是否继续执行下一次循环;

★2-33定义一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。

解:

#include

usingnamespacestd;

structtime

{

intyear;

intmonth;

intday;

inthour;

intminute;

intsecond;

};

voidmain()

{

timenow;

cout<<"请输入年、月、日、时、分、秒:

";

cin>>now.year>>now.month>>now.day>>now.hour>>now.minute>>now.second;

cout<

"<

"<

}

2-34

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1