1、适宜采用inline定义函数情况是( D )
A. 函数体含有循环语句
B. 函数体含有递归语句
C. 函数代码少、频繁调用
D. 函数代码多、不常调用
解析:内联函数就是在函数定义前 加 inline 关键字。要求:1. 内联函数体积要小。2. 一般代码不超过5行。3. 不能有复杂的语句,比如循环,递归
2、假定一个函数为A(int i=4, int j=0) {;}, 则执行“A (1);”语句后,i和j的值分别为( A )
A. 1和0
B. 1和4
C. 4和0
D. 4和1
解析:执行A(1)是传一个参数1,调用函数之后i为1,j不变,所以i=1,j=0
3、下列有关重载函数的说法中正确的是( C )
A. 重载函数必须具有不同的返回值类型
B. 重载函数参数个数必须相同
C. 重载函数必须有不同的形参列表
D. 重载函数名可以不同
解析:在同一个作用域下,两个以上的函数,取相同的函数名,其形参的参数个数或者参数类型不同,编译器会根据实参的参数个数或类型,自动调用对应的函数,这就是函数重载。
4、两个同名函数构成重载关系,以下那个选项不要求不同。( B )
A. 参数个数
B. 返回类型
C. 参数类型
D. 函数头后有无const
解析:函数重载是在同一个作用域下,两个以上的函数,取相同的函数名,其形参的参数个数或者参数类型不同,编译器会根据实参的参数个数或类型,自动调用对应的函数,只要求参数个数或类型不同,返回类型不作要求,也不参与区分函数的重载形式,函数后头有const,表示参数值不能被更改,如果函数体里有对参数的更改操作,则会报错,若为全局函数,也会报错,若为类内的成员函数,则不会报错
二.填空题
1、C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取 函数重载 方式
解析:函数重载可以有多个参数,或者不同参数类型,可以通过调用不同的重载函数返回多种返回值
2、执行下列代码
string str("HelloC++");
cout<
程序的输出结果是 C++
解析:substr表示从下标为5的地方开始往后提取3个字符,字符串的下标是从0开始
3、下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。
#include
#define pi 3.14
using namespace std;
int main()
{ double rad;
cout<<"rad=";
cin>>rad;
double l=2.0*pi*rad;
double s=pi*rad*rad;
cout<<"\n The long is:"<
cout<<"The area is:"<
解析:命名空间:1. 多人协同开发,避免命名污染(作用)。2. 命名空间,就相当于给名字加个姓氏( 张 三)
不加名空间会报错
加了命名空间之后
4、程序实现大写字母转换成小写字母。
#include
int main()
{ char a;
int i=32;
cin>>a;
if((int)a>=65&&(int)a<=90)
a=a+i;
}
解析:由a=a+i可知这句是进行转换操作的,大写字母的ASCII码值在65到90之间,加32就是对应的小写字母,因为a为大写字母的单字符,所以i为32,所以第一空填int i=32;用if判断a是否为大写字母,由于a为单字符,所以要用int进行类型强转,再将ASCII码值为大写字母的区间填上即可,即为(int)a>=65&&(int)a<=90
5、执行下列代码
int i=230;
cout <<"i="<
程序的输出结果为 i=e6 。
解析:初始化i的值为230,十进制,230=14*16+6,转换成十六进制就是e6
三、编程题
3.1 有以下重载函数定义:
void f();
void f(int x);
void f(int m, int n);
void f(double d1, double d2=3.14);
则以下调用哪些是错误的,哪些可以并与那个函数匹配,编程验证
f(‘A’);-->错误,调用的函数为f(char m),但未声明有这函数
f( 5 ) ;-->正确,调用的函数为f(int x)
f( 5.5 );-->错误,调用的函数为f(double m),但未声明有这函数
f(10, 20);-->正确,调用的函数为f(int m,int n)
f(10, 23.4);-->错误,调用的函数为f(int m,double n),但未声明有这函数
f(10.8, 24.87);-->正确,调用的函数为f(double d1,double d2=3.14)
3.2 创建一个函数plus(),它把两个数值加在一起,返回它们的和,提供处理int、doble和string类型的重载版本,测试它们是否能处理下面的调用
int n = plus(3,4);
double d = plus(3.2,4.2);
string s = plus(“he”, “llo”);
string s1 = “aaa” ; string s2 = “bbb”;
string s3 = plus(s1,s2);
思考:(1)给string版本的函数传送参数最有效的方式是什么?
(2)double d = plus(3, 4.2)能否调用 ?
答:(1)最有效的方式是传引用
(2)不能被调用
代码:
#include
using namespace std;
int plus_t(int m,int n)
{
return m+n;
}
double plus_t(double m,double n)
{
return m+n;
}
string plus_l(string a,string b)
{
return a+b;
}
string plus_t(string &a,string &b)
{
return a+b;
}
int main()
{
int n=plus_t(3,4);
double d=plus_t(3.2,4.2);
string s=plus_l("he","llo");
string s1="aaa";string s2="bbb";
string s3=plus_t(s1,s2);
cout << "n=" << n <
结果: