1 / 12
文档名称:

C primer 习题解答-第七章 -.doc

格式:doc   大小:83KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C primer 习题解答-第七章 -.doc

上传人:mh900965 2017/12/2 文件大小:83 KB

下载得到文件列表

C primer 习题解答-第七章 -.doc

相关文档

文档介绍

文档介绍:第七章函数
题目 00形参和实参有什么区别?
【解答】形参是在函数定义的形参表中进行定义,是一个变量,其作用域为整个函数。而实参出现在函数调用中,是一个表达式。进行函数调用时,用传递给函数的实参对形参进行初始化。
题目 01 下列哪些函数是错误的?为什么?请给出修改意见
int f()
{
string s;
// ...
return s;
}
(b) f2(int i) { /* ... */ }
(c) int calc(int v1, int v1) /* ... */ }
(d) double square(double x) return x * x;
【解答】
(a) 是错误的。因为函数头中所定义的返回值类型为 int,return 语句世纪返回的表达式的类型为 string,两个类型不同,而 string 类型又不能隐式转换为 int 类型。可修改为: string f(){ string s; //… Return s; }
(b) 是错误的。因为该函数定义中没有指定返回类型,在标准 C++中,定义函数时不指定返回类型是非法的。可修改为: Int f2(int i){/*…*/}
(c) 是错误的。缺少括住函数体在左花括号,而且两个形参不应该同名。可修改为: Int caic(int v1,intv2){/*…*/}
(d) 是错误的。缺少括住函数体的一对花括号。可修改为: Double square(double x){return x*x;}
题目 02编写一个带有两个 int 型形参的函数,产生第一个参数的第二个参数次幂的值。编写程序传递两个 int 数值调用该函数,请检验其结果。
【解答】
//7-
//函数 Power 带有两个 int 型形参,产生第一个参数的第二个参数次幂的值。
//主函数传递两个 int 型数值调用 power 函数
#include<iostream>
Using namespace std;
Int power(int x,inty)//该函数返回 x 的 y 次幂
{ Int result=1; For (int loop=1;loop<=y;++loop) Result *=x; Return result; }
Int main() {
Int xval,yval;
Cout<<”enter two integers(the second one should be equal to or bigger than 0):”<<endl;
Cin>>xval>>yval;
If(yval<0){
Cout<<”the second integer should be equal to or bigger than 0”<<endl; Return 1;
}
Cout<<”result of raising ”xval<<””to the power of <<yval<<”is ”<<power(xval,yval)<<endl; Return 0; }
注意,当输入的证书较大时,该 power 函数的计算结果容易溢出。
题目 03 编写一个函数,返回其形参的绝对值。
【解答】可编写如下 abs 函数,返回形参 x 的绝对值: Int abs(int x) { Retrun x>0?x:-x; }
题目 04 编写一个函数,该函数具有两个形参,分别为 int 型和指向 int 型的指针, 并返回这两个 int 值之中较大的数值。考虑应将其指针形参定义为什么类型?
【解答】函数代码如下: Int getBigger(int x,const int*y) { Return x>*y ? x: *y; } 该函数无需修改指针形参所指向的值,因此,为了保护指针形参所指向的值,将指针形参定义为指向 const 对象的指针。
题目 05编写函数交换两个 int 型指针所指向的值,调用并检验该函数,输出交换后的值。
【解答】
//7-
//函数 swap 交换两个 int 型指针所指向的值。
//主函数调用 swap 函数,输出交换后的值
#include<iostream>
Using namespace std;
Void swap(int *x,int *y)//该函数交换 x 和 y 所指向的值
{ Int temp; Temp=*x; *x=*y; *y=temp; }
Int main() {
Int xval,yval;
Cout<<”enter two integers:”<<endl;