C++课后习题答案杨志强 龚沛增 完整版.docx

上传人:b****6 文档编号:7282258 上传时间:2023-01-22 格式:DOCX 页数:52 大小:27.99KB
下载 相关 举报
C++课后习题答案杨志强 龚沛增 完整版.docx_第1页
第1页 / 共52页
C++课后习题答案杨志强 龚沛增 完整版.docx_第2页
第2页 / 共52页
C++课后习题答案杨志强 龚沛增 完整版.docx_第3页
第3页 / 共52页
C++课后习题答案杨志强 龚沛增 完整版.docx_第4页
第4页 / 共52页
C++课后习题答案杨志强 龚沛增 完整版.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

C++课后习题答案杨志强 龚沛增 完整版.docx

《C++课后习题答案杨志强 龚沛增 完整版.docx》由会员分享,可在线阅读,更多相关《C++课后习题答案杨志强 龚沛增 完整版.docx(52页珍藏版)》请在冰豆网上搜索。

C++课后习题答案杨志强 龚沛增 完整版.docx

C++课后习题答案杨志强龚沛增完整版

第一章

一、选择题

CABCAACB

二、填充题

1.main()

2.数字0-9、下划线

3.字符串

4.#include#define

5.hex

6..h

7.语法错误和逻辑错误

8.Insert/RemoveBreakpoint

9..cpp

10.Fileview

三、简答题

1.C++是C语言的超集。

C++中的类和对象部分,C语言没有,C++是面向对象的程序设计。

见教材P3。

2.C/C++程序是由一个或多个函数组成,其中必须要有一个main()函数。

在一个函数内,语句的执行是从上到下的。

3.a?

3a,a-b,f(x),AD,a.txt,D$,∏,double

4.C/C++程序书写形式自由。

一行可以写多条语句,一条语句也可以分别写在不同行上。

区别大小写字母。

5.用尖括号时,预处理程序在系统指定的文件夹中寻找文件;用双引号时,预处理程序首先在当前文件所在的文件目录中寻找文件,若找不到再到系统指定的文件夹中查找。

6.最好的调试手段是设置断点,并让程序运行到该断点,然后在Debug窗口观察各变量的值,从中发现错误。

第二章

一、选择题

BCDCDCCCBB

二、

1.(x+y)!

=(a+b)

2.pow(log(10)+x*y),3)

3.sin(w*u)/(cos(45*180/3.14)+3*pow(x,y))

4.exp(3)+sqrt(2*x+3*y)

5.fabs(x-y)+(x+y)/(3*x)

6.1/(1/r1+1/r2+1/r3)

三、

1.a>d||b>d

2.z=x>y?

x:

y

3.x<0&&y<0

4.x+y>z||y+z>z||x+z>y

5.(int)(x*100+0.5)/100.

6.d>0&&d<=100&&d%2==0

7.x%5==0||y%5==0

8.n%k==0?

n/k:

n/k+1

四、

1

#include"iostream.h"

voidmain()

{floatr,h,v;

cin>>r>>h;

v=3.1416*r*r*h;

cout<

}

2.

#include"iostream.h"

voidmain()

{

floata,b,c,ave,min;

cin>>a>>b>>c;

ave=(a+b+c)/3;

min=(a

a:

b;

min=(c

c:

min;

cout<<"ave="<

}

3.

#include"iostream.h"

voidmain()

{

charc1='1',c2='2';

intx;

x=10*(c1-'0')+c2-'0';

cout<

}

4.

#include"iostream.h"

voidmain()

{intx;

intc1,c2,c3;

cin>>x;

c1=x/100;

c2=x/10%10;

c3=x%10;

x=100*c3+10*c2+c1;

cout<

}

5.

解1:

#include"iostream.h"

voidmain()

{intyear,x;

cin>>year;

x=year%400==0||year%4==0&&year%100!

=0;

x!

=0?

cout<

":

cout<

";

}

解2:

#include"iostream.h"

voidmain()

{intyear;

charx;

cin>>year;

x=(year%400==0||year%4==0&&year%100!

=0)?

'y':

'n';

cout<

}

6.

#include"iostream.h"

#include"math.h"

voidmain()

{doublex,y;

cin>>x;

y=log(x*x+3)/log(10)+3.14/2*cos(40*3.14/180);

cout<

}

第三章

一、

1.C2.D3.D(该答案后还应附“其他值”)4.C

5.B6.C7.A8.C9.B

二、

(1)输入两个正整数给m和n。

(2)20

(3)s=288

(4)AB20ega5

(5)*

**

***

三、

(1)c==')'

count==0

count>0

count

(2)cin>>m>>n

m=m-n

n=n-m

(3)n=m

n=n/5

m=m+5

四、

1.

#include"iostream.h"

#include"math.h"

voidmain()

{floatx,y;

cout<<"inputx:

"<

cin>>x;

if(x<5)

y=fabs(x);

elseif(x<20)

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

else

y=x/5;

cout<<"x="<

}

2.

#include"iostream.h"

voidmain()

{

floats,p,t,w;

cout<<"inputs:

"<

cin>>s;

switch(int(s)/1000)

{case0:

p=0;break;

case1:

p=0.05;break;

case2:

p=0.08;break;

case3:

case4:

p=0.1;break;

default:

p=0.15;break;

}

t=s*p;

w=s-t;

cout<<"纳税款="<

}

3.

#include"iostream.h"

voidmain()

{intm,count=0;

for(m=100;m<1000;m++)

{if(m%10+m/10%10+m/100==5)

count++;

}

cout<<"count="<

}

 

4.

#include"iostream.h"

voidmain()

{intm,n;

for(m=0;m<=30;m++)

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

if(m*2+n*4==90&&m+n==30)

cout<<"鸡:

"<

"<

}

 

5.

#include"iostream.h"

voidmain()

{floate=1,t=1;

intn;

for(n=1;1/t>1e-6;n++)

{t=t*n;

e=e+1/t;

}

cout<<"e="<

}

 

6.

#include"iostream.h"

voidmain()

{intx,y;

for(x=1;x<=100;x++)

for(y=1;y<=100;y++)

if(x*x+2*x==y*y*y)

cout<<"x="<

}

 

7.

#include"iostream.h"

#include"stdio.h"

voidmain()

{charch;

while((ch=getchar())!

='.')

if(ch=='')

cout<

else

cout<

}

8.

#include"iostream.h"

#include"math.h"

voidmain()

{intm,k1,k2;

for(m=0;m<=1000;m++)

{k1=sqrt(m+100);

k2=sqrt(m+100+168);

if(k1*k1==m+100&&k2*k2==m+100+168)

cout<

}

}

9.

二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,

依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。

#include"iostream.h"

#include"math.h"

voidmain()

{floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;

do{x=(x1+x2)/2;

y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;

y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;

if(y1*y>0)

x1=x;

else

x2=x;

}while(fabs(x2-x1)>eps);

cout<

}

第四章

一、

1.C2.A3.C4.D5.C6.B7.A8.B

二、

1.6789043212.43.14

三、

1.

(1){0,1}(3)x[i]=x[i-1]+x[i-2](4)setw(5)<

2.

(1)rand()%101

(2)j

#include"iostream.h"

voidmain()

{inta[4][4],b[4][4],c[4][4],i,j;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

a[i][j]=rand()%41+30;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

b[i][j]=rand()%35+101;

cout<<"矩阵A的内容如下:

\n";

for(i=0;i<4;i++)

{for(j=0;j<4;j++)

cout<

cout<

}

cout<<"矩阵B的内容如下:

\n";

for(i=0;i<4;i++)

{for(j=0;j<4;j++)

cout<

cout<

}

for(i=0;i<4;i++)

for(j=0;j<4;j++)

c[i][j]=a[i][j]+b[i][j];

cout<<"矩阵C的内容如下:

\n";

for(i=0;i<4;i++)

{for(j=0;j<4;j++)

cout<

cout<

}

}

 

(2)

#include"stdlib.h"

#include"iostream.h"

voidmain()

{inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

a[i][j]=rand()%41+30;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

b[i][j]=rand()%35+101;

cout<<"矩阵A的内容如下:

\n";

for(i=0;i<4;i++)

{for(j=0;j<4;j++)

cout<

cout<

}

cout<<"矩阵B的内容如下:

\n";

for(i=0;i<4;i++)

{for(j=0;j<4;j++)

cout<

cout<

}

for(i=0;i<4;i++)

for(j=0;j<4;j++)

c[i][j]=a[i][j]+b[i][j];

cout<<"矩阵C的内容如下:

\n";

for(i=0;i<4;i++)

{for(j=0;j<4;j++)

cout<

cout<

}

max=c[0][0];

for(i=0;i<4;i++)

for(j=0;j<4;j++)

if(c[i][j]>max)

{max=c[i][j];

imax=i;

jmax=j;

}

cout<<"max=c["<

}

(3)

#include"stdlib.h"

#include"iostream.h"

voidmain()

{inta[4][4],b[4][4],i,j;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

a[i][j]=rand()%41+30;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

b[i][j]=rand()%35+101;

cout<<"矩阵A的主对角线以下元素内容如下:

\n";

for(i=0;i<4;i++)

{for(j=0;j<=i;j++)

cout<

cout<

}

cout<<"矩阵B的主对角线以上元素内容如下:

\n";

for(i=0;i<4;i++)

{for(j=i;j<4;j++)

cout<

cout<

}

}

(4)

#include"stdlib.h"

#include"iostream.h"

voidmain()

{inta[4][4],i,j;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

a[i][j]=rand()%41+30;

cout<<"矩阵A的内容如下:

\n";

for(i=0;i<4;i++)

{for(j=0;j<4;j++)

cout<

cout<

}

for(j=0;j<4;j++)

{intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}

cout<<"改变后矩阵A的内容如下:

\n";

for(i=0;i<4;i++)

{for(j=0;j<4;j++)

cout<

cout<

}

}

(5)

#include"stdlib.h"

#include"iostream.h"

voidmain()

{inta[4][4],i,j,s=0;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

a[i][j]=rand()%41+30;

cout<<"矩阵A的内容如下:

\n";

for(i=0;i<4;i++)

{for(j=0;j<4;j++)

cout<

cout<

}

for(i=0;i<4;i++)

for(j=0;j<4;j++)

if(i==j||i+j==3)

s=s+a[i][j];

cout<<"对角线元素之和为:

"<

}

2.

用字符数组实现

#include"stdio.h"

voidmain()

{inti;chars1[50],s2[20];

gets(s1);

for(i=0;s1[i]!

='\0';i++)

s2[i]=s1[i];

s2[i]='\0';

puts(s2);

}

用字符指针实现

#include"stdio.h"

voidmain()

{inti;chars1[50],*p1=s1,*p2;

p2=newchar[20];

gets(p2);

while(*p2!

='\0')

*p1++=*p2++;

*p1='\0';

puts(s1);

}

 

3.

#include"stdio.h"

voidmain()

{chars[80],ch;

inti,len=0;

gets(s);

while(s[len]!

='\0')len++;

for(i=0;i

{ch=s[i];

s[i]=s[len-i-1];

s[len-i-1]=ch;

}

puts(s);

}

4.

#include"stdio.h"

#include"iostream.h"

voidmain()

{chars[80],ch;

inti,j;

gets(s);

cin>>ch;

for(i=j=0;s[i]!

='\0';i++)

if(s[i]!

=ch)

{s[j]=s[i];j++;}

s[j]='\0';

puts(s);

}

 

习题

一、选择题

1.下列叙述错误的是____A_____。

A.主函数中定义的变量在整个程序中都是有效的

B.复合语句中定义的变量只在该复合语句中有效

C.其它函数中定义的变量在主函数中不能使用

D.形式参数是局部变量

2.若函数的形参为一维数组,则下列说法中错误的是____B、才_____。

A.形参数组可以不指定大小

B.函数调用时对应的实参只能是数组名

C.函数调用时,系统会为形参数组分配存储单元

D.函数中对形参的修改将会影响对应的实参值

3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。

A.编译时出错

B.运行时出现不确定结果

C.不会出错,且返回值的类型以return语句中表达式的类型为准

D.不会出错,且返回值的类型以函数类型为准

4.下面的函数定义正确的是_____D____。

A.floatf(floatx;floaty)B.floatf(floatx,y)

{returnx*y;}{returnx*y;}

C.floatf(x,y)D.floatf(intx,inty)

{intx,y;returnx*y;}{returnx*y;}

5.下面函数头的定义格式正确的是____C_____。

A.voidsort(inta[n],intn)B.voidsort(inta[][],intn)

C.voidsort(inta[],intn)D.voidsort(inta[],n)

6.下面4个程序中输出结果是125的有____C_____。

(1).#include"iostream.h"

voidcube(intx)

{x=x*x*x;}

voidmain()

{

intx=5;cube(x);

cout<

}

(3).#include"iostream.h"

intcube(intx)

{x=x*x*x;return(x);}

voidmain()

{

intx=cube(5);

cout<

}

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

7.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。

A.m(&5,&j)B.m(5,j)C.m(5,&j)D.m(&5,j)

8.设函数的说明为:

voidfun(inta[],intm);,若有定义:

inta[10],n,x;则下面调用该函数正确的是____A_____。

A.fun(a,n);B.x=fun(a,n);C.fun(a[10],10);D.x=fun(a[],n);

9.下面函数说明正确的是____C_____。

A.voidf1(inta=3,intb,intc);B.voidf2inta,intb=3,intc);

C.voidf3(inta,intb,intc=3);D.voidf4(inta,intb,int3);

10.有两个函数分别为:

intf(int);和intf(int,int=100);,则下面说法正确的是_____B_____。

A.不能在同一个程序中定义

B.可以在同一个程序中定义,但不可以重载

C.可以在同一个程序中定义并可重载

D.以上说法均错误

11.以下几种函数模板的定义正确的是____A_____。

A.template

Tfun1(Ta,intb)

{……}

C.template

voidfun1(inta,intb)

{Ti;……}

12.下面程序的输出结果是____B_____。

#include"iostream.h"

intm=10;

voidf(intm,int&n)

{m=m+2;n=n+2;}

voidmain()

{

intn=5;

f(m,n);

cout<<"m="<

}

A.m=10n=5B.m=10n=7C.m=12n=7D.m=12n=5

二、阅读程序,写出运行结果

1.yes3not4

2.4

3.12

2516921

4.21234

5.m=5n=3

6.911

三、程序填空

1.该程序功能:

对x=1,2,...,10,求f(x)=x*x-5*x+sin(x)的最大值。

#include"iostream.h"

#include"math.h"

floatf(intx)

{

floaty;

y=x*x-5*x+sin(x);

______r

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

当前位置:首页 > 小学教育 > 语文

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

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