logo资料库

visual C++实用教程(第三版) 习题答案.doc

第1页 / 共93页
第2页 / 共93页
第3页 / 共93页
第4页 / 共93页
第5页 / 共93页
第6页 / 共93页
第7页 / 共93页
第8页 / 共93页
资料共93页,剩余部分请下载后查看
第一章 1. C++语言的标准有哪些?它有哪些编程方法?结构化程序设计的结构有哪些? 答案:标准:C++国际标准 ISO/IEC 14882:1998,常被称为 C++98、标准 C++或 ANSI/ISO C++;C++标准第二版(ISO/IEC 14882:2003)。 3 种编程方法:以 C 语言为子集的结构化程序设计模式、以类为核心的面向对象程 序设计模式以及以模版为机制的通用编程模式。 结构化程序设计的结构:顺序结构、选择结构和循环结构。 2. 面向对象的程序设计有 3 个主要特征,他们分别是什么?试举例说明。 答案:3 个主要特征:封装、继承和多态。 封装:封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。例如 C++ 中的类,它定义了该集合中每个对象所共有的属性和方法。 继承:继承是让某个类型的对象获得另一个类型的对象的特征。例如:C++中子类对 父类的继承,子类具有父类的特性,同时还可以拥有自己的新特性。 多态:多态是指不同类型的对象接收相同的消息时产生不同的行为。多态机制使具 有不同内部结构的对象可以共享相同的外部接口,通过这种方式减小代码的 复杂度。例如函数的重载。 3. C++是以编译方式实现的高级语言,它的编译过程可分为 3 个子过程,它们分别是什么? 答案:创建、编译和连接。 4. 参照本章示例,编写 1 个 C++程序:输入圆的半径,输出其周长。 答案: #include using namespace std; int main() { double r, area; cout<<"输入圆的半径: "; cin>>r; area=2*3.14159*r; cout<<"圆的周长为:"<
2. 字符常量与字符串常量有什么区别?指出下列哪些表示字符?哪些表示字符串?哪些 既不表示字符也不表示字符串? ‘0x66’ China “8.42” ‘\0’ “中国” 答案:字符: ‘\\’, ‘\0’ ‘\0x33’ 56.34 “\n\t0x34”‘\r’ ‘\\’ ‘8.34’ “\0x33” 字符串:“中国”, “8.42”, “\0x33” 非字符亦非字符串:‘0x66’, China,‘\0x33’,56.34,“\n\t0x34”‘\r’, ‘8.34’ 3. 定义两个变量 a 和 b,初值分别为 8 和 10,若要 a 和 b 的值互换,即 a 为 10,b 为 8, 如何实现(可用另外一个变量 t 作为过渡)?如不用中间变量又如何实现? 答案:用变量 t 作为过渡 #include using namespace std; int main() { int a=8,b=10; int t; t=a; a=b; b=t; cout<<"a: "< using namespace std; int main() { int a=8,b=10; a=a^b; b=b^a; a=a^b; cout<<"a: "< using namespace std; int main() { int a=8,b=10; a=a+b; b=a-b; a=a-b;
cout<<"a: "< using namespace std; const double PI=3.14159265; int main() { double radius1=40,radius2=928.335; double area1,area2; area1=PI*radius1*radius1; area2=PI*radius2*radius2; cout<<"圆周率: "< using namespace std; const int STDNO=50; int main() { cout<<'\"'<<"How many students in your class?"<<'\"'; cout<
return 0; } 7. 设有语句: char c1, c2, c3; cin>>c1>>c2>>c3; 若在执行过程中,输入: ‘a’ ‘b’ ‘c’ 则 cin 执行后,c1、c2、c3 的值分别是什么?若输入: abcdef 则 cin 执行后,c1、c2、c3 的值又分别是什么? 答案:输入‘a’ ‘b’ ‘c’后,c1 的值为 ‘ , c2 的值为 a , c3 的值为 ’ 输入 abcdef 后,c1 的值为 a , c2 的值为 b , c3 的值为 c 8. 设有语句: int a, b, c; cin>>hex>>a>>oct>>b>>dec>>c; cout<
<=>a=a/(a+a)=10/20=0 <=>a=a-a=0 (2)c=3.5+4.5=x=y=7.9 不是,因为 4.5 是常量不能作为左值 (3)x=(y=4.5)*45 是 (4)a=x++=++y 不是,x++不能作为左值 4,写出下面表达式运算后 a 的值,设原来的 a 都是 10. (1)a+=a <=> a=a+a=20 (2)a%=(7%2) <=> a=a%(7%2)=10%1=0 (3)a*=3+4 <=>a=a*(3+4)=70 (4)a/=a+a (5)a-=a (6)a+=a-=a*=a <=>a+=a-=100 =>a+=0 =>a=0 5,设 m,n 的值分别为 10,8,指出下列表达式运算后 a,b,c,和 d 的值。 (1)a=m++ + n++=10+8=18 (2)b=m++ + ++n=10+9=19 (3)c=++m + ++n=11+9=20 (4)d=m-- + n++=10+8=18 6,设 a,b,c 的值分别为 5,8,9;指出下列表达式运算后 x ,y 和 z 的值 (1)y=(a+b,c+a)=(13,14)=14 (2)x=y=a,z=a+b (3)y=(x=a*b , x+x , x*x)=(x=40,80,1600)=1600 (4)x=(y=a ,z=a+b)=(y=5,z=13)=13 7,设有变量: float x, y; int a ,b; 指出运算下列表达式后 x , y, a 和 b 的值。 (1) x=a=3.523 x=3 y 为 null (2) a= x =3.523 x=3.523 (3) x=3.0 y=3.532 (4) b=x=(a=25,15/2) x=7.0 y 为 null 8,若有 char x=15;使得 x 的第 0 位(即二进制位的最右边的那一位,或称最低位)为 0,其 余位保持不变的赋值表达式是什么? y 为 null x=a=y=3.523 a=3 b 为 null a=3 b 为 null a=25 b=7 a=3 b 为 null x=5 y=5 z=13 x=40 y=5 z=13 x=x & ~1 (其中 1 是由 02 算出来的) 9 用 sizeof 运算符编写一段测试程序,测试本机中各基本数据类型或字符串所占的字节数, 并将其填写到下表中,然后分析其结果。 基本数据类型 所占字节数 基本数据类型或字符 所占字节数 char short int long 1 2 4 4 串 float double long double “\nCh\t\v\0ina” 4 8 8 10
#include using namespace std; int main() { cout <<"char 类型所占字节数为"<< sizeof(char)<<"\n"; cout <<"short 类型所占字节数为"<< sizeof(short)<<"\n"; cout <<"int 类型所占字节数为"<< sizeof(int)<<"\n"; cout <<"long 类型所占字节数为"<< sizeof(long)<<"\n"; cout <<"float 类型所占字节数为"<< sizeof(float)<<"\n"; cout <<"double 类型所占字节数为"<< sizeof(double)<<"\n"; cout <<" long double 类型所占字节数为"<< sizeof(long double)<<"\n"; cout <<"字符\nCh\t\v\0ina 所占字节数为"<< sizeof("\nCh\t\v\0ina")<<"\n"; return 0; } 10,从键盘输入一个三位数,从左到右用 a,b,c 表示各位的数字,记为 abc.现要求依次输出从 右到左的各位数字,即输出另外三位数 cba。试设计程序。 #include using namespace std; int main() { int n ,a , b , c , m; cout<<"请输入一个三位数:"; cin>>n; if(n<=999 && n>=000) { c=n%10; b=(n/10)%10; a=((n/10)/10)%10; m=c*100+b*10+a; cout<<"数字"<c&&b==c  7>5&&4==5True && False F (2) a||b+c&&b>c  3||9&&4>5T&&FF (3) !a||!c||bF||F||4T (4) a*b&&c+a15&&8T //n 为输入的三位数,m 为需要输出的三位数 2,设 a,b,c 的值分别是 15,18,19,指出下列表达式运算后 x,y,a,b,c 的值 (1) x=a
表达式运算:x=T&&b||c++=T||c++=T 此时 x=T,a=15,b=18,c=19 (2) y=a>b&&c++ 表达式运算:y=F&&c++=F 此时 y=F ,a=15,b=18,c=19 (3) x=a+b>c&&c++ 表达式运算:x=33>19&&c++=T 此时 x=T.a=15,b=18,c=20 (4) y=a||b++||c++ 表达式运算:y=T||b++||c++=T 此时 y=T,a=15,b=18,c=19 3,输入三个整数 a,b,c 要求按照从小到大的顺序输出 #include main() { int a,b,c,temp; cout<<"请输入三个整数:"<>a>>b>>c; if(a>b)/*如果 a>b,交换 a 与 b 的值*/ { temp=a; a=b; b=temp; } if(a>c)/*如果 a>c,交换 a 与 c 的值*/ { temp=a; a=c; c=temp; } if(b>c)/*如果 b>c,交换 b 与 c 的值*/ { temp=b; b=c; c=temp; } cout<<"这三个数从小到大的排列为"<>x; if(x>=10) y=x-1; else if(x>1) y=2*x+2; else y=3*x*x+3*x-1; cout<<"y 的值为"< main() { float fScore; cout<<"请输入一个百分制的成绩:"; cin >>fScore; if( fScore>100||fScore<0) cout<<"输入的分数无效"<=85) cout<<"A"<=75) cout<<"B"<=65) cout<<"C"<
分享到:
收藏