当前位置:文档之家› C语言程序设计II实验报告

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

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、∑=+++==ninpppipns1)()2()1()()(ΛΛ,!)(iip=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<n;i++)s+=*(p+i);for(i=0;i<n;i++){if(*(p+i)>(s/n))q++;}return q;}main(){float a[30];int i,n=30;for(i=0;i<n;i++)scanf("%d",&a[i]);printf("%d",f(a,n));}实验测试结果(使用截图,图形格式JPEG。

截图不要包含源代码):讨论(文本):讨论(文本):5 题目内容与要求:编写和调用函数,给定圆筒的内径、外径和高,计算该圆筒的体积;给定圆锥的高、底面半径,计算该圆锥的体积和表面积。

算法简要描述(文本):构造圆锥和圆筒体积表面积函数源代码标识符说明(文本):a,b,c存数据。

源代码(粘贴程序,注意缩进,不得使用截图):#include"stdio.h"#include"math.h"#define PI 3.1415926float v(float a,float b,float h){if(b!=0)return PI*(b*b-a*a)*h;return PI*a*a*h/3;}float s(float a,float h){return PI*a*sqrt(a*a+h*h)+PI*a*a;}main(){float a,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=%f s=%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。

完全数if(a==i)printf("% d",i);} }int w(int x){int j,a=0;for(j=1;j<=x/2;j++)if(x%j==0)a+=j;return a;}int s(int x){int i,j,k;for(i=1;i<=x;i++)if(w(w(i))==i){if(w(i)<i)continue;printf("%d,%d ",i,w(i));}}main(){int i,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<j;i++)printf("% d",m[i]);printf("\n水仙花数为:"); g(x);printf("\n完全数为:"); h(x);printf("\n互满数为:\n"); s(x);}实验测试结果(使用截图,图形格式JPEG。

截图不要包含源代码):讨论(文本):四、实验心得1 通过这次试验,对构造函数慢慢理解。

2 熟悉调用函数各方面规则。

3。

相关主题