第一范文网 - 专业文章范例文档资料分享平台

实验五 函数

来源:用户分享 时间:2025/8/13 23:04:31 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实验5 函数

一. 实验目的

(1) 掌握函数的定义及其调用,变量存储特性,作用域。 (2) 掌握函数的定义及其调用。

(3) 掌握C++函数参数的传递的定义和应用。 (4) 掌握自动变量和静态变量的概念。

(5) 掌握函数原型、块、函数和文件作用域的概念。 (6) 掌握全局变量与局部变量的概念。 (7) 了解、掌握多文件程序上机调试的过程。

二. 实验内容及步骤

1. 阅读下列程序,写出执行结果,然后上机调试程序,比较结果的正确性,弄清楚自动变量与静态变量的区别。

#include using namespace std; int func ( int ); void main( ) {

cout<

int func ( int c ) {

int a = 0;

static int b = 1; a++ ; b++ ;

return a+b+c; }

2. 上机调试下面程序,改正其不合理之处。

#include

using namespace std;

main() {

int x,n,s;

s=power(x,n); }

power(y) {

int i,p=1;

for(i=1;i<=n;i++) p=p*y; }

3. 按照要求完成以下程序

1) 计算并输出 500 以内的所有“亲密数”对,并输出所有“完数”之和。

提示:6的因子为2和3。如果自然数M的所有因子(包括1但不包括自身,下同)之和为

N,而N的所有因子之和为 M,则称M与N为一对“亲密数”。例如,220的所有因子之和为:1+2+4+5+10+11+20+22+44+55+110=284,而284的所有因子之和为:1+2+4+71+142=220,因此220与 284 为一对“亲密数”。

如果一个自然数的所有因子之和恰好等于它自身,则称该自然数为“完数”。例如,6不仅

与它自身构成一对“亲密数”,且6 是一个“完数”,即6的所有因子之和为:1+2+3=6。 具体要求:

①编写一个函数 fsum(n),返回给定正整数 n 的所有因子之和。

②编写一个主函数,调用函数fsum(n),寻找并输出500以内的所有“亲密数”对以及计算所有“完数”之和。

③在输出每队“亲密数”时,要求小数在前、大数在后,并去掉重复的数对。例如,220和284是一对“亲密数”,而284和220也是一对“亲密数”,此时只需输出220与284这对“亲密数”。

④输出要有文字说明(英文或汉语拼音)。输出时每对“亲密数”用一对方括号括起来,两数之间用逗号分隔,且所有的“亲密数”对占一行。输出形式为: 各对“亲密数” “完数”之和

⑤在程序内部添加必要的注释(至少有 3 处)。 ⑥将两个函数放在一个文件中进行编译、连接并运行。 ⑦将两个函数分别在三个文件中进行编译、连接并运行。 实验步骤:

①建立新的项目文件。

②在项目中建立新的C源程序文件。

③按要求⑥完成编译和连接。在空白的源程序文件中输入主函数程序代码。程序代码如下所示:

#include

using namespace std;

void main() {

int facsum(int); /*函数原型*/ int m,n,s=0;

cout<<\ for (m=2;m<=500;m++) {

n=facsum(m); /*函数调用*/

if((m==facsum(n))&&(m<=n)) cout<<\ /*按要求输

出亲密数对*/ if(n==m) s=s+m; }

cout<<\ }

int facsum(int m1) /*函数定义facsum,求m的所有因子之和*/ {

int f=1,k;

for(k=2;k<=m1/2;k++) if(m1%k==0) f=f+k; return f; }

④按要求⑦完成编译和连接。程序代码如下所示:

//mymain.cpp #include

#include \

using namespace std;

void main() {

int m,n,s=0;

cout<<\ for (n=2;n<=500;n++) {

m=facsum(n); /*函数调用*/

if((n==facsum(m))&&(n<=m)) cout<<\//输出亲密数对

if(m==n) s=s+n;

}

cout<<\/*按要求输出完数之和*/ }

//myheader.h

int facsum(int n);/*函数原型*/

//myfac.cpp

int facsum(int n) /*定义函数 facsum,求 n 的所有因子之和*/ {

int f=1,k;

for(k=2;k<=n/2;k++) if(n%k==0) f=f+k; return f; }

⑤源程序编译连接,若有语法错误,则根据提示对程序相应代码进行修改,然后再一次编译连接,重复此过程直到程序无语法错误。

⑥运行程序,如发现错误进行修改,直到运行出正确结果。

2) 求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一函数根据求出的最大公约数求最小公倍数。 具体要求:

①不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在主函数中输入,并传给求最大公约数函数,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给求最小公倍数函数,以求出最小公倍数,返回到主函数输出最大公约数和最小公倍数。 ②用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值不由函数带回。将最大公约数和最小公倍数都设为全局变量,在主函数中输出它们的值。需要注意的是,不提倡在程序中过多使用全局变量。

实验步骤:

①建立新的项目文件。

②在项目中建立新的 C源程序文件。

③在空白的源程序文件中输入程序代码。程序代码如下所示: a. /*求最大公约数和最小公倍数*/

#include using namespace std; void main()

搜索更多关于: 实验五 函数 的文档
实验五 函数.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c918s821qzv3uh245bmo4_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top