函数程序设计C语言麦.docx
- 文档编号:7566415
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:28
- 大小:157.83KB
函数程序设计C语言麦.docx
《函数程序设计C语言麦.docx》由会员分享,可在线阅读,更多相关《函数程序设计C语言麦.docx(28页珍藏版)》请在冰豆网上搜索。
函数程序设计C语言麦
实验五函数程序设计
班级:
xxxxx学号:
xxxxxxxx姓名:
麦华锋评分:
一.【实验目的】
1、熟练掌握函数的定义和调用。
2、熟练掌握使用函数编写程序。
3、掌握函数的实参、形参和返回值的概念及使用。
4、掌握单步调试进入函数和跳出函数的方法。
二.【实验内容和步骤】
1、程序调试题
A.目标:
进一步学习掌握程序调试的方法和技巧。
B.内容:
参照《实验指导》教材P46“1.调试示例”,从键盘输入一个正整数n,计算n!
的值。
改正程序中的错误,使其实现程序的功能。
(注:
程序文件保存在“调试示例”文件夹中,文件名为error06_1.cpp)
①调试正确的源程序清单
#include
intmain(void)
{
intn;
doublef;
doublefact(intm);
printf("Inputn:
");
scanf("%d",&n);
f=fact(n);/*调试时设置断点*/
printf("%d!
=%f\n",n,f);
return0;/*调试时设置断点*/
}
doublefact(intm)
{
inti;
doubleproduct=1;
for(i=1;i<=m;i++)
product=product*i;
returnproduct;/*调试时设置断点*/
}
②运行结果:
(提示:
通过屏幕截图,贴粘程序运行界面)。
2、完善程序,并调试运行程序
题目
(1)求S=1+1/2!
+....+1/n!
。
程序功能:
从键盘上输入一个正整数repeat(0 输入1个正整数n,计算s的前n项的和(保留4位小数),要求: 定义并调用函数fact(n)计算n的阶乘。 (注: 程序文件保存在“第1题”文件夹中)打开proj1.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //输入1个正整数n,求s=1+1/2! +....+1/n! 的值(保留4位小数),要求: //定义并调用函数fact(n)计算n的阶乘。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include"stdio.h" intmain() { intri,repeat; inti,n; doubles; doublefact(intn); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d",&n); //请在两条星线之间填入相应的代码,求s=1+1/2! +....+1/n! 的值(使用循环结构) //要求: 调用函数fact(n)计算n的阶乘。 /***********************************************************************/ s=0; for(i=1;i<=n;i++) s=s+1.0/fact(i); /***********************************************************************/ printf("%0.4f\n",s); } } doublefact(intn)//定义求n! 的函数 { doubleproduct; inti; //请在两条星线之间填入相应的代码,计算正整数n的阶乘(要求使用循环结构求n! ) /************************************************************************/ product=1; for(i=1;i<=n;i++) product=product*i; /************************************************************************/ returnproduct; } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目 (2)求a+aa+aaa+aa…a(n个a)。 程序功能: 从键盘上输入一个正整数repeat(0 输入2个正整数a和n,求a+aa+aaa+aa⋯a(n个a)之和。 要求定义并调用函数fn(a,n),它的功能是返回aa⋯a(n个a)。 例如,fn(3,2)的返回值是33。 (注: 程序文件保存在“第2题”文件夹中)打开proj2.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 //程序功能: 从键盘上输入一个正整数repeat(0 //输入2个正整数a和n,求a+aa+aaa+aa? a(n个a)之和。 //要求定义并调用函数fn(a,n),它的功能是返回aa...a(n个a)。 //提示: 除在指定位置添加语句之外,请不要改动程序中的其他内容。 #include voidmain() { intri,repeat; inti,n; longa,sn; longfn(longa,intn); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%ld%d",&a,&n); //请在两条星线之间填入相应的代码,求a+aa+aaa+aa...a(n个a)之和(使用循环结构) //要求: 调用函数fn(longa,intn)求aa...a(n个a)的值。 /**************************************************************************/ sn=0; for(i=1;i<=n;i++){ sn=sn+fn(a,i); } /**************************************************************************/ printf("%ld\n",sn); } } longfn(longa,intn)//定义求aa...a(n个a)的函数 { longproduct; inti; //请在两条星线之间填入相应的代码,求aa...a(n个a)的值(要求使用循环结构求解) /*************************************************************************/ product=a; for(i=1;i product=product*10+a; /*************************************************************************/ returnproduct; } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(3)统计一个整数中数字的个数。 程序功能: 从键盘上输入一个正整数repeat(0 读入1个整数,统计并输出该整数中包含某数字的个数。 要求定义countdigit(number,digit)函数并调用,它的功能是统计整数number中数字digit的个数。 例如: 调用函数countdigit(10090,0),返回10090中数字0的个数,返回值是3。 (注: 程序文件保存在“第3题”文件夹中)打开proj3.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 #include"stdio.h" intmain() { intri,repeat; intcount,digit; longin; intcountdigit(longnumber,intdigit); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%ld",&in); scanf("%d",&digit); //请在两条星线之间填入相应的代码,统计整型变量in中包含数字digit的个数 //要求: countdigit(number,digit)函数 /*******************************************************************/ count=countdigit(in,digit); /*******************************************************************/ printf("count=%d\n",count); } } //定义countdigit(number,digit)函数,求整数number中数字digit的个数 intcountdigit(longnumber,intdigit) { inti,result; //请在两条星线之间填入相应的代码,求整数number中数字digit的个数(要求使用循环结构) /********************************************************************************/ result=0; while(number! =0){ i=number%10; number=number/10; if(i=digit){ result++; } } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(4)判断素数。 程序功能: 从键盘上输入一个正整数repeat(0 输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。 要求定义并调用函数prime(n)判断n是否为素数。 (注: 程序文件保存在“第4题”文件夹中)打开proj4.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 #include #include intmain() { intri,repeat; intflag,n; intprime(intn); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d",&n); //请在两条星线之间填入相应的代码,调用prime(intn)函数判断整数n是否是素数 /***********************************************************************/ flag=prime(n); /***********************************************************************/ if(flag)printf("YES\n"); elseprintf("NO\n"); } } intprime(intn)//定义prime(intn)函数,判断整数n是否是素数 { inti,result; //请在两条星线之间填入相应的代码,判断整数n是否是素数(要求使用循环结构) /**********************************************************************/ result=1; for(i=2;i if(n%i==0){result=0;break;} /**********************************************************************/ returnresult; } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(5)统计素数并求和。 程序功能: 从键盘上输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=500),统计并输出m和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。 要求定义并调用函数prime(n)判断n是否为素数。 (注: 程序文件保存在“第5题”文件夹中)打开proj5.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 #include"stdio.h" #include"math.h" intmain() { intri,repeat; intcount,i,m,n,sum; intprime(intm); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d%d",&m,&n); //请在两条星线之间填入相应的代码,统计m和n之间的素数的个数以及这些素数的和。 //要求: 调用prime(intn)函数判断整数n是否是素数。 //要求: 使用循环结构。 /*************************************************************************/ count=0;sum=0; for(i=m;i<=n;i++) if(prime(i)==1){count++;sum+=i;} /*************************************************************************/ printf("count=%d,sum=%d\n",count,sum); } } intprime(intn)//定义prime(intn)函数,判断整数n是否是素数 { inti,result; //请在两条星线之间填入相应的代码,判断整数n是否是素数(要求使用循环结构) /**********************************************************************/ result=1; for(i=2;i if(n%i==0){result=0;break;} /**********************************************************************/ returnresult; } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(6)统计素数并求和。 程序功能: 从键盘上输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=10000),输出m和n之间所有的Fibonacci数。 Fibonacci序列(第1项起): 1123581321…。 要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。 例如,fib(7)的返回值是13。 输出语句: printf("%d",f);(注: 程序文件保存在“第6题”文件夹中)打开proj6.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 #include"stdio.h" #include"math.h" intmain() { intri,repeat; inti,m,n; longf; longfib(intn); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d%d",&m,&n); //请在两条星线之间填入相应的代码,求第m项至第n项之间所有的Fibonacci数。 //Fibonacci序列(第1项起): 1123581321…。 //要求: 调用fib(intn)函数求第n项Fibonacci数。 //要求: 使用循环结构。 /*************************************************************************/ for(i=m;i<=n;i++) { f=fib(i); printf("第%d项Fibonacci数=%ld\n",i,f); } /*************************************************************************/ printf("\n"); } } longfib(intn)//定义fib(intn)函数,求第n项Fibonacci数 { inti,a1,a2; longintresult; //请在两条星线之间填入相应的代码,求第n项Fibonacci数(要求使用循环结构) /*********************************************************************/ a1=a2=1; if(n==1||n==2)result=1; else for(i=3;i<=n;i++) { result=a1+a2; a1=a2; a2=result; } /*********************************************************************/ returnresult; } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(7)求完数。 程序功能: 从键盘上输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=1000),输出m到n之间的所有完数(完数就是因子和与它本身相等的数)。 要求定义并调用函数factorsum(number),它的功能是返回number的因子和。 例如: factorsum(12)的返回值是16(1+2+3+4+6)。 输出语句: printf("%d",i);(注: 程序文件保存在“第7题”文件夹中)打开proj7.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 #include"stdio.h" intmain() { intri,repeat; inti,m,n; intfactorsum(intnumber); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d%d",&m,&n); //请在两条星线之间填入相应的代码,输出m到n之间的所有完数。 //完数: 因子和与它本身相等的数。 //要求: 调用factorsum(intnumber)函数求nunmer的因子和。 //要求: 使用循环结构。 /*************************************************************************/ for(i=m;i<=n;i++) { if(i==factorsum(i))printf("%d",i); } /*************************************************************************/ printf("\n"); } } intfactorsum(intnumber)//定义factorsum(intnumber)函数,求number的因数和 { inti,result; //请在两条星线之间填入相应的代码,求number的因数和(要求使用循环结构) /**************************************************************/ result=0; for(i=1;i<=number/2;i++) if(number%i==0)result+=i; /**************************************************************/ returnresult; } ②运行结果: (提示: 通过屏幕截图,贴粘程序运行界面)。 题目(8)求各位数字的立方和等于它本身的数。 程序功能: 从键盘上输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=1000),输出m到n之间的所有满足各位数字的立方和等于它本身的数(例如: 153=1*1*1+5*5*5+3*3*3)。 要求定义并调用函数is(number),判断number的各位数字之立方和是否等于它本身。 输出语句: printf("%d",i);(注: 程序文件保存在“第8题”文件夹中)打开proj8.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ①调试正确的源程序清单 #include"stdio.h" intmain() { intri,repeat; inti,m,n; intis(intnumber); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d%d",&m,&n); //请在两条星线之间填入相应的代码,输出m到n之间所有满足各位数字的立方和等于它本身的数 //例如: 153=1*1*1+5*5*5+3*3*3 //要求: 调用函数is(number),判断number的各位数字之立方和是否等于它本身。 //要求: 使用循环结构。 /**********************************************************************************/ for(i=m;i<=n;i++) if(is(i)==1)printf("%d",i); /******************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 程序设计 语言