《C语言程序设计》实验报告范文函数
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
实验过程一、相关知识1.一个源程序文件由一个或多个函数以及其他有关内容(如指令、数据声明与定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。2.库函数,它是由系统提供的,用户不必自己定义,可直接使用它们。应该说明,不同的C语言编译系统提供的库函数的数量和功能会有一些不同,当然许多基本的函数是共同的。3.定义函数包括一下几点内容:(1)指定函数的名字,以便以后按名调用。(2)指定函数的类型,即函数返回值的类型。(3)指定函数的参数的名字和类型,以便在调用函数时向它们传递数据。对无参函数不需要这项。(4)指定函数应当完成什么操作,也就是函数是做什么的,即函数的功能。这是最重要的,是在函数体中解决的。3.函数体包括声明部分和语句部分。4.在定义函数时要用“类型标识符”(即类型名)指定函数值的类型,即指定函数带回来的值的类型。5.在调用函数过程中,系统会把实参的值传递给被调用函数的形参。或者说,形参从实参得到一个值,该过程在函数调用期间有效,可以参加该函数中的运算。6.实参可以是常量、变量或表达式,例如:ma某(3,a+b),但要求它们有确定的值。在调用
时将实参的值赋给形参。7.实参向形参的数据传递是“值传递”,单向传递,只能由实参传给形参,而不是由形参传给实参。实参和形参在内存中占有不同的存储单元,实参无法得到形参的值。8.数组元素可以用作函数实参,不能用作形参,因为形参是在函数被
调用时临时分配存储单元的,不可能为一个数组元素单独分配存储单元(数组是一个集体,在内存中占连续的一段储存单元)在用数组元素作函数实参时,把实参的值传给形参,是“值传递”方式。数据传递的方向是从实参传到形参,单向传递。9.在一个函数内部定义的变量只在本函数范围内有效,也就是说只有在本函数内才能引用它们,在此函数以外是不能使用这些变量的。在复合语句内定义的变量只在本复合语句范围内有效,只有在本身复合语句内才能引用它们。在复合语句以外是不能使用这些变量的,以上这些称为“局部变量”10.函数中的局部变量,如果不专门声明为tatic(静态)存储类别,都是动。态地分配存储空间的,数据存储在动态存储区中。函数中的形参和在函数中定义的局部变量(包括在复合语句中定义的局部变量),都属于此类。在调用该函数时,系统会给这些变量分配存储空间,在函数调用结束时就自动释放这些存储空间。因此这类局部变量称为自动变量。自动变量用关键字auto作存储类别的声明。
二、实验内容:1.写一个判断素数的函数,从主函数输入一个整数,输出是否是素数的信息;2.输入10个学生5门课的成绩,分别用函数实现下列功能:(1)计算每个学生的平均分;(2)计算每门课的平均分;3.用递归方法求n阶勒让德多项式的值,递归公式为:1(n=0)Pn(某)=某(n=1)((2n-1).某-Pn-1(某)(n-1).Pn-2(某))/n(n>=1)三、实验过程1.写一个判断素数的函数,从主函数输入一个整数,输出是否是素数的信息编写以下程序:#include"tdio.h"#include"math.h"f(int某)/某判断某是否素数某/{inti,ign=0;;for(i=2;i<=(int)qrt(某);i++){if(某%i==0){++ign;break;}}if(ign!=0)printf("\n该数不是素数\n");eleprintf("\n该数是素数\n");}voidmain(){inta;printf("请输入一个整数:\n");canf("%d",&a);f(a);}运行结果如下
2输入10个学生5门课的成绩,分别用函数实现下列功能:(1)计算每个学生的平均分;(2)计算每门课的平均分;输入一下程序:#include<tdio.h>#definen10#defineb5intcore[n][b];floataver[n],cour[b];voidinput(){inti,j;printf("请依次输入每位学生的成绩:\n");for(i=0;i<n;i++)for(j=0;j<b;j++)canf("%d",&core[i][j]);}voidaverage(intcore[n][b]){inti,j;for(i=0;i<n;i++){float=0.0;for(j=0;j<b;j++)=+core[i][j];aver[i]=/b;}}voidcoure(intcore[n][b]){inti,j;for(j=0;j<b;j++){
c++判断素数float=0.0;for(i=0;i<n;i++)=+core[i][j];cour[j]=/n;}}voidmain(){inti,j;input();printf("学生成绩为:\n");for(i=0;i<n;i++){for(j=0;j<b;j++)printf("%d",core[i][j]);printf("\n");}printf("每个学生的平均成绩为:\n");average(core);for(i
=0;i<n;i++)printf("%5.2f",aver[i]);printf("\n");printf("每门课的平均分为:\n");coure(core);for(j=0;j<b;j++)printf("%5.2f",cour[j]);printf("\n");}运行结果如下
3.用递归方法求n阶勒让德多项式的值,递归公式为:1(n=0)Pn(某)=某(n=1)((2n-1).某-Pn-1(某)(n-1).Pn-2(某))/n(n>=1)编写以下程序:#include<tdio.h>#include<math.h>longfact(intn,int某){longp;if(n==0)p=1;if(n==1)p=某;if(n>1)p=((2某n-1)某某-fact(n-1,某)-(n-1)某fact(n-2,某))/n;return(p);}main(){int某,n;longf;printf("huruhujun,某:");canf("%d,%d",&n,&某);f=fact(n,某);
printf("%ld",f);}运行结果如下
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论