C++答案.docx

上传人:b****4 文档编号:3735743 上传时间:2023-05-06 格式:DOCX 页数:92 大小:65.24KB
下载 相关 举报
C++答案.docx_第1页
第1页 / 共92页
C++答案.docx_第2页
第2页 / 共92页
C++答案.docx_第3页
第3页 / 共92页
C++答案.docx_第4页
第4页 / 共92页
C++答案.docx_第5页
第5页 / 共92页
C++答案.docx_第6页
第6页 / 共92页
C++答案.docx_第7页
第7页 / 共92页
C++答案.docx_第8页
第8页 / 共92页
C++答案.docx_第9页
第9页 / 共92页
C++答案.docx_第10页
第10页 / 共92页
C++答案.docx_第11页
第11页 / 共92页
C++答案.docx_第12页
第12页 / 共92页
C++答案.docx_第13页
第13页 / 共92页
C++答案.docx_第14页
第14页 / 共92页
C++答案.docx_第15页
第15页 / 共92页
C++答案.docx_第16页
第16页 / 共92页
C++答案.docx_第17页
第17页 / 共92页
C++答案.docx_第18页
第18页 / 共92页
C++答案.docx_第19页
第19页 / 共92页
C++答案.docx_第20页
第20页 / 共92页
亲,该文档总共92页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++答案.docx

《C++答案.docx》由会员分享,可在线阅读,更多相关《C++答案.docx(92页珍藏版)》请在冰点文库上搜索。

C++答案.docx

C++答案

第一章

1.C++语言的标准有哪些?

它有哪些编程方法?

结构化程序设计的结构有哪些?

答案:

标准:

C++国际标准ISO/IEC14882:

1998,常被称为C++98、标准C++或ANSI/ISOC++;C++标准第二版(ISO/IEC14882:

2003)。

3种编程方法:

以C语言为子集的结构化程序设计模式、以类为核心的面向对象程序设计模式以及以模版为机制的通用编程模式。

结构化程序设计的结构:

顺序结构、选择结构和循环结构。

2.面向对象的程序设计有3个主要特征,他们分别是什么?

试举例说明。

答案:

3个主要特征:

封装、继承和多态。

封装:

封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。

例如C++中的类,它定义了该集合中每个对象所共有的属性和方法。

继承:

继承是让某个类型的对象获得另一个类型的对象的特征。

例如:

C++中子类对父类的继承,子类具有父类的特性,同时还可以拥有自己的新特性。

多态:

多态是指不同类型的对象接收相同的消息时产生不同的行为。

多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减小代码的复杂度。

例如函数的重载。

3.C++是以编译方式实现的高级语言,它的编译过程可分为3个子过程,它们分别是什么?

答案:

创建、编译和连接。

4.参照本章示例,编写1个C++程序:

输入圆的半径,输出其周长。

答案:

#include

usingnamespacestd;

intmain()

{

doubler,area;

cout<<"输入圆的半径:

";

cin>>r;

area=2*3.14159*r;

cout<<"圆的周长为:

"<

return0;

}

第二章

1.下列常量表示在C++中是否合法?

若不合法,指出原因;若合法,指出常量的数据类型。

答案:

32767:

合法,int

35u:

合法,无符号整形

1.25e3.4:

不合法,e后面的数字必须是整数

3L:

合法,长整形

0.0086e-32:

合法,实数

‘\87’:

不合法

“ComputerSystem”:

合法,字符串

“a”:

合法,字符串

‘a’:

合法,字符

‘\96\45’:

不合法,‘96’‘\45’分别为字符类型

.5:

合法,double

2.字符常量与字符串常量有什么区别?

指出下列哪些表示字符?

哪些表示字符串?

哪些既不表示字符也不表示字符串?

‘0x66’China“中国”“8.42”‘\0x33’56.34“\n\t0x34”‘\r’‘\\’‘8.34’“\0x33”‘\0’

答案:

字符:

‘\\’,‘\0’

字符串:

“中国”,“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

usingnamespacestd;

intmain()

{

inta=8,b=10;

intt;

t=a;

a=b;

b=t;

cout<<"a:

"<

"<

return0;

}

不用中间变量:

(有两种方法:

异或运算或者是先求和运算)

#include

usingnamespacestd;

intmain()

{

inta=8,b=10;

a=a^b;

b=b^a;

a=a^b;

cout<<"a:

"<

"<

return0;

}

#include

usingnamespacestd;

intmain()

{

inta=8,b=10;

a=a+b;

b=a-b;

a=a-b;

cout<<"a:

"<

"<

return0;

}

4.用enum定义4个枚举常量Flase、FALSE、TRUE、True,使其值分别等于bool类型中的false、false、true、true。

想一想这样做的好处是什么?

若使用const来定义,则如何进行?

并比较这两种定义的优缺点。

答案:

enum{False=false,FALSE=false,TRUE=true,True=true};

好处:

因为VC++中对大小写是敏感的,为了防止用户输入中大小写出错的情况,所以分别又定义了表示true和false的两种形式。

constboolFalse=false;

constboolFALSE=false;

constboolTRUE=true;

constboolTrue=true;

优缺点:

用enum一次可以定义多个标识符变量,不像const每次只能定义一个;

另外,用const定义看不出其关联性。

5.用const常量代替圆周率3.1415926,分别输入半径40和928.335,求圆面积。

要求先输出圆周率和半径,再输出其面积。

答案:

#include

usingnamespacestd;

constdoublePI=3.14159265;

intmain()

{

doubleradius1=40,radius2=928.335;

doublearea1,area2;

area1=PI*radius1*radius1;

area2=PI*radius2*radius2;

cout<<"圆周率:

"<

"<

"<

cout<<"圆周率:

"<

"<

"<

return0;

}

6.设学生人数是一个常数50,编程输出下列结果(双引号也要输出):

“Howmanystudentsinyourclass?

“50”

答案:

#include

usingnamespacestd;

constintSTDNO=50;

intmain()

{

cout<<'\"'<<"Howmanystudentsinyourclass?

"<<'\"';

cout<

cout<<'\"'<

return0;

}

7.设有语句:

charc1,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.设有语句:

inta,b,c;

cin>>hex>>a>>oct>>b>>dec>>c;

cout<

若在执行过程中,输入:

1212

指出cin执行后,a、b、c的值分别是什么?

输出的结果是什么?

答案:

输出结果是:

121212

a、b、c的值分别是18,10和12。

第三章

1.将下列代数式写成C++的表达式:

(1)

=sqrt(pow(sin(x),2.5))

(2)

=((a+b)*h)/(2*m)

(3)

=exp(x*x)/sqrt(2*3.1415926)

2,求出下列算数表达式的值:

(1)5+7/3*4=13

(2)23.5+9/5+0.5=25.0

(3)8+2*9/2=17

(4)’a’+23=97+23=120

(5)设x=2.5,y=4.7,a=7

x+a%3*(int)(x+y)%2/4=2.5+1*int(7.2)%2/4=2.5+7%2/4=2.5+1/4=2.5

(6)设x=3.5,y=2.5,a=2,b=3

(float)(a+b)/2-(int)x%(int)y=2.5-1=1.5

(7)设x=8

‘a’+x%3+5/2-‘\24’=97+2+2-20=81

3,在下列表达式中,哪些是合法的赋值表达式?

哪些不是?

为什么?

(a,b,c,x,y都是已定义的int型变量)

(1)a=b=4.5+7.8是

(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<=>a=a/(a+a)=10/20=0

(5)a-=a<=>a=a-a=0

(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+bx=5y=5z=13

(3)y=(x=a*b,x+x,x*x)=(x=40,80,1600)=1600x=40

(4)x=(y=a,z=a+b)=(y=5,z=13)=13y=5z=13

7,设有变量:

floatx,y;

inta,b;

指出运算下列表达式后x,y,a和b的值。

x=a=3.523

x=3y为nulla=3b为null

a=x=3.523

x=3.523y为nulla=3b为null

x=a=y=3.523

x=3.0y=3.532a=3b为null

b=x=(a=25,15/2)

x=7.0y为nulla=25b=7

8,若有charx=15;使得x的第0位(即二进制位的最右边的那一位,或称最低位)为0,其余位保持不变的赋值表达式是什么?

x=x&~1(其中1是由

算出来的)

9用sizeof运算符编写一段测试程序,测试本机中各基本数据类型或字符串所占的字节数,并将其填写到下表中,然后分析其结果。

基本数据类型

所占字节数

基本数据类型或字符串

所占字节数

char

1

float

4

short

2

double

8

int

4

longdouble

8

long

4

“\nCh\t\v\0ina”

10

#include

usingnamespacestd;

intmain()

{

cout<<"char类型所占字节数为"<

cout<<"short类型所占字节数为"<

cout<<"int类型所占字节数为"<

cout<<"long类型所占字节数为"<

cout<<"float类型所占字节数为"<

cout<<"double类型所占字节数为"<

cout<<"longdouble类型所占字节数为"<

cout<<"字符\nCh\t\v\0ina所占字节数为"<

return0;

}

10,从键盘输入一个三位数,从左到右用a,b,c表示各位的数字,记为abc.现要求依次输出从右到左的各位数字,即输出另外三位数cba。

试设计程序。

#include

usingnamespacestd;

intmain()

{

intn,a,b,c,m;//n为输入的三位数,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<<"数字"<

}

else

cout<<"输入不正确"<

return0;

}

第四章:

1,设有变量inta=3,b=4,c=5;求下列表达式的值:

a+b>c&&b==c7>5&&4==5True&&FalseF

a||b+c&&b>c3||9&&4>53||0T

!

a||!

c||bF||F||4T

a*b&&c+a15&&8T

2,设a,b,c的值分别是15,18,19,指出下列表达式运算后x,y,a,b,c的值

x=a

表达式运算:

x=T&&b||c++=T||c++=T此时x=T,a=15,b=18,c=19

y=a>b&&c++

表达式运算:

y=F&&c++=F此时y=F,a=15,b=18,c=19

x=a+b>c&&c++

表达式运算:

x=33>19&&c++=T此时x=T.a=15,b=18,c=20

y=a||b++||c++

表达式运算:

y=T||b++||c++=T此时y=T,a=15,b=18,c=19

3,输入三个整数a,b,c要求按照从小到大的顺序输出

#include

main()

{

inta,b,c,temp;

cout<<"请输入三个整数:

"<

cin>>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<<"这三个数从小到大的排列为"<

cout<<"a="<

cout<<"b="<

cout<<"c="<

}

4,有一个数学函数

写一个程序,输入x,输出y.

#include

main()

{

intx,y;

cout<<"请输入x:

";

cin>>x;

if(x>=10)

y=x-1;

elseif(x>1)

y=2*x+2;

else

y=3*x*x+3*x-1;

cout<<"y的值为"<

}

5,给出一个百分制的成绩,要求输出成绩为A,B,C,D.其中,85分以上为A,75~84分为B,65~74分为C,65分以下为D。

#include

main()

{

floatfScore;

cout<<"请输入一个百分制的成绩:

";

cin>>fScore;

if(fScore>100||fScore<0)

cout<<"输入的分数无效"<

elseif(fScore>=85)

cout<<"A"<

elseif(fScore>=75)

cout<<"B"<

elseif(fScore>=65)

cout<<"C"<

else

cout<<"D"<

return0;

}

6,选(D)

7,求下列循环次数

for(inti=0,x=0;!

x&&i<=5;i++)循环了6次

while(inti=0)i--;循环了0次

inti=5;

do{

cout<

}

While(i!

=0);

循环了无数次

8,编程求100以内被7或5整除的最大自然数

#include

voidmain()

{

intmax;

for(inti=0;i<=100;i++)

{

if(i%5==0||i%7==0)

max=i;

}

cout<<"这个最大的自然数是"<

}

9,分析下列程序的输出结果

x=5,y=4,z=1

k=4

<><><>#

10,Fibonacci数列中的前两个数是1和1,从第三个数开始,每个数等于前两个数之和。

编程计算并输出次数列中的前30个数。

#include

#include

voidmain(){

intsum=0,a=1,b=1;

for(inti=1;i<=6;i++)

{

for(intj=1;j<=5;j++){

if(i==1&&j<=2)

cout<

else

{

sum=a+b;

cout<

a=b;

b=sum;

}

}

cout<

}

}

11,编程求n!

,即

#include

#include

voidmain(){

intn,m=1;

cout<<"请输入n:

";

cin>>n;

for(inti=0;i

{

m*=(n-i);

}

cout<<"n的阶乘为"<

}

12,从键盘上输入一个整数n的值,按下式求出y的值,并输出n和y的值(y用浮点数表示)

y=1!

+2!

+3!

+……+n!

#include

#include

voidmain(){

intn,y=0,m=1;

cout<<"请输入n:

";

cin>>n;

for(intj=0;j

{

for(inti=0;i

{

m*=(n-i-j);

}

y+=m;

m=1;

}

cout<<"y的值为"<

}

13.用泰勒级数求e的近似值,直到最后一项小于

为止。

#include

#include

voidmain(){

doublee=0.0,m=1;

intn=1;

do{

m=m*(m+1);

n++;

}while(m<10*10*10*10*10*10);

for(intj=0;j

{

m=1.0;

for(inti=0;i

{

m*=(n-i-j);

}

e+=(1.0/m);

}

cout<<"e的值为"<

}

14,设计一个程序,输出所有的水仙花数。

所谓水仙花就是一个三位的整数,其各位数字的立方和等于该数本身。

#include

voidmain(){

intn=100,a,b,c;//a为三位数的个位,b为三位数的十位,c为三位数的百位

while(n<=999)

{

a=n%10;

b=(n/10)%10;

c=n/100;

if(a*a*a+b*b*b+c*c*c==n)

cout<

n++;

}

}

15,设计一个程序,输入一个4位整数,将各位数字分开,并按其反序输出。

要求必须用循环语句。

#include

voidmain(){

intn,a;

cout<<"请输入一个四位数:

";

cin>>n;

if(1000<=n&&n<=9999)

{

cout<<"这个四位数的反序为:

";

for(inti=1;i<=4;i++)

{

a=n%10;

n=n/10;

cout<

}

}

else

cout<<"输入不正确"<

cout<

}

16,求

的近似值的公式为

其中,n=1,2,3,…,设计一个程序,求出n=1000时

的近似值。

#include

voidmain(){

intn=1000;

doublepi,p=1.0;

for(n=1000;n>=1;n--)

{

p=p*(2.0*n/(2.0*n-1))*(2.0*n/(2.0*n+1));

}

pi=p*2;

cout<

}

17,用迭代法求x=

其中公式如下:

要求前后两次求出的x的差的绝对值小于

#include

#include

usingnamespacestd;

intmain()

{

doublea;

constdoubleEPSTLON=1E-5;

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

";

cin>>a;

doublexnew=a;

doublexold;

do{

xold=xnew;

xnew=(xold+a/xold)/2;

}while(fabs(xnew-xold)>EPSTLON);

cout<<"它的平方根是:

"<

return0;

}

18,打印下列菱形图案。

#include

voidmain()

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2