欢迎来到天天文库
浏览记录
ID:12440093
大小:83.50 KB
页数:12页
时间:2018-07-17
《c++primer 习题解答-第七章 -》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第七章函数题目00形参和实参有什么区别?【解答】形参是在函数定义的形参表中进行定义,是一个变量,其作用域为整个函数。而实参出现在函数调用中,是一个表达式。进行函数调用时,用传递给函数的实参对形参进行初始化。题目01下列哪些函数是错误的?为什么?请给出修改意见(a)intf(){strings;//...returns;}(b)f2(inti){/*...*/}(c)intcalc(intv1,intv1)/*...*/}(d)doublesquare(doublex)returnx*x;【解答】(a)是错误的。因为函数头中所定义的返
2、回值类型为int,return语句世纪返回的表达式的类型为string,两个类型不同,而string类型又不能隐式转换为int类型。可修改为:stringf(){strings;//…Returns;}(b)是错误的。因为该函数定义中没有指定返回类型,在标准C++中,定义函数时不指定返回类型是非法的。可修改为:Intf2(inti){/*…*/}(c)是错误的。缺少括住函数体在左花括号,而且两个形参不应该同名。可修改为:Intcaic(intv1,intv2){/*…*/}(d)是错误的。缺少括住函数体的一对花括号。可修改为:Dou
3、blesquare(doublex){returnx*x;}题目02编写一个带有两个int型形参的函数,产生第一个参数的第二个参数次幂的值。编写程序传递两个int数值调用该函数,请检验其结果。【解答】//7-3.cpp//函数Power带有两个int型形参,产生第一个参数的第二个参数次幂的值。//主函数传递两个int型数值调用power函数#includeUsingnamespacestd;Intpower(intx,inty)//该函数返回x的y次幂{Intresult=1;For(intloop=1;loop
4、<=y;++loop)Result*=x;Returnresult;}Intmain(){Intxval,yval;Cout<<”entertwointegers(thesecondoneshouldbeequaltoorbiggerthan0):”<>xval>>yval;If(yval<0){Cout<<”thesecondintegershouldbeequaltoorbiggerthan0”<5、f<0?x:-x;}题目04编写一个函数,该函数具有两个形参,分别为int型和指向int型的指针,并返回这两个int值之中较大的数值。考虑应将其指针形参定义为什么类型?【解答】函数代码如下:IntgetBigger(intx,constint*y){R6、eturnx>*y?x:*y;}该函数无需修改指针形参所指向的值,因此,为了保护指针形参所指向的值,将指针形参定义为指向const对象的指针。题目05编写函数交换两个int型指针所指向的值,调用并检验该函数,输出交换后的值。【解答】//7-6.cpp//函数swap交换两个int型指针所指向的值。//主函数调用swap函数,输出交换后的值#includeUsingnamespacestd;Voidswap(int*x,int*y)//该函数交换x和y所指向的值{Inttemp;Temp=*x;*x=*y;*y=t7、emp;}Intmain(){Intxval,yval;Cout<<”entertwointegers:”<>xval>>yval;Cout<<”beforeswapped”<<”x=”<8、的值不会影响调用f时所传递的实参的值。后者声明的时T类型的引用形参。在f中修改形参的值世纪上相当于修改待用f时所传递的实参的值。题目07举一个例子说明什么时候应该将形参定义为引用类型。再举一个例子说明什么时候不应该将形参定义为引用。【
5、f<0?x:-x;}题目04编写一个函数,该函数具有两个形参,分别为int型和指向int型的指针,并返回这两个int值之中较大的数值。考虑应将其指针形参定义为什么类型?【解答】函数代码如下:IntgetBigger(intx,constint*y){R
6、eturnx>*y?x:*y;}该函数无需修改指针形参所指向的值,因此,为了保护指针形参所指向的值,将指针形参定义为指向const对象的指针。题目05编写函数交换两个int型指针所指向的值,调用并检验该函数,输出交换后的值。【解答】//7-6.cpp//函数swap交换两个int型指针所指向的值。//主函数调用swap函数,输出交换后的值#includeUsingnamespacestd;Voidswap(int*x,int*y)//该函数交换x和y所指向的值{Inttemp;Temp=*x;*x=*y;*y=t
7、emp;}Intmain(){Intxval,yval;Cout<<”entertwointegers:”<>xval>>yval;Cout<<”beforeswapped”<<”x=”<8、的值不会影响调用f时所传递的实参的值。后者声明的时T类型的引用形参。在f中修改形参的值世纪上相当于修改待用f时所传递的实参的值。题目07举一个例子说明什么时候应该将形参定义为引用类型。再举一个例子说明什么时候不应该将形参定义为引用。【
8、的值不会影响调用f时所传递的实参的值。后者声明的时T类型的引用形参。在f中修改形参的值世纪上相当于修改待用f时所传递的实参的值。题目07举一个例子说明什么时候应该将形参定义为引用类型。再举一个例子说明什么时候不应该将形参定义为引用。【
此文档下载收益归作者所有