1、C+课后习题答案杨志强 龚沛增 完整版第一章一、 选择题C A B C A A C B二、 填充题1 main()2 数字0-9、下划线3字符串4#include #define5hex6.h7语法错误和逻辑错误8Insert/Remove Breakpoint9.cpp10Fileview三、 简答题1 C+是C语言的超集。C+中的类和对象部分,C语言没有,C+是面向对象的程序设计。见教材P3。2 C/C+程序是由一个或多个函数组成,其中必须要有一个main()函数。在一个函数内,语句的执行是从上到下的。3 a? , 3a, a-b, f(x), A D, a.txt, D $, , dou
2、ble4 C/C+程序书写形式自由。一行可以写多条语句,一条语句也可以分别写在不同行上。区别大小写字母。5 用尖括号时,预处理程序在系统指定的文件夹中寻找文件;用双引号时,预处理程序首先在当前文件所在的文件目录中寻找文件,若找不到再到系统指定的文件夹中查找。6 最好的调试手段是设置断点,并让程序运行到该断点,然后在Debug窗口观察各变量的值,从中发现错误。第二章一、 选择题B C D C D C C C B B二、1(x+y)!=(a+b)2pow(log(10)+x*y),3)3sin(w*u)/(cos(45*180/3.14)+3*pow(x,y)4exp(3)+sqrt(2*x+3*
3、y)5fabs(x-y)+(x+y)/(3*x)61/(1/r1+1/r2+1/r3)三、1ad|bd2z=xy?x : y3x0&yz|y+zz|x+zy5(int)(x*100+0.5)/100.6d0&drh;v=3.1416*r*r*h;coutabc;ave=(a+b+c)/3;min=(ab)?a:b;min=(cmin)?c:min;coutave=ave min=minendl;3.#include iostream.hvoid main()char c1=1,c2=2;int x;x=10*(c1-0)+c2-0;coutxx;c1=x/100;c2=x/10%10;c3=x
4、%10;x=100*c3+10*c2+c1;coutxyear;x=year%400=0|year%4=0&year%100!=0;x!=0?coutyearis a leap year!: coutyearyear;x=(year%400=0|year%4=0&year%100!=0)?y: n;coutxx;y=log(x*x+3)/log(10)+3.14/2*cos(40*3.14/180);cout0 count(2)cinmn m=m-n n=n-m(3)n=m n=n/5 m=m+5四、1.#include iostream.h#include math.hvoid main()
5、float x,y; coutinput x:x; if(x5) y=fabs(x); else if(x20) y=3*x*x-2*x+1; else y=x/5; coutx=x,y=yendl;2.#include iostream.hvoid main() float s,p,t,w; coutinput s:s; switch(int(s)/1000) case 0:p=0;break; case 1:p=0.05;break; case 2:p=0.08;break; case 3: case 4:p=0.1;break; default:p=0.15;break; t=s*p;
6、w=s-t; cout纳税款=t,实得工资=wendl;3.#include iostream.hvoid main()int m,count=0; for(m=100;m1000;m+) if(m%10+m/10%10+m/100=5) count+; coutcount=countendl;4.#include iostream.hvoid main()int m,n; for(m=0;m=30;m+) for(n=0;n=30;n+) if(m*2+n*4=90&m+n=30) cout鸡:m兔:n1e-6;n+) t=t*n; e=e+1/t; coute=eendl;6.#inclu
7、de iostream.hvoid main()int x,y; for(x=1;x=100;x+) for(y=1;y=100;y+) if(x*x+2*x=y*y*y) coutx=x,y=yendl;7.#include iostream.h#include stdio.hvoid main()char ch; while(ch=getchar()!=.) if(ch= ) coutendl; else coutch;8.#include iostream.h#include math.hvoid main()int m,k1,k2; for(m=0;m=1000;m+) k1=sqrt
8、(m+100); k2=sqrt(m+100+168); if(k1*k1=m+100&k2*k2=m+100+168) coutm是满足条件的数0) x1=x; else x2=x; while(fabs(x2-x1)eps); coutx;第四章一、1.C 2.A 3.C 4.D 5.C 6.B 7.A 8.B二、1. 678904321 2. 4 3. 14三、1.(1)0,1 (3)xi=xi-1+xi-2 (4)setw(5)xi2.(1)rand()%101 (2)jai/2 (3)A(i)=3.(1)bm=0 (2)nm+4 (3)bm=bm/44.(1)gets(s1) (2)
9、gets(s2) (3)*s1=*s2 (4) r=05.(1)j=k=l=0 (2)jM&kN (3)cl=aj (4)cl+=bk+ (5)kN (6)jM四、1.(1)#include stdlib.h#include iostream.hvoid 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+) co
10、utaij ; coutendl; cout矩阵B的内容如下:n; for(i=0;i4;i+) for(j=0;j4;j+) coutbij ; coutendl; for(i=0;i4;i+) for(j=0;j4;j+) cij=aij+bij; cout矩阵C的内容如下:n; for(i=0;i4;i+) for(j=0;j4;j+) coutcij ; coutendl; (2)#include stdlib.h#include iostream.hvoid main()int a44,b44,c44,i,j,max,imax,jmax; for(i=0;i4;i+) for(j=0
11、;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; cout矩阵B的内容如下:n; for(i=0;i4;i+) for(j=0;j4;j+) coutbij ; coutendl; for(i=0;i4;i+) for(j=0;j4;j+) cij=aij+bij; cout矩阵C的内容如下:n; for(i=0;i4;i+) for(j=0;j4;j+) cout
12、cij ; coutendl; max=c00; for(i=0;i4;i+) for(j=0;jmax) max=cij; imax=i; jmax=j; coutmax=cimaxjmax=maxendl;(3)#include stdlib.h#include iostream.hvoid main()int a44,b44,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
13、;i4;i+) for(j=0;j=i;j+) coutaij ; coutendl; cout矩阵B的主对角线以上元素内容如下:n; for(i=0;i4;i+) for(j=i;j4;j+) coutbij ; coutendl; (4)#include stdlib.h#include iostream.hvoid main()int a44,i,j; for(i=0;i4;i+) for(j=0;j4;j+) aij=rand()%41+30; cout矩阵A的内容如下:n; for(i=0;i4;i+) for(j=0;j4;j+) coutaij ; coutendl; for(j
14、=0;j4;j+) int t=a0j; a0j=a2j; a2j=t; cout改变后矩阵A的内容如下:n; for(i=0;i4;i+) for(j=0;j4;j+) coutaij ; coutendl; (5)#include stdlib.h#include iostream.hvoid main()int a44,i,j,s=0; for(i=0;i4;i+) for(j=0;j4;j+) aij=rand()%41+30; cout矩阵A的内容如下:n; for(i=0;i4;i+) for(j=0;j4;j+) coutaij ; coutendl; for(i=0;i4;i+
15、) for(j=0;j4;j+) if(i=j|i+j=3) s=s+aij; cout对角线元素之和为:sendl;2.用字符数组实现#include stdio.hvoid main()int i;char s150,s220; gets(s1); for(i=0;s1i!=0;i+) s2i=s1i;s2i=0;puts(s2);用字符指针实现#include stdio.hvoid main()int i;char s150,*p1=s1,*p2; p2=new char20; gets(p2); while(*p2!=0) *p1+=*p2+; *p1=0;puts(s1);3.#i
16、nclude stdio.hvoid main() char s80,ch; int i,len=0; gets(s); while(slen!=0)len+; for(i=0;ich; for(i=j=0;si!=0;i+) if(si!=ch) sj=si;j+; sj=0; puts(s);习 题一、选择题1. 下列叙述错误的是_A_。 A. 主函数中定义的变量在整个程序中都是有效的 B. 复合语句中定义的变量只在该复合语句中有效 C. 其它函数中定义的变量在主函数中不能使用 D. 形式参数是局部变量2. 若函数的形参为一维数组,则下列说法中错误的是_B、才_。A. 形参数组可以不指定大
17、小B. 函数调用时对应的实参只能是数组名C. 函数调用时,系统会为形参数组分配存储单元D. 函数中对形参的修改将会影响对应的实参值3. 若函数的类型和return语句中的表达式的类型不一致,则_D_。A. 编译时出错B. 运行时出现不确定结果C. 不会出错,且返回值的类型以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
18、, 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 sort(int a ,int n) D. void sort(int a ,n)6. 下面4个程序中输出结果是125的有_C_。(1). #include iostream.hvoid cube(int x) x=x*x*x; void main() int x=5;cube(x); coutx; (3). #include iostream.hi
19、nt cube(int x) x=x*x*x; return(x); void main() int x=cube(5); coutx; A. 1 B. 2 C. 3 D. 47. 设函数m()的说明形式为void m(int,int *); 利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_C_。A. m(&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,
20、 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. void f4(int a, int b, int 3);10. 有两个函数分别为: int f(int);和int f(int,int =100);,则下面说法正确的是_B_。A. 不能在同一个程序中定义B. 可以在同一个程序中定义,但不可以重载C. 可以在同一个程序中定
21、义并可重载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.hint m=10; void 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 42. 43. 12 25 16 9 2 14. 212345. m=5n=36. 911三、程序填空1. 该程序功能:对x=1,2,.,10,求f(x)=x*x-5*x+sin(x)的最大值。#include iostream.h#include math.hfloat f(int x)float y; y=x*x-5*x+sin(x); _r
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1