2022年同济c课本习题参考答案 .pdf
《2022年同济c课本习题参考答案 .pdf》由会员分享,可在线阅读,更多相关《2022年同济c课本习题参考答案 .pdf(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学而不思则惘,思而不学则殆习题 5 一、选择题1. 下列叙述错误的是_A_ 。 A. 主函数中定义的变量在整个程序中都是有效的 B. 复合语句中定义的变量只在该复合语句中有效 C. 其它函数中定义的变量在主函数中不能使用 D. 形式参数是局部变量2. 若函数的形参为一维数组,则下列说法中错误的是_B、才_。A. 形参数组可以不指定大小B. 函数调用时对应的实参只能是数组名C. 函数调用时,系统会为形参数组分配存储单元D. 函数中对形参的修改将会影响对应的实参值3. 若函数的类型和return语句中的表达式的类型不一致,则_D_。A. 编译时出错B. 运行时出现不确定结果C. 不会出错 , 且返
2、回值的类型以return语句中表达式的类型为准D. 不会出错 , 且返回值的类型以函数类型为准4. 下面的函数定义正确的是_D_。A. float f(float x;float y) B. float f(float x,y) return x*y; return x*y; C. float f(x,y) D. float f( int x, int y) int x,y ; return x*y; return x*y; 5. 下面函数头的定义格式正确的是_C_。A. void sort(int an,int n) B. void sort(int a ,int n) C. void so
3、rt(int a ,int n) D. void sort(int a ,n) 6. 下面 4 个程序中输出结果是125 的有 _C_。(1). #include iostream.h void cube(int x) x=x*x*x; void main() int x=5;cube(x); coutx; (3). #include iostream.h int cube(int x) x=x*x*x; return(x); void main() int x=cube(5); coutx; (4). #include iostream.h int x=5; void cube() x=x*
4、x*x; void main() cube(); coutx; (2). #include iostream.h void cube(int &x) x=x*x*x; void main() int x=5; cube(x); coutx; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 34 页学而不思则惘,思而不学则殆A. 1 B. 2 C. 3 D. 4 7. 设函数 m()的说明形式为void m(int,int *); 利用函数 m()对数 5 和整数 j 作函数 m()定义的计算,正确的调用形式为_C_ 。A. m(&5,&
5、j) B. m(5,j) C. m(5,&j) D. m(&5,j) 8. 设函数的说明为: void fun(int a,int m); ,若有定义: int a10,n,x; 则下面调用该函数正确的是 _A_。A. fun( a, n); B. x=fun( a, n); C. fun( a10, 10); D. x=fun( a, n); 9. 下面函数说明正确的是_C_ 。A. void f1(int a=3, int b, int c); B. void f2 int a, int b=3, int c); C. void f3(int a, int b, int c=3); D.
6、void f4(int a, int b, int 3); 10. 有两个函数分别为: int f(int);和 int f(int,int =100);,则下面说法正确的是_B_。A. 不能在同一个程序中定义B. 可以在同一个程序中定义,但不可以重载C. 可以在同一个程序中定义并可重载D. 以上说法均错误11. 以下几种函数模板的定义正确的是_A_。A. template T fun1(T a,int b) C. template void fun1(int a,int b) T i; 12. 下面程序的输出结果是_B_。#include iostream.h int m=10; void
7、f(int m,int &n) m=m+2; n=n+2; void main() int n=5; f(m,n); coutm=m n=nendl; A. m=10 n=5 B. m=10 n=7 C. m=12 n=7 D. m=12 n=5 二、阅读程序,写出运行结果1. yes 3 not 4 2. 4 3. 12 25 16 9 2 1 4. 21234 5. m=5n=3 B. template void fun1(T1 a,T1 b,T2 c) D. template T2 fun1(T1 a,T1 b) 精选学习资料 - - - - - - - - - 名师归纳总结 - - -
8、 - - - -第 2 页,共 34 页学而不思则惘,思而不学则殆6. 911 三、程序填空1. 该程序功能:对x=1,2,.,10,求 f(x)=x*x-5*x+sin(x)的最大值。#include iostream.h #include math.h float f(int x) float y; y=x*x-5*x+sin(x); _return y _; void main() int x; float max; _max=f(1)_; for(x=2;xmax)max=f(x)_ ; coutmaxendl; 2. 函数backmove() 是把字符指针x 所指的字符串平移m 个字
9、符,即将最后m 个字符移到串首。如“abcdefghij”,平移 3 个字符,成“ hijabcdefg”。#include stdio.h #include string.h void backmove(char *x,int m) int i,j,n;char w; n=strlen(x); for(j=0;jm;j+) w=_*(x+n-1)_; for(i=0;in-1;i+) *(x+n-1-i)=_ *(x+n-2-i)_; _*x_=w; void main() char s20; gets(s); _backmove(s,3)_; /假设平移 3 个字符 puts(s); 3.
10、 函数 index()为查找字符串sub 是否是字符串st 的子串。若是,返回sub 在 st 中首次出现的下标,否则返回 -1。字符串 sub 和 st 非空。如 sub: cd ,st: abcdefcd ,返回 2。#include iostream.h 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 34 页学而不思则惘,思而不学则殆#include stdio.h void main() char s180,s280; _ int index(char ,char );_; gets(s1);gets(s2); if(_ind
11、ex(s1,s2)_) cout子串在字符串中首次出现的下标:index(s1,s2); else cout找不到 ; int index(char st,char sub) int i,j,k; for(i=0;sti!=0;i+) for(j=i,k=0;subk!= 0&stj=subk ;_ k+,j+_); if(subk= 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)
12、符号和 f(a) 符号确定 c 代替 a 或 b ,使根所在区间每次减半,直到 |a- b|eps 或|f(c)|0.0)_ x1=x_; else if (y1*y=eps_&_fabs(x2-x1)=eps); return(x); double f(double x) return x*x*x-5*x*x+16*x-80; void main() 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 34 页学而不思则惘,思而不学则殆cout_root(1,7)_endl; 5随机生成10 个 1100 之间的数放在一维数组中,求其平均
13、值及最大的元素值。#include iostream.h #include stdlib.h const int N=10; void fun(float *p,float *p1,float *p2) float sum,max1; _max1=*p_; for(int i=1;iN;i+) if (max1*p) max1=*p; sum=sum+*p; p+; _*p1=max1_; _*p2=sum/N_; void main() float a10,aver,max,x; for(int i=0;i10;i+) x=rand() % 100+1; ai=x; for(i = 0;i1
14、0;i+) coutai ; coutendl; _fun(a,max,aver)_; cout 平均值: aver 最大值: max=0;-i) chk+=b _ci_ ; _chk=0_; void main() 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 34 页学而不思则惘,思而不学则殆 char ch10;int m,h; cinmh; convert(m,h,ch); coutchendl; 四、编写程序1. 编写函数,功能为将字符串s 中的字符 c1 用字符 c2 替换,并加以调用。函数形式为:void match(c
15、har s, char c1,char c2); #include void replace(char s,char c1,char c2) char *p=s; while(*p!=0) if(*p=c1) *p=c2; p+; void main() char s80,c1,c2; cins; cinc1c2; replace(s,c1,c2); coutsendl; 2. 编写函数,功能为求圆的周长和面积。函数分别定义为如下形式:double area(double r, double * girth ,double pi=3.14159); void fun(double r, dou
16、ble &girth ,double &area,double pi=3.14159); 分别编二个程序实现,半径从键盘输入。方法一、#include double area(double r,double *girth,double pi=3.14159) *girth=2*pi*r; return(pi*r*r); void main() double r,len,s; cinr; s=area(r,&len); coutlen=len,s=sendl; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 34 页学而不思则惘,思而不学
17、则殆 方法二#include void fun(double r,double &girth,double &area,double pi=3.14159) girth=2*pi*r; area=pi*r*r; void main() double r,len,s; cinr; fun(r,len,s); coutlen=len,s=sendl; 3. 编写函数,功能是求二维数组中最大元素所在的行号和列号,再编写主函数调用之。#define SIZE1 3 #define SIZE2 4 #include iostream.h #include stdlib.h float max_value
18、(float x4,int &ii,int &jj) float max=x00; for(int i=0;iSIZE1;i+) for(int j=0;jmax) max=xij; ii=i; jj=j; return(max); void main() int i,j,t1,t2;float aSIZE1SIZE2; coutenter the array:n; for(i=0;iSIZE1;i+) for(j=0;jSIZE2;j+) aij=rand()%101; coutaij ; coutendl; coutmax value is max_value(a,t1,t2); cout
19、 line=t1 row=t2endl; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 34 页学而不思则惘,思而不学则殆4. 编写函数,将两个字符串s 和 t 的前 n 个字符拼接成新的字符串,结果存放在s 中。如果 s 或 t 中字符串的长度不足n,按实际长度处理。例如,如果有ABCDEFGH 和abcdefghijk,n为 3,则新的字符串为”ABCabc ”,并加以调用。函数形式为:void mystrcat(char s,char t,int n); #include #include void mystrcat(char
20、s,char t,int n) int l1=strlen(s),l2=strlen(t); int k1=l1n?n:l1,k2=l2n?n:l2; for(int i=0;ist; cinn; mystrcat(s,t,n); coutsendl; 5. 编写函数,其功能是逐字符比较两个字符串s1 和 s2,并将 s1 中第一个与s2 不相同字符的地址返回给主函数。再编写主函数调用该函数,并在主函数中输出s1 从这个位置开始的子串。函数形式为:char *dif(char s1,char s2); #include #include stdio.h char *dif(char s1,ch
21、ar s2) int i=0; while(s1i=s2i&s1i!=0) i+; if(s1i!=0) return(&s1i); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 34 页学而不思则惘,思而不学则殆else return NULL; void main() char s30,t30; cinst; char *p; if(p=dif(s,t)!=NULL) coutpendl; else couts包含于 t 中n; 6. 用递归方法求正整数m ,n 的最大公约数。#include int gcd(int m,int
22、n) int r=m%n; if(r!=0) return gcd(n,r); else return(n); void main() int m,n; cinmn; coutgcd(m,n)endl; 7. 编写四个同名函数max ,分别求两个整数、三个整数,两个双精度数、三个双精度数的最大值。#include int max(int a,int b) return(ab?a:b); int max(int a,int b,int c) int t=max(a,b); return(max(t,c); double max(double a,double b) return(ab?a:b);
23、 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 34 页学而不思则惘,思而不学则殆double max(double a,double b,double c) double t=max(a,b); return(max(t,c); void main() double x,y,z; int a,b,c; cinabc; cinxyz; coutmax(a,b)endlmax(a,b,c)endl; coutmax(x,y)endlmax(x,y,z)endl; 第四章习题一、1.C 2.A 3.C 4.D 5.C 6.B 7.A 8.
24、B 二、1. 6789054321 2. 4 3. 14 三、1. (1)0,1 (3)xi=xi-1+xi-2 (4)setw(5)xi 2. (1)rand()%101 (2)jai/2 (3)A(i)= 3. (1)bm=0 (2)nm+4 (3)bm=bm/4 4.( 该题目需要加上头文件#include stdio.h) (1)gets(s1) (2)gets(s2) (3)*s1=*s2 (4) r=0 5. (1)j=k=l=0 (2)jM&kN (3)cl=aj (4)cl+=bk+ (5)kN (6)jM 四、1.(1) #include stdlib.h #include
25、iostream.h void main() int a44,b44,c44,i,j; for(i=0;i4;i+) for(j=0;j4;j+) aij=rand()%41+30; for(i=0;i4;i+) for(j=0;j4;j+) bij=rand()%35+101; cout 矩阵 A的内容如下 :n; for(i=0;i4;i+) for(j=0;j4;j+) coutaij ; coutendl; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 34 页学而不思则惘,思而不学则殆 cout 矩阵 B的内容如下 :n;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年同济c课本习题参考答案 2022 同济 课本 习题 参考答案
限制150内