您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 《C语言程序设计》实验报告函数
《C语言程序设计》课程实验报告实验名称函数学号_姓名___班别实验日期:年月日实验报告日期:年月日指导老师:实验地点:成绩:评语:≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡实验目的和要求熟悉定义函数和声明函数的方法;熟悉调用函数时实参与形参的对应关系;熟悉函数的嵌套调用和递归调用方法;熟悉全局变量和局部变量的概念和用法。实验环境硬件环境:分辨率至少在1024*768像素之上的显示器;P-III及其兼容处理器,或更高型号;处理器速度至少600MHz,推荐1GHz或更高;内存至少512MB,推荐1GB或更大;2G以上硬盘空间。软件环境:安装windows操作系统和TC(或VC++)软件。实验重点及难点重点:一维数组、二维数组;字符数组与字符串的概念与定义方法,常用的字符串处理函数。难点:数组下标的起始数问题;利用数组形式进行程序设计的一般方法与典型算法。实验过程一、相关知识1.一个源程序文件由一个或多个函数以及其他有关内容(如指令、数据声明与定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。2.库函数,它是由系统提供的,用户不必自己定义,可直接使用它们。应该说明,不同的C语言编译系统提供的库函数的数量和功能会有一些不同,当然许多基本的函数是共同的。3.定义函数包括一下几点内容:(1)指定函数的名字,以便以后按名调用。(2)指定函数的类型,即函数返回值的类型。(3)指定函数的参数的名字和类型,以便在调用函数时向它们传递数据。对无参函数不需要这项。(4)指定函数应当完成什么操作,也就是函数是做什么的,即函数的功能。这是最重要的,是在函数体中解决的。3.函数体包括声明部分和语句部分。4.在定义函数时要用“类型标识符”(即类型名)指定函数值的类型,即指定函数带回来的值的类型。5.在调用函数过程中,系统会把实参的值传递给被调用函数的形参。或者说,形参从实参得到一个值,该过程在函数调用期间有效,可以参加该函数中的运算。6.实参可以是常量、变量或表达式,例如:max(3,a+b),但要求它们有确定的值。在调用时将实参的值赋给形参。7.实参向形参的数据传递是“值传递”,单向传递,只能由实参传给形参,而不是由形参传给实参。实参和形参在内存中占有不同的存储单元,实参无法得到形参的值。8.数组元素可以用作函数实参,不能用作形参,因为形参是在函数被调用时临时分配存储单元的,不可能为一个数组元素单独分配存储单元(数组是一个集体,在内存中占连续的一段储存单元)。在用数组元素作函数实参时,把实参的值传给形参,是“值传递”方式。数据传递的方向是从实参传到形参,单向传递。9.在一个函数内部定义的变量只在本函数范围内有效,也就是说只有在本函数内才能引用它们,在此函数以外是不能使用这些变量的。在复合语句内定义的变量只在本复合语句范围内有效,只有在本身复合语句内才能引用它们。在复合语句以外是不能使用这些变量的,以上这些称为“局部变量”。10.函数中的局部变量,如果不专门声明为static(静态)存储类别,都是动。态地分配存储空间的,数据存储在动态存储区中。函数中的形参和在函数中定义的局部变量(包括在复合语句中定义的局部变量),都属于此类。在调用该函数时,系统会给这些变量分配存储空间,在函数调用结束时就自动释放这些存储空间。因此这类局部变量称为自动变量。自动变量用关键字auto作存储类别的声明。二、实验内容:1.写一个判断素数的函数,从主函数输入一个整数,输出是否是素数的信息;2.输入10个学生5门课的成绩,分别用函数实现下列功能:(1)计算每个学生的平均分;(2)计算每门课的平均分;3.用递归方法求n阶勒让德多项式的值,递归公式为:1(n=0)Pn(x)=x(n=1)((2n-1).x-Pn-1(x)-(n-1).Pn-2(x))/n(n=1)三、实验过程1.写一个判断素数的函数,从主函数输入一个整数,输出是否是素数的信息编写以下程序:#includestdio.h#includemath.hf(intx)/*判断x是否素数*/{inti,sign=0;;for(i=2;i=(int)sqrt(x);i++){if(x%i==0){++sign;break;}}if(sign!=0)printf(\n该数不是素数\n);elseprintf(\n该数是素数\n);}voidmain(){inta;printf(请输入一个整数:\n);scanf(%d,&a);f(a);}运行结果如下2输入10个学生5门课的成绩,分别用函数实现下列功能:(1)计算每个学生的平均分;(2)计算每门课的平均分;输入一下程序:#includestdio.h#definen10#defineb5intscore[n][b];floataver[n],cour[b];voidinput(){inti,j;printf(请依次输入每位学生的成绩:\n);for(i=0;in;i++)for(j=0;jb;j++)scanf(%d,&score[i][j]);}voidaverage(intscore[n][b]){inti,j;for(i=0;in;i++){floats=0.0;for(j=0;jb;j++)s=s+score[i][j];aver[i]=s/b;}}voidcourse(intscore[n][b]){inti,j;for(j=0;jb;j++){floats=0.0;for(i=0;in;i++)s=s+score[i][j];cour[j]=s/n;}}voidmain(){inti,j;input();printf(学生成绩为:\n);for(i=0;in;i++){for(j=0;jb;j++)printf(%d,score[i][j]);printf(\n);}printf(每个学生的平均成绩为:\n);average(score);for(i=0;in;i++)printf(%5.2f,aver[i]);printf(\n);printf(每门课的平均分为:\n);course(score);for(j=0;jb;j++)printf(%5.2f,cour[j]);printf(\n);}运行结果如下3.用递归方法求n阶勒让德多项式的值,递归公式为:1(n=0)Pn(x)=x(n=1)((2n-1).x-Pn-1(x)-(n-1).Pn-2(x))/n(n=1)编写以下程序:#includestdio.h#includemath.hlongfact(intn,intx){longp;if(n==0)p=1;if(n==1)p=x;if(n1)p=((2*n-1)*x-fact(n-1,x)-(n-1)*fact(n-2,x))/n;return(p);}main(){intx,n;longf;printf(shurushujun,x:);scanf(%d,%d,&n,&x);f=fact(n,x);printf(%ld,f);}运行结果如下四、实验结果及分析实验中遇到的问题主要就是在复杂程序面前,还是显得手足无措,对复杂算法的构思和编程比较吃力,但归根结底是基础还不够扎实,致使程序中的选择结构混乱不堪,使计算机难以正确执行既定程序步骤。出现问题的原因一是解决复杂算法编程的能力有所欠缺,二是基本功还不够扎实。对于程序本身,解决方法是与人交流、查资料;而对于自身,则主要是再次温故课本,查漏补缺,温故知新。以及利用这一方法解决问题的结果相当不错,最终在自身积极钻研下,搞定了源程序
本文标题:《C语言程序设计》实验报告函数
链接地址:https://www.777doc.com/doc-2344165 .html