C语言实验报告函数应用.docx

上传人:b****8 文档编号:11264150 上传时间:2023-02-26 格式:DOCX 页数:15 大小:167.45KB
下载 相关 举报
C语言实验报告函数应用.docx_第1页
第1页 / 共15页
C语言实验报告函数应用.docx_第2页
第2页 / 共15页
C语言实验报告函数应用.docx_第3页
第3页 / 共15页
C语言实验报告函数应用.docx_第4页
第4页 / 共15页
C语言实验报告函数应用.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

C语言实验报告函数应用.docx

《C语言实验报告函数应用.docx》由会员分享,可在线阅读,更多相关《C语言实验报告函数应用.docx(15页珍藏版)》请在冰豆网上搜索。

C语言实验报告函数应用.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1