《 C++ 》课后题参考答案(详细版 第3 4章)
(2011-01-04 18:00:16)
标签:
校园 |
分类: ❀.学习の栈 |
第三章 习题
一、
1.
A.
2.
A.必须为.h;
3.
#if()
<语句序列1>
#else
<语句序列2>
#endif
A.整常量表达式;
4.
A.只能是常量;
5.
A.
;; B.a=17;
6.
for(int i(0),x=0;!x&&i<=5;i++)
A.5;
7.
while(int i=0)i- -;
A.0; B.1; C .5 ;
8.
已知:int i(5);
do{cout<<i- - <<endl;
i- - ;
}while(i!=0);
A.0;
9.
for(int
i(0),j(10);i=j=10;i++,j- -)
A.0;
10.
A.
{case a:a++;break;
case b:b++;break;
}
B.
{ case 1:a+b;break;
case 2:a-b
}|
C.
{case1,2:++a;
case3,4:++b;
}
D.
{case 5:a/5;break
default:a+b;
}
11.
A.
B.
C.
D.
12.
A.
B.
C.
D.
13.
A.
B.
C.
D.
14.
A.
B.
C.
D.
15.
A.
B.
C.
D.
二、
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.开关语句中的default关键字,只能放在该语句的末尾,不能放在开头或中间。×
11.Switch语句中必须有break语句否则无法退出switch语句。×
12.While循环语句的循环体至少执行一次。×
13.Do-while循环可以写成while循环的格式。√
14.For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。×
15.只有for循环的循环体可以是空语句,其他种循环的循环体不能用空语句。×
16.当循环体为空语句时,将说明该循环不作任何工作,只起延时作用。×
17.循环是可以嵌套的,一个循环体内可以包含另一种循环语句。√
18.在多重循环中,内重循环的循环变量应用的次数比外重的多。√
19.Break语句可以出现在各种循环体中。√
20.continue语句只能出现在循环体中。√
三、
1.
#include<iostream.h>
#define M 1.5
#define A(a) M*a
void main()
{
int x(5),y(6);
cout<<A(x+y)<<endl;
}
13.5
2.
#include<iostream.h>
#define MAX(a,b) (a)>(b)?(a):(b)
void main()
{
int m(1),n(2),p(0),q;
q=MAX(n,n+p)*10;
cout<<q<<endl;
}
20
3.
#include<iostream.h>
#include”f1.cpp”
void main()
{
int a(5),b;
b=f1(a);
cout<<b<<endl;
}
f1.cpp文件内容如下:
#define M(m) m*m
f1(int x)
{
int a(3);
return –M(x+a);
}
13
4.
void main()
{
int i(0);
while(++i)
{
if(i= =10) break;
if(i%3!=1) continue;
cout<<i<<endl;
}
}
1
4
7
5.
#include<iostream.h>
void main()
{
int i(1);
do{
i++;
cout<<++i<<endl;
if(i= =7) break;
}while(i= =3);
cout<<”Ok!\n”;
}
3
6.
#include<iostream.h>
void main()
{
int i(1),j(2),k(3),a(10);
if(!i)
a- -;
else if (j)
else
a=6;
a++;
cout<<a<<endl;
if(i<j)
a=5;
a+=2;
cout<<a<<endl;
}
6
7
7.
#include<iostream.h>
void main()
{
int i,j,a[8][8];
* * a=1;
for(i=1;i<8;i++)
{
* *(a+i)=1;
*(*(a+i)+i)=1;
for(j=1;j<i;j++)
}
for(i=0;i<8;i++)
{
for(j=0;j<=i;j++)
cout<<endl;
}
}
7.
1
1
1
1
1
1
8.
#include<iostream.h>
void main()
{
int x(5);
do{
switch(x%2)
{
case 1:x- -;
case 0:x++;
}
x- -;
cout<<x<<endl;
}while(x>0);
}
8.
1
9.
#include<iostream.h>
void main()
{
int a(5),b(6),i(0),j(0);
switch(a)
{
case 5:switch(b)
{
case 5:i++;break;
case 6:j++;break;
default: i++;j++;
}
case 6: i++;
default: i++;j++;
}
cout<<i<<”,“<<j<<endl;
}
1,2
10.
#include<iostream.h>
char input[]="SSSWILTECH1\1\11W\1WALLMP1";
void main()
{
int i;
char c;
for(i=2;(c=input[i])!='\0';i++)
{
switch(c)
{
case 'a':cout<<'i';
case'1':break;
case 1:while((c=input[++i])!='\1'&&c!='\0');
case 9:cout<<c;
case 'E':
case 'L':continue;
default :cout<<c; continue;
}
cout<<' ';
}
cout<<endl;
}
SWITCH⊙WAMP
四、按下列要求编程,并上机调试。
1.
2.
3.
4.
5.
6.
7.
8.
Y=
|
|
已知x值时,输出y值。
9.
讨论下述情况:
(1)b2-4ac=0,有两个相等实根;
(2)b2-4ac>0,有两个不等实根;
(3) b2-4ac<0,有两个共轭复根;
(4)a=0,不是二次方程。
10.编程输出如下图案。
第四章 习题
一、
1.
A.
2.
A.函数的类型;
3.
A.
B.
C.
D.
4.
A.
B.
C.
D.
5.
A.
B.
C.
D.
6.
A.
B.
C.
D.
7.
A.
B.
C.
D.
8.
A.参数个数;
9.
A.函数形参;
10.
A.register;
11.
A.register类;
12.
A.
13.
A.内联函数;
14.
A.实现共享;B.减少空间;C .提高速度;D.使用方便,提高可读性。
15.
B.
二、判断下列描述的正确性,对者划√,错者划×。
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
三、分析下列程序的输出结果。
1.#include<iostream.h>
#define N 5
void fun();
void main()
{
for (int i(1);i<N;i++)
fun();
}
void fun ()
{
static int a;
int b(2);
cout<<(a+=3,a+b)<<endl;
}
1.
8
11
14
2. #include<iostream.h>
int add(int a,int b);
void main()
{
extern int x,y;
cout<<add(x,y)<<endl;
}
int x(20),y(5);
int add(int a,int b)
{
int s=a+b;
return s;
}
25
3.#include<iostream.h>
void f(int j);
void main()
{
for(int i(1);i<=4;i++)
f(i);
}
void f(int j)
{
static int a(10);
int b(1);
b++;
cout<<a<<”+”<<b<<”+”<<j<<”=”<<a+b+j<<endl;
a+=10;
}
2.
20+2+2=24
30+2+3=35
40+2+4=46
4.#include<iostream.h>
void f(int n)
{
int x(5);
static int y(10);
if(n>0)
{
++x;
++y;
cout<<x<<”,”<<y<<endl;
}
}
void main()
{
int m(1);
f(m);
}
6,11
5.#include<iostream.h>
int fac(int a);
void main()
{
int s(0);
for(int i(1);i<=5;i++)
cout<<”5!+4!+3!+2!+1!=”<<s<<endl;
}
int fac(int a)
{
static int b=1;
b*=a;
return b;
}
5!+4!+3!+2!+1!=153
6.#include<iostream.h>
void fun(int ,int , int *);
void main()
{
int x,y,z;
fun(5,6,&x);
fun(7,x,&y);
fun(x,y,&z);
cout<<x<<”,”<<y<<”,”<<z<<endl;
}
void fun(int a,int b,int *c)
{
b+=a;
*c=b-a;
}
6,6,6
7.#include<iostream.h>
int add(int x, int y=8);
void main()
{
int a(5);
cout<<”sum1=”<<add(a)<<endl;
cout<<”sum2=”<<add(a,add(a))<<endl;
cout<<”sum3=”<<add(a,add(a,add(a)))<<endl;
}
int add(int x,int y)
{
}
sum1=13
sum2=18
sum3=23
8.#include<iostream.h>
#define N 6
int f1(int a);
void main()
{
int a(N);
cout<<f1(a)<<endl;
}
int f1(int a)
{
}
720
9.#include<iostream.h>
void swap(int &,int &);
void main()
{
int a(5),b(8);
cout<<”a=”<<a<<”,“<<”b=”<<b<<endl;
swap(a,b);
cout<<”a=”<<a<<”,“<<”b=”<<b<<endl;
}
void swap(int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}
a=5,b=8
a=8,b=5
10.#include<iostream.h>
int &f1(int n,int s[])
{
int &m=s[n];
return m;
}
void main()
{
int s[]={5,4,3,2,1,0};
f1(3,s)=10;
cout<<f1(3,s)<<endl;
}
10
11. #include<iostream.h>
void print(int),print(char),print(char *);
void main()
{
int u(1998);
print(‘u’);
print(u);
print(“abcd”);
}
void print(char x)
{
}
void print(char *x)
{
}
void print(int x)
{
}
u
1998
abcd
12.#include<iostream.h>
void ff(int),ff(double);
void main()
{
float a(88.18);
ff(a);
char b(‘a’);
ff(b);
}
void ff(int x)
{
}
void ff(double x)
{
}
ff(double):88.18
ff(int):97
四、
1.
2.
3.
4.
5.
6.
7.
8.
9.
10. 已知二维字符数组s[][5]={“abcd”,”efgh”,”ijkl”,”mnop”};使用字符串处理函数,将该数组的4个字符串连接起来,组成一个字符串:abcdefghijklmnop。
11. 编程求下式的值:n1+n2+n3+n4+…+n10,其中n=1,2,3。编写函数时,设置参数n的默认值为2。
12. 编一个程序验证哥德巴赫猜想:任何一个充分大的偶数(大于等于6)总可以表示成两个素数之和。要求编一个求素数prime()函数,它有一个int型参数,当参数值为素数时返回1,否则返回0。