正文

C++练习题(函数部分)含答案2005-03-31 23:06:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yaozheng/435.html

分享到:

自己做的,不是标准答案,仅供参考,如有错误请指正,谢谢!

一、选择题。
1、    下列叙述错误的是___ B _____。
A)    一个函数中可以有多条return语句   
B)    调用函数必须在一条独立的语句中完成
C)    函数中通过return语句传递函数值
D)    主函数main也可以带有形参
2、在C++语言中,对函数参数默认值描述正确的是_____D_______。
A)    函数参数的默认值只能设定一个
B)    一个函数的参数若有多个,则参数默认值的设定可以不连续
C)    函数参数必须设定默认值
D)    在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值
3、不能作为函数重载判断依据的是______D_______。
A)const   B)返回类型     C)参数个数    D)参数类型
4、下列函数参数默认值定义错误的是______C________。
A)Fun(int x,int y=0)     B)Fun(int x=100)
C)Fun(int x=0,int y)     D)Fun(int x=f( ))  (假定函数f( )已经定义)
5、在函数定义前加上关键字”inline”,表示该函数被定义为___B_____。
A)重载函数    B)内联函数    C)成员函数     D)普通函数
6、函数定义为Fun(int &k),变量定义n=100,则下面调用正确的是____C____。
A)Fun(20)     B)Fun(20+n)    C)Fun(n)    D)Fun(&n)
7、下列是正确的递归函数的是____B________。
A)int fun(int n)                        B)int fun(int n)
  {  if (n<1) return 1;                    {  if (abs(n)<1  return 1;
else return n*fun(n+1);                  else return n*fun(n/2);
  }                                     }
C)int fun(int n)                        D)int fun(int n)
  {  if (n>1) return 1;                    {  if (n>1) return 1;
else return n*fun(n*2);                  else return n*fun(n-1);
  }                                     }

二、阅读程序。
1、下列程序的输出结果是?
#include <iostream.h>
int fun(int x,int y)
{  return  x*y;}
void main()
{  int k=5;
   cout<<fun(k++, ++k)<<endl;
}
结果:
36


2、写出下列程序的运行结果。
#include <iostream.h>
#include <math.h>
void  fun(int a, int b, double& s, double &t)
{   s=sqrt(a*a+b*b);
    t=sqrt(a*a-b*b);
}
void main()
{   double m, n;
    fun(4,3,m,n);
cout<<m+n<<endl;
}
结果:
7.64575

3、写出下列程序的运行结果。
#include <iostream.h>
int n=0;
int& fun (int x)
{  n -=x;
   return n;
}
void main()
{  fun(100)+=10;
   cout<<”n=”<<n<<endl;   
}
结果:
n=-90

4、下列程序运行结果是。
#include <iostream.h>
int func(int x)
{   int p;
if (x==0 || x==1)  return (3);
p=x- func(x-2);
return p;
}
void main( )
{    cout<<func(9);  }
结果:
7



三、编程题。
1、已知三角形的三边,求三角形面积,将其编写成一个函数。
#include<iostream>
#include<cmath>
using namespace std;
double area(int a,int b,int c);
void main()
{
    int a,b,c;
    cin>>a>>b>>c;
    cout<<"Area:"<<area(a,b,c)<<endl;
}

double area(int a,int b,int c)
{
    double s,area;
    s=(a+b+c)/2.0;
    area=sqrt(s*(s-a)*(s-b)*(s-c));
    return area;
}


2、    输入的整数按字符串形式逆序输出,要求分别用递归算法和非递归算法实现。如:输入12345,输出:5  4  3  2  1
#include<iostream>
using namespace std;
void print(int a);
void print1(int a);
void main()
{
    int n;
    cin>>n;
    print(n);
    cout<<endl;
    print1(n);
}

void print(int a)   //非递归
{
    while(a>0)
    {
        cout<<a%10<<" ";
        a=a/10;
    }
}

void print1(int a)   //递归
{
    if(a>0)
    {
        cout<<a%10<<" ";
        print1(a/10);
    }        
}

3、    编写递归函数将输入的整数按字符串形式正序输出。如:输入12345,输出:1  2  3  4  5
#include<iostream>
using namespace std;
void print(int a);
void print1(int a);
void main()
{
    int n;
    cin>>n;
    print(n);
}

void print(int a)   //递归
{
    if(a>0)
    {
        print(a/10);
        cout<<a%10<<" ";
    }        
}

阅读(11610) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册