C语言程序设计II实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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、

∑=

+

+

+

=

=

n

i

n

p

p

p

i

p

n

s

1

)

(

)2(

)1(

)(

)

Λ,!

)(i

i

p=

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。

如果有两个数,每一个数的所有约数(除它本身以外)之和正好等于对

方,则称这两个数为互满数。

三、实验结果

int s(int a,int b,int i) {return a*b/i; }

main() {

int a,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)=ax 3+bx 2+cx+d=0的根。系数a 、b 、c 、d 由主函数输入。求根过程写成函数。(提示:牛顿迭代法是先给定方程f(x)=0的一个较好的初始近似根x 0,然后重复使用迭代公式:

)

(')

(000x f x f x x -

=

求x 的近似解,直至相邻两次的近似解相差很小为止,如差值的绝对值小于1e-07。x 0可以从键盘输入或直接设定。)

算法简要描述(文本):通过构造函数实现题中给的公式。

源代码标识符说明(文本):a,b,c,d,存系数x存根。

源代码(粘贴程序,注意缩进,不得使用截图):

#include"stdio.h"

#include"math.h"

float f1(float a,float b,float c,float d,float x)

{return (a*x*x*x+b*x*x+c*x+d);

}

float f2(float a,float b,float c,float x)

{return (3*a*x*x+2*b*x+c);

}

main()

{

while(1)

{float a,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"stdio.h"

int f(float *p,int n)

{int i,q=0;float s=0;

for(i=0;i

s+=*(p+i);

for(i=0;i

{if(*(p+i)>(s/n))

q++;

}

return q;

}

main()

{float a[30];

int i,n=30;

for(i=0;i

scanf("%d",&a[i]);

printf("%d",f(a,n));

}

实验测试结果(使用截图,图形格式JPEG。截图不要包含源代码):

讨论(文本):

相关文档
最新文档