CC++程序设计教程龚沛曾课后习题答案全集.docx

上传人:b****9 文档编号:25719056 上传时间:2023-06-11 格式:DOCX 页数:29 大小:20.59KB
下载 相关 举报
CC++程序设计教程龚沛曾课后习题答案全集.docx_第1页
第1页 / 共29页
CC++程序设计教程龚沛曾课后习题答案全集.docx_第2页
第2页 / 共29页
CC++程序设计教程龚沛曾课后习题答案全集.docx_第3页
第3页 / 共29页
CC++程序设计教程龚沛曾课后习题答案全集.docx_第4页
第4页 / 共29页
CC++程序设计教程龚沛曾课后习题答案全集.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

CC++程序设计教程龚沛曾课后习题答案全集.docx

《CC++程序设计教程龚沛曾课后习题答案全集.docx》由会员分享,可在线阅读,更多相关《CC++程序设计教程龚沛曾课后习题答案全集.docx(29页珍藏版)》请在冰豆网上搜索。

CC++程序设计教程龚沛曾课后习题答案全集.docx

CC++程序设计教程龚沛曾课后习题答案全集

习题一

一、

1、C2、A3、B4、C5、D6、A7、C8、B

二、

1、main

2、数字、下划线

3、字符串

4、#include、#define

5、hex

6、.h

7、语法错误逻辑错误

8、Insert/RemoveBreakpoint

9、.cpp

10、Fileview

三、略

********************************************************

习题二

一、

1、B2、C3、D4、C5、D6、C7、C8、B9、B10、B11、D

二、

1、x+y!

=a+b

2、pow((ln(10)+x*y),3)

3、sin(w*u)/(cos(45*3.14/180)+3*x*x)注:

对于函数cos,其要求的参数是弧度表示。

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

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

6、1.0/(1.0/r1+1.0/r2+1.0/r3)

三、

1、a>d&&b<=d||a<=d&&b>d(a和b中有且只有一个大于d)

2、z=(x>y?

x:

y)

3、x<0&&y<0

4、x+y>z&&x+z>y&&y+z>x

5、int(x*100+0.5)/100.0

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、略

2、主要语句:

x%2==0?

cout<<"偶数":

cout<<"基数";

3、主要语句:

cout<

4、主要语句:

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

=0?

cout<<"闰年":

cout<<"非闰年";

5、主要语句:

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

******************************

第三章

一、

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、A、D3、A、B、C4、D5、C6、D7、A8、B

二、

1、678904321

2、144

3、m-n=14

三、

1、

#include"iomanip.h"

{0,1}

x[i]=x[i-1]+x[i-2]

setw(5)<

2、

rand()%100+1

j

"A("<

3、

b[m]=0

n

b[m]=b[m]/4

4、

gets(ch1)

gets(ch2)

*s1==*s2

r=0

5、

j=k=l=0

j

c[l]=a[j]

c[l++]=b[k++]

k

j

 

四、

1.

(1)

#include"stdlib.h"

#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],t,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(i=0;i<4;i++)

for(j=0;j

{t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

cout<<"转置后矩阵A的容如下:

\n";

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

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

cout<

cout<

}

}

(3)

#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["<

}

(4)

#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<

}

}

(5)

#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<

}

}

(6)

#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<<"对角线元素之和为:

"<

}

 

第五章习题

一、选择题

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

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

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

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

(D)形式参数是局部变量。

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

(A)形参数组可以不指定大小。

(B)调用函数时的对应实参必须是数组名。

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

(D)函数中对形参的修改将会影响实参值。

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

(A)编译时出错。

(B)运行时出现不确定结果。

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

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

4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。

(A)3(B)4(C)5(D)7

5.以下关于定义重载函数的要求中,错误的是_____D_____。

(A)要求参数个数不同。

(B)要求至少有一个参数类型不同。

(C)要求参数个数相同时,参数类型不同。

(D)要求函数的返回值不同。

6.下面的函数定义正确的是_____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;}

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

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

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

8.以下几种模板函数的定义错误的是____C_____。

(A)template

Tfun1(Ta,intb)

{……}

(C)template

voidfun1(inta,intb)

{Ti;……}

9.下面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);//将x改为5

cout<

}

(A)1(B)2(C)3(D)4

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

(A)voidf1(inta=3,intb,intc);

(B)voidf2inta,intb=3,intc);

(C)voidf3(inta,intb,intc=3);

(D)voidf4(inta,intb,int3);

11.设函数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)

12.设函数的说明为:

intfun(inta[],int&x);则下面调用该函数正确的是____B_____。

(A)fun(a,n);(B)x=fun(a,n);

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

 

二、写运行结果

1、

2、

3、

4、

5、

6、

三.程序填空

1.【程序说明】

分段函数为

【程序段】

floaty(floatx)

{if(x<=0)

return(x*x-x+1);

elsereturnx*x*x+x+3;

}

2.【程序说明】

函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。

m、n为非负整数。

如“abcdefghij”,后移动3个位置,成“hijabcdefg”。

【程序段】

voidbackmove(char*x,intn,intm)

{

inti,j;charw;

for(j=0;j

{w=*(x+n-1);

for(i=0;i

*x=w;

}

}

3.【程序说明】

函数index()为查找字符串sub是否是字符串st的子串。

若是,返回sub在st中首次出现的下标,否则返回-1。

字符串sub和st非空。

如sub:

"cd",st:

"abcdefcd",返回2。

【程序】

#include“iostream.h”

#include

voidmain()

{chars1[80],s2[80];

intindex(char[],char[]);

gets(s1);gets(s2);

if(index(s1,s2))

cout<<"子串在字符串中首次出现的下标:

"<

else

cout<<"找不到";

}

intindex(charst[],charsub[])

{inti,j,k;

for(i=0;st[i]!

='\0';i++)

{for(j=i,k=0;sub[k]!

='\0'&&st[j]==sub[k];k++,j++);

if(sub[k]=='\0')return(i);

}

return(0);

}

4.【程序说明】

函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。

二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|

下面程序为求方程在[1,7]区间的实根,精度取10-6。

【程序】

#include“math.h”

#include

doubleroot(doublex1,doublex2,doubleeps=1e-6)

{doublef(doublex);

doublex,y,y1;

y1=f(x1);

do{x=0.5*(x1+x2);

y=f(x);

if(y1*y>0.0)x1=x;

elseif(y1*y<0.0)x2=x;

}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);

return(x);

}

doublef(doublex)

{returnx*x*x-5*x*x+16*x-80;}

voidmain()

{cout<

5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。

【程序】

#defineSIZE13

#defineSIZE24

#include“iostream.h”

floatmax_value(floatx[][SIZE2]

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

当前位置:首页 > 教学研究 > 教学反思汇报

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

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