C++Primer中文版_第4版_第七章_函数_习题解答_文字word版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章函数
题目00
What is the difference between a parameter and an argument?
形参和实参有什么区别?
【解答】
形参是在函数定义的形参表中进行定义,是一个变量,其作用域为整个函数。而实参出现在函数调用中,是一个表达式。进行函数调用时,用传递给函数的实参对形参进行初始化。
题目01
Indicate which of the following functions are in error and why. Suggest
how you might correct the problems.
下列哪些函数是错误的?为什么?请给出修改意见。
(a) 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
Write a program to take two int parameters and generate the result of
raising the first parameter to the power of the second. Write a program
to call your function passing it two ints. Verify the result.
编写一个带有两个int 型形参的函数,产生第一个参数的第二个参数次幂的值。
编写程序传递两个int 数值调用该函数,请检验其结果。
【解答】
//7-3.cpp
//函数Power带有两个int型形参,产生第一个参数的第二个参数次幂的值。
//主函数传递两个int型数值调用power函数
#include
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):”< Cin>>xval>>yval; If(yval<0){ Cout<<”the second integer should be equal to or bigger than 0”< Return 1; } Cout<<”result of raising ”xval<<””to the power of < Return 0; } 注意,当输入的证书较大时,该power函数的计算结果容易溢出。 题目03 Write a program to return the absolute value of its parameter. 编写一个函数,返回其形参的绝对值。 【解答】 可编写如下abs函数,返回形参x的绝对值: Int abs(int x) { Retrun x>0?x:-x; } 题目04 Write a function that takes an int and a pointer to an int and returns the larger of the int value of the value to which the pointer points. What type should you use for the pointer? 编写一个函数,该函数具有两个形参,分别为int 型和指向int 型的指针, 并返回这两个int 值之中较大的数值。考虑应将其指针形参定义为什么类型? 【解答】 函数代码如下: Int getBigger(int x,const int*y) { Return x>*y ? x: *y; } 该函数无需修改指针形参所指向的值,因此,为了保护指针形参所指向的值,将指针形参定义为指向const对象的指针。 题目05 Write a function to swap the values pointed to by two pointers to int. Test the function by calling it and printing the swapped values. 编写函数交换两个int 型指针所指向的值,调用并检验该函数,输出交换后的 值。 【解答】 //7-6.cpp //函数swap交换两个int型指针所指向的值。 //主函数调用swap函数,输出交换后的值 #include 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:”< Cin>>xval>>yval; Cout<<”before swapped”<<”x= ”<