C++程序设计教程 课后答案第三章 李秉璋

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.简答题
2.1函数的作用是什么?如何定义函数?什么叫函数原型?
2.2什么叫形式参数?什么叫实际参数?C++函数参数有什么不同的传递方式?请写一个验证程序说明。
2.3 C++函数通过什么方式传递返回值?若返回引用类型时,是否可以返回一个算术表达式?为什么?
2.4变量的生存期和变量作用域有什么区别?请举例说明。
f(a,b);
cin>>a>>b>>c;
f(a,b,c);
return 0;
}
void f(int a,int b,int c){
int t;
if(a<b){
t=a;a=b;b=t;
}
if(a<c){
t=a;a=c;c=t;
}
if(b<c){
t=b;b=c;c=t;
}
cout<<a<<","<<b<<","<<c<<endl;
#include <iostream.h>
#include <math.h>
bool IsPrime(long);
void main()
{
long i,j,k;
const int N=200;
for(i=3;i<=N;i=i+2)
if(IsPrime(i))
cout<<i<<",";
cout<<endl;
for(i=6;i<=N;i+=2)
{
k=i/2;
for(j=2;j<=k;j++)
if (IsPrime(j) && IsPrime(i-j))
{
cout<<i<<"="<<j<<"+"<<i-j<<endl;
break;
}
}
}
bool IsPrime(long n)
{
long i,k;
k=(int)sqrt(n);i=1;
{ return (x>y?x:y);}
int main() {
int m(3),n(4);
max(m,n) --;
cout<<m<<”\t”<<n;
}
3 3
4.7 int f(int i) {return ++i;}
int g(int &i) {return ++i;}
int main() {
int a(0),b(0);
1.概念填空题
1.1一个C++程序是由一个或多个函数所组成,即使是最简单的程序,也必须有一个main函数。该函数是程序执行的起点和终点。C++中,函数不允许嵌套定义,允许嵌套调用。
1.2函数执行过程中通过return语句将函数值返回,当一个函数不需要返回值,需要使用void作为类型名。
1.3在C++中,如果函数定义在后,调用在先,需要原型声明。其格式和定义函数时的函数头的形式基本相同,但参数表中形参不是必须的,同时必须以;结尾。
using namespace std;
int age( int n)
{int f;
if( n==1) f= 10;
else f=age(n-1)+2;
return f;
}
int main()
{cout<<"age:”<<age( 5)<<endl;}
age:18
4.6 int& max(int& x,int& y)
}
int f( int a)
{int b=0,c=1;
b++;c++;
return(a+pow(b, 2)+c);
}
3 4 5
4.2 #include <iostream>
using namespace std;
void func(int a, int b, int c=3, int d=4);
int main()
}
5.6用递归函数实现勒让德多项式。并在主函数中求P5(1.4)。
Pn(x)=
#include<iostream>
usingnamespacestd;
doubleP(intn,doublex){
if(n==0)return1;
if(n==1)returnx;
return((2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x))/n;
C.int &r; D.int &r=&i;
4.写出下列程序运行结果
4.1 #include <iostream>
#include <math.h>
using namespace std;
int f( int);
int main()
{int i;
for( i=0; i<3; i++)
cout<<f(i)<<endl;
{int c;
a+=a;b+=b;
c=f2( a+b,b+1);
return c;
}
int f2( int a,int b)
{int c;
c=b%2;
return a+c;
}
int main()
{int a=3,b=4;
cout<<f1(a,b)<<endl;
}
15
4.5#include <iostream>
cout<<x<<”,”<<y<<<=”,”<<z<<endl;
}
void func( int a,int b,int &c)
{b +=a; c=b-a;}
4.4 #include <iostream>
using namespace std;
int f2( int, int);
int f1(int a,int b)
}
5.8定义结构类型Triangle,表示一个矩形,它的两个数据成员length和width分别表示长和宽。定义重载函数add,能完成int,double,Triangle类型数据的相加。其中Triangle类型数据相加的含义是两个Triangle变量的length和width分别相加。
#include<iostream>
3.6有函数原型void fun4 ( int &);下面选项中,正确的调用是(C)。
A.int x=2.17; fun4(&x); B.int a=15:fun4(a*3.14);
C. int b=100; fun4(b).; D. fun4(256):
3.7下列的描述中(B)是错误的。
A.使用全局变量可以从被调用函数中获取多个操作结果
while (++i<=k)
if (n%i==0)
return false;
return true;
}
5.4编写递归函数求两个数的最大公约数,并在主函数中加以调用验证。
#include<iostream>
using namespace std;
int f(int,int);
int main(){
int a,b;
{func( 10, 15, 20, 30);
func( 10, 11,12);
func(12,12);
}
void func( int a, int b, int c, int d)
{cout<<a<<'\t'<<b<<'\t'<<c<<'\t'<<d<<endl;}
10 15 20 30
10 11 12 4
B.局部变量可以初始化,若不初始化,则系统默认它的值为0
C.当函数调用完后,静态局部变量的值不会消失
D.全局变量若不初始化,则系统默认它的值为0
3.8下列选项中,(C)具有文件作用域。
A.函数形参B.局部变量C.全局变量D.静态变量
3.9 int i=100;下列引用方法中,正确的是(A)。
A.int &r=i; B.int &r=100;
a+=f(g(a));
b+=f(f(b));
cout<<a<<”\t”<<b;
}
3 2
5.编程题
5.1输入m、n和p的值,求s=的值。注意判断运算中的溢出。
#include<iostream>
using namespace std;
long sum(int,int);
int main(){
long s;
2.5静态局部变量有什么特点?编写一个应用程序,说明静态局部变量的作用。
3.选择题
来自百度文库3.1正确的函数定义形式为(A)。
A.void fun(void) B.double fun(int x;int y)
C.int fun(int=0,int); D.double fun(int x,y)
3.2 C++语言中规定函数的返回值的类型是由(D)。
A.设置默认形参值时,形参名不能缺省
B.只能在函数定义时设置默认形参值
C.应该先从右边的形参开始向左边依次设置
D.应该全部设置
3.5若同时定义了如下函数,fun(8,3.1)调用的是下列哪个函数(D)。
A.void fun(float,int) B.void fun(double,int)
C.void fun(char,float) D.void fun(double,double)
cin>>a>>b;
cout<<f(a,b);
return 0;
}
int f(int a,int b){
if(a%b)return f(b,a%b);
return b;
}
5.5输入一个十进制整数,用递归算法实现将该整数转换为n进制(n>1同时n<10)输出。
double add(double,double);
q*=i;
s+=q;
}
return s;
}
5.2使用重载函数编程序分别把两个数和三个数从大到小排列。
#include<iostream>
using namespace std;
void f(int,int,int);
void f(int,int);
int main(){
int a,b,c;
cin>>a>>b;
}
void f(int a,int b){
if(a>b)cout<<a<<","<<b<<endl;
else cout<<b<<","<<a<<endl;
}
5.3设计一函数,判断一整数是否为素数。并完成下列程序设计.
(1)求3-200之间的所有素数
(2)在4-200之间,验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。输出4=2+2 6=3+3。。。。。200=3+197
A.return语句中的表达式类型决定
B.调用该函数时的主调函数类型决定
C.调用该函数时系统临时决定
D.定义该函数时所指定的函数类型决定
3.3若有函数调用语句:fun(a+b,(x,y),(x,y,z));此调用语句中的实参个数为(A)。
A.3 B.4 C.5 D.6
3.4 C++中,关于默认形参值,正确的描述是(C)。
using namespace std;
1.4递归程序分两个阶段执行递推,回归。
1.5函数名相同,但对应形参表不同的一组函数称为重载函数,参数表不同是指类型不同或参数个数不同。
1.6内联函数的展开、重载函数的确定均在编译阶段进行。
1.7静态局部变量存储在全局数据区,在程序运行时候建立,生命期为整个程序,如定义时未显式地初始化,则其初值为0。局部变量存储在栈区,在块或函数开始运行时候建立,生命期为块或函数,如定义时未显式地初始化,则其初值为随机数。
long convert(long,int);
int main(){
long a,b;
int n;
cin>>a>>n;
b=convert(a,n);
cout<<b<<endl;
return 0;
}
long convert(long a,int n){
if(a<n)return a;
else return convert(a/n,n)*10+a%n;
cout<<i<<”“;
cout<<endl;}
}
int main(){print(5);}
运行显示:
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
void print(int n){
if(n>1)
print(n-1);
for(int i=1;i<=n;i++)
cout<<n<<”“;
cout<<endl;
}
intmain(){
cout<<"P(4,1.5)="<<P(4,1.5)<<endl;
return0;
}
5.7把以下程序中的print()函数改写为等价的递归函数。
#include <iostream>
void print( int w)
{for( int i=1;i<=w;i++)
{for( int j=1;j<=i;j++)
int m,n,p;
cin>>m>>n>>p;
s=sum(m,1)+sum(n,3)+sum(p,5);
cout<<s<<endl;
return 0;
}
long sum(int n,int e){
long s=0;
int i,j,q;
for(i=1;i<=n;i++){
q=1;
for(j=1;j<=e;j++)
12 12 3 4
4. 3 #include <iostream>
using namespace std;
void func( int, int, int&);
int main()
{int x=0,y=1,z=2;
func( 1,2,x);
func( x+y,y,y);
func( z,x+y,z);
相关文档
最新文档