C语言实验报告函数应用.docx
- 文档编号:5718863
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:15
- 大小:167.45KB
C语言实验报告函数应用.docx
《C语言实验报告函数应用.docx》由会员分享,可在线阅读,更多相关《C语言实验报告函数应用.docx(15页珍藏版)》请在冰点文库上搜索。
C语言实验报告函数应用
C语言程序设计II实验报告
题目:
实验五函数应用
院系名称
:
计算机学院
专业名称
:
计算机科学与技术
班级
:
学号
:
学生姓名
:
指导教师
:
实验日期
:
2017年4月1日
报告提交截止日期:
2017年4月11日
一、实验目的
1、掌握C语言函数的定义方法、函数的声明及函数的调用方法及调用过程;
2、掌握主调函数和被调函数之间的参数传递方式;
二、实验内容与要求:
1、求两个整数的最大公约数和最小公倍数。
用一个函数求最大公约数,用另一个函数根据求出的最大公约数求最小公倍数。
(提示:
设两个整数是a,b,最大公约数是p,最小公倍数是q,那么ab=pq)
2、用牛顿迭代法求方程f(x)=ax3+bx2+cx+d=0的根。
系数a、b、c、d由主函数输入。
求根过程写成函数。
(提示:
牛顿迭代法是先给定方程f(x)=0的一个较好的初始近似根x0,然后重复使用迭代公式:
求x的近似解,直至相邻两次的近似解相差很小为止,如差值的绝对值小于1e-07。
x0可以从键盘输入或直接设定。
)
3、定义一个函数,功能是计算n个学生的成绩中高于平均成绩的人数,并作为函数返回值。
用主函数来调用它。
统计30个学生成绩中高于平均成绩的有多少人。
4、编写程序,计算下列函数值:
,其中,m,n为正整数,
,
5、编写和调用函数,给定圆筒的内径、外径和高,计算该圆筒的体积;给定圆锥的高、底面半径,计算该圆锥的体积和表面积。
6、编写和调用函数,求出10000以内的所有素数、绝对素数、水仙花数、完全数(或称完数)、互满数。
提示:
一个素数经过任意次调换位,仍然为素数,则称其为绝对素数,例如13和31就是一个绝对素数。
水仙花数是指一个三位整数,其各位数字立方之和等于该数。
例如,153就是一个水仙花数:
153=1*1*1+5*5*5+3*3*3。
完全数是指一个数正好是它的所有约数(本身除外)之和。
例如,6就是一个完全数,因为6的因子有1、2、3,并且6=1+2+3。
如果有两个数,每一个数的所有约数(除它本身以外)之和正好等于对方,则称这两个数为互满数。
三、实验结果
1
题目内容与要求:
求两个整数的最大公约数和最小公倍数。
用一个函数求最大公约数,用另一个函数根据求出的最大公约数求最小公倍数。
(提示:
设两个整数是a,b,最大公约数是p,最小公倍数是q,那么ab=pq)
算法简要描述(文本):
通过循环找出最大公约数,根据公式求最小公倍数。
源代码标识符说明(文本):
a,b存储数字i,j找最小公倍数和最大公因数。
源代码(粘贴程序,注意缩进,不得使用截图):
#include""
intf(inta,intb)
{inti,j;
if(a>b)
{a=a+b;b=a-b;a=a-b;
}
for(i=a;i>=1;i--)
if(a%i==0&&b%i==0)
returni;
}
ints(inta,intb,inti)
{returna*b/i;
}
main()
{
inta,b;
while
(1)
{
scanf("%d%d",&a,&b);
printf("最大公约数:
%d\n最小公倍数:
%d\n",f(a,b),s(a,b,f(a,b)));
}}
实验测试结果(使用截图,图形格式JPEG。
截图不要包含源代码):
讨论(文本):
2
题目内容与要求:
用牛顿迭代法求方程f(x)=ax3+bx2+cx+d=0的根。
系数a、b、c、d由主函数输入。
求根过程写成函数。
(提示:
牛顿迭代法是先给定方程f(x)=0的一个较好的初始近似根x0,然后重复使用迭代公式:
求x的近似解,直至相邻两次的近似解相差很小为止,如差值的绝对值小于1e-07。
x0可以从键盘输入或直接设定。
)
算法简要描述(文本):
通过构造函数实现题中给的公式。
源代码标识符说明(文本):
a,b,c,d,存系数x存根。
源代码(粘贴程序,注意缩进,不得使用截图):
#include""
#include""
floatf1(floata,floatb,floatc,floatd,floatx)
{return(a*x*x*x+b*x*x+c*x+d);
}
floatf2(floata,floatb,floatc,floatx)
{return(3*a*x*x+2*b*x+c);
}
main()
{
while
(1)
{floata,b,c,d,x,y,m,n;
scanf("%f%f%f%f%f",&a,&b,&c,&d,&x);
do
{x=y;
m=f1(a,b,c,d,x);n=f2(a,b,c,x);
y=x-(m/n);
}while(fabs(x-y)>=1e-7);
printf("%.2f\n",y);
}}
实验测试结果(使用截图,图形格式JPEG。
截图不要包含源代码):
讨论(文本):
3
题目内容与要求:
定义一个函数,功能是计算n个学生的成绩中高于平均成绩的人数,并作为函数返回值。
用主函数来调用它。
统计30个学生成绩中高于平均成绩的有多少人。
算法简要描述(文本):
构造函数求出平均值,再和平均值一一比较。
源代码标识符说明(文本):
p指针变量操作数组。
q存大于平均值成绩的个数。
源代码(粘贴程序,注意缩进,不得使用截图):
#include""
intf(float*p,intn)
{inti,q=0;floats=0;
for(i=0;i s+=*(p+i); for(i=0;i {if(*(p+i)>(s/n)) q++; } returnq; } main() {floata[30]; inti,n=30; for(i=0;i scanf("%d",&a[i]); printf("%d",f(a,n)); } 实验测试结果(使用截图,图形格式JPEG。 截图不要包含源代码): 讨论(文本): 4 题目内容与要求: 编写程序,计算下列函数值: ,其中,m,n为正整数, , 算法简要描述(文本): 构造一个阶乘函数。 源代码标识符说明(文本): x存数据。 源代码(粘贴程序,注意缩进,不得使用截图): #include"" longlongs(intx) {if(x==1) return1; returnx*s(x-1); } longlongf(inta,intb) {returns(a)/s(b); } main() { inta,b; while (1) {scanf("%d%d",&a,&b); printf("%d! =%lld%d! =%lld\n",a,s(a),b,s(b)); printf("s(a)/s(b)=%lld\n",f(a,b)); }} 实验测试结果(使用截图,图形格式JPEG。 截图不要包含源代码): 讨论(文本): 5 题目内容与要求: 编写和调用函数,给定圆筒的内径、外径和高,计算该圆筒的体积;给定圆锥的高、底面半径,计算该圆锥的体积和表面积。 算法简要描述(文本): 构造圆锥和圆筒体积表面积函数 源代码标识符说明(文本): a,b,c存数据。 源代码(粘贴程序,注意缩进,不得使用截图): #include"" #include"" #definePI floatv(floata,floatb,floath) {if(b! =0) returnPI*(b*b-a*a)*h; returnPI*a*a*h/3; } floats(floata,floath) {returnPI*a*sqrt(a*a+h*h)+PI*a*a; } main() {floata,b,h; while (1) { printf("请输入圆筒的内径,外径,高\n"); scanf("%f%f%f",&a,&b,&h); printf("v=%f\n",v(a,b,h)); b=0; printf("请输入圆锥的半径,高\n"); scanf("%f%f",&a,&h); printf("v=%fs=%f\n",v(a,b,h),s(a,h)); }} 实验测试结果(使用截图,图形格式JPEG。 截图不要包含源代码): 讨论(文本): 6 题目内容与要求: 编写和调用函数,求出10000以内的所有素数、绝对素数、水仙花数、完全数(或称完数)、互满数。 提示: 一个素数经过任意次调换位,仍然为素数,则称其为绝对数,例如13和31就是一个绝对素数。 水仙花数是指一个三位整数,其各位数字立方之和等于该数。 例如,153就是一个水仙花数: 153=1*1*1+5*5*5+3*3*3。 完全数是指一个数正好是它的所有约数(本身除外)之和。 例如,6就是一个完全数,因为6的因子有1、2、3,并且6=1+2+3。 如果有两个数,每一个数的所有约数(除它本身以外)之和正好等于对方,则称这两个数为互满数。 算法简要描述(文本): 构造出各自函数,通过调用实现。 绝对素数在已知的素数里面通过移位再判断是否是素数。 源代码标识符说明(文本): x,a,b,c存数据。 源代码(粘贴程序,注意缩进,不得使用截图): #include"" #include"" intf(inti) {intj,k=sqrt(i); for(j=2;j<=k;j++) if(i%j==0) break; if(j>=k+1) return1; elsereturn0; } intg(intx) {inti,a,b,c; for(i=100;i<=x;i++) {a=i%10;b=i/100;c=(i-b*100)/10; if(i<=999&&i==a*a*a+b*b*b+c*c*c) printf("%d",i);} } inth(intx) {inti,j,k,a; for(i=2;i<=x;i++) {a=0; for(j=1;j<=i/2;j++) if(i%j==0) a+=j; if(a==i) printf("%d",i); }} intw(intx) {intj,a=0; for(j=1;j<=x/2;j++) if(x%j==0) a+=j; returna; } ints(intx) {inti,j,k; for(i=1;i<=x;i++) if(w(w(i))==i) {if(w(i) continue; printf("%d,%d",i,w(i)); }} main() {inti,j=0,x,a,b,c,m[1000]; scanf("%d",&x); printf("素数为: \n"); for(i=2;i<=x;i++) if(f(i)) {printf("%5d",i); if(i>9&&i<100) if(f(i%10*10+i/10)) m[j++]=i; if(i>100&&i<=999) {c=i%10;a=i/100;b=(i-a*100)/10; if(a%2==0||b%2==0||c%2==0||a==5||b==5||c==5) continue; if(f(a*100+c*10+b)&&f(b*100+c*10+a)&&f(b*100+a*10+c)&&f(c*100+b*10+a)&&f(c*100+a*10+b)) m[j++]=i; }} printf("\n绝对素数为: "); for(i=0;i printf("%d",m[i]); printf("\n水仙花数为: ");g(x); printf("\n完全数为: ");h(x); printf("\n互满数为: \n");s(x); } 实验测试结果(使用截图,图形格式JPEG。 截图不要包含源代码): 讨论(文本): 四、实验心得 1 通过这次试验,对构造函数慢慢理解。 2 熟悉调用函数各方面规则。 3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告 函数 应用