同济c课本习题参考答案Word文档格式.docx
- 文档编号:21372059
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:53
- 大小:28.29KB
同济c课本习题参考答案Word文档格式.docx
《同济c课本习题参考答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《同济c课本习题参考答案Word文档格式.docx(53页珍藏版)》请在冰豆网上搜索。
cube(x);
cout<
(4).#include"
voidcube()
{cube();
}
(3).#include"
intcube(intx)
return(x);
voidmain()
intx=cube(5);
}
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_____。
B.template<
classT1,T2>
voidfun1(T1a,T1b,T2c)
{……}
A.template<
classT>
Tfun1(Ta,intb)
D.template<
classT1,classT2>
T2fun1(T1a,T1b)
{……}
C.template<
voidfun1(inta,intb)
{Ti;
……}
12.下面程序的输出结果是____B_____。
#include"
intm=10;
voidf(intm,int&
n)
{m=m+2;
n=n+2;
}
{
intn=5;
f(m,n);
"
m="
m<
n="
n<
endl;
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)的最大值。
math.h"
floatf(intx)
floaty;
y=x*x-5*x+sin(x);
______returny_______;
intx;
floatmax;
____max=f
(1)___;
for(x=2;
x<
=10;
x++)
___if(f(x)>
max)max=f(x)__;
max<
2.函数backmove()是把字符指针x所指的字符串平移m个字符,即将最后m个字符移到串首。
如“abcdefghij”,平移3个字符,成“hijabcdefg”。
stdio.h"
string.h"
voidbackmove(char*x,intm)
inti,j,n;
charw;
n=strlen(x);
for(j=0;
j<
m;
j++)
{w=_____*(x+n-1)_____;
for(i=0;
i<
n-1;
i++)*(x+n-1-i)=_____*(x+n-2-i)_____;
____*x____=w;
chars[20];
gets(s);
______backmove(s,3)______;
//假设平移3个字符
puts(s);
3.函数index()为查找字符串sub是否是字符串st的子串。
若是,返回sub在st中首次出现的下标,否则返回-1。
字符串sub和st非空。
如sub:
"
cd"
,st:
abcdefcd"
,返回2。
chars1[80],s2[80];
______intindex(char[],char[]);
______;
gets(s1);
gets(s2);
if(_______index(s1,s2)________)
子串在字符串中首次出现的下标:
index(s1,s2);
else
找不到"
;
intindex(charst[],charsub[])
inti,j,k;
st[i]!
='
\0'
i++)
{
for(j=i,k=0;
sub[k]!
='
&
st[j]==sub[k];
____k++,j++_____);
if(sub[k]=='
)_____return(i)______;
return0;
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|<
eps或|f(c)|<
eps,c即为所求的根,其中eps为精度。
下面程序为求方程x3-5x2+16x-80=0在[1,7]区间的实根,精度取10-6。
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);
doublef(doublex)
{returnx*x*x-5*x*x+16*x-80;
{cout<
_____root(1,7)_____<
5.随机生成10个1~100之间的数放在一维数组中,求其平均值及最大的元素值。
stdlib.h"
constintN=10;
voidfun(float*p,float*p1,float*p2)
floatsum,max1;
_______max1=*p________;
for(inti=1;
N;
i++)
{
if(max1<
*p)max1=*p;
sum=sum+*p;
p++;
_______*p1=max1_________;
_______*p2=sum/N_________;
floata[10],aver,max,x;
for(inti=0;
10;
i++)
{
x=rand()%100+1;
a[i]=x;
for(i=0;
i++)cout<
a[i]<
_______fun(a,max,aver)______;
平均值:
aver<
最大值:
6.函数convert的功能是将一个十进制整数转换为二到十六进制的字符串。
voidconvert(intm,inth,charch[])
charb[17]="
0123456789ABCDEF"
intc[10],i=0,k=0;
do
c[___i++__]=m%h;
while(____(m=m/h)!
=0_____);
for(--i;
i>
=0;
--i)
{ch[k++]=b[___c[i]___];
______ch[k]='
_______;
charch[10];
intm,h;
cin>
>
m>
h;
convert(m,h,ch);
ch<
四、编写程序
1.编写函数,功能为将字符串s中的字符c1用字符c2替换,并加以调用。
函数形式为:
voidmatch(chars[],charc1,charc2);
#include<
iostream.h>
voidreplace(chars[],charc1,charc2)
{char*p=s;
while(*p!
)
if(*p==c1)
*p=c2;
{chars[80],c1,c2;
cin>
s;
c1>
c2;
replace(s,c1,c2);
s<
2.编写函数,功能为求圆的周长和面积。
函数分别定义为如下形式:
doublearea(doubler,double*girth,doublepi=3.14159);
voidfun(doubler,double&
girth,double&
area,doublepi=3.14159);
分别编二个程序实现,半径从键盘输入。
方法一、
doublearea(doubler,double*girth,doublepi=3.14159)
*girth=2*pi*r;
return(pi*r*r);
{doubler,len,s;
r;
s=area(r,&
len);
len="
len<
s="
方法二
voidfun(doubler,double&
girth,double&
area,doublepi=3.14159)
girth=2*pi*r;
area=pi*r*r;
fun(r,len,s);
3.编写函数,功能是求二维数组中最大元素所在的行号和列号,再编写主函数调用之。
#defineSIZE13
#defineSIZE24
floatmax_value(floatx[][4],int&
ii,int&
jj)
floatmax=x[0][0];
for(inti=0;
SIZE1;
for(intj=0;
SIZE2;
if(x[i][j]>
max)
{max=x[i][j];
ii=i;
jj=j;
return(max);
inti,j,t1,t2;
floata[SIZE1][SIZE2];
enterthearray:
\n"
for(i=0;
{for(j=0;
{a[i][j]=rand()%101;
a[i][j]<
maxvalueis"
<
max_value(a,t1,t2);
line="
t1<
row="
t2<
4.编写函数,将两个字符串s和t的前n个字符拼接成新的字符串,结果存放在s中。
如果s或t中字符串的长度不足n,按实际长度处理。
例如,如果有"
ABCDEFGH"
和"
abcdefghijk"
n为3,则新的字符串为”ABCabc”,并加以调用。
voidmystrcat(chars[],chart[],intn);
string.h>
voidmystrcat(chars[],chart[],intn)
intl1=strlen(s),l2=strlen(t);
intk1=l1>
n?
n:
l1,k2=l2>
l2;
k2;
s[k1++]=t[i];
s[k1]='
chars[30],t[30];
intn;
s>
t;
n;
mystrcat(s,t,n);
5.编写函数,其功能是逐字符比较两个字符串s1和s2,并将s1中第一个与s2不相同字符的地址返回给主函数。
再编写主函数调用该函数,并在主函数中输出s1从这个位置开始的子串。
char*dif(chars1[],chars2[]);
char*dif(chars1[],chars2[])
inti=0;
while(s1[i]==s2[i]&
s1[i]!
i++;
if(s1[i]!
return(&
s1[i]);
elsereturnNULL;
char*p;
if((p=dif(s,t))!
=NULL)
p<
cout<
s包含于t中\n"
6.用递归方法求正整数m,n的最大公约数。
intgcd(intm,intn)
intr=m%n;
if(r!
=0)
returngcd(n,r);
return(n);
intm,n;
gcd(m,n)<
7.编写四个同名函数max,分别求两个整数、三个整数,两个双精度数、三个双精度数的最大值。
intmax(inta,intb)
return(a>
b?
a:
b);
intmax(inta,intb,intc)
intt=max(a,b);
return(max(t,c));
doublemax(doublea,doubleb)
doublemax(doublea,doubleb,doublec)
doublet=max(a,b);
{doublex,y,z;
inta,b,c;
a>
b>
c;
x>
y>
z;
max(a,b)<
endl<
max(a,b,c)<
max(x,y)<
max(x,y,z)<
第四章习题
一、
1.C2.A3.C4.D5.C6.B7.A8.B
二、
1.67890543212.43.14
三、
1.
(1){0,1}(3)x[i]=x[i-1]+x[i-2](4)setw(5)<
x[i]
2.
(1)rand()%101
(2)j<
a[i]/2(3)"
A("
)="
3.
(1)b[m]=0
(2)n<
m+4(3)b[m]=b[m]/4
4.(该题目需要加上头文件#include"
(1)gets(s1)
(2)gets(s2)(3)*s1==*s2(4)r=0
5.
(1)j=k=l=0
(2)j<
M&
k<
N(3)c[l]=a[j](4)c[l++]=b[k++](5)k<
N(6)j<
M
四、
1.
(1)
{inta[4][4],b[4][4],c[4][4],i,j;
4;
a[i][j]=rand()%41+30;
b[i][j]=rand()%35+101;
矩阵A的内容如下:
{for(j=0;
'
'
矩阵B的内容如下:
b[i][j]<
c[i][j]=a[i][j]+b[i][j];
矩阵C的内容如下:
c[i][j]<
(2)
{inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;
i+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 同济 课本 习题 参考答案