C++习题答案2章.docx
- 文档编号:27699853
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:29
- 大小:23.38KB
C++习题答案2章.docx
《C++习题答案2章.docx》由会员分享,可在线阅读,更多相关《C++习题答案2章.docx(29页珍藏版)》请在冰豆网上搜索。
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
//嵌入到该程序中该指令所在的地方
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)