厦门理工学院 C语言报告实验6_函数
c语言实验报告 函数

c语言实验报告函数标题:C语言实验报告函数摘要:本实验报告主要介绍了C语言中函数的概念、定义和使用方法。
通过实验展示了如何在C语言中定义函数、调用函数以及函数的参数传递和返回值。
通过本实验的学习,读者将能够掌握C语言中函数的基本用法,为今后的编程实践奠定基础。
关键词:C语言、函数、参数传递、返回值引言:函数是C语言中的重要概念,它可以将一段代码封装成一个独立的模块,方便代码的复用和维护。
本实验将通过具体的示例来介绍C语言中函数的定义和使用方法,帮助读者更好地理解和掌握函数的概念和用法。
一、函数的定义和声明在C语言中,函数的定义包括函数名、参数列表、返回类型和函数体。
函数的声明包括函数名、参数列表和返回类型,用于告诉编译器函数的存在和类型信息。
下面是一个简单的函数定义和声明的示例:```c// 函数声明int max(int a, int b);// 函数定义int max(int a, int b) {return a > b ? a : b;}```二、函数的调用在C语言中,可以通过函数名和参数列表来调用函数。
例如,我们可以通过max函数来比较两个数的大小:```cint a = 10, b = 20;int result = max(a, b);printf("The max number is %d\n", result);```三、参数传递和返回值函数可以通过参数列表接收外部传入的数据,也可以通过return语句返回计算结果。
例如,下面的函数用于计算两个数的和:```cint add(int a, int b) {return a + b;}```四、实验结果通过本次实验,我们成功掌握了C语言中函数的定义、声明、调用、参数传递和返回值的基本用法。
在今后的编程实践中,我们可以更加灵活地使用函数来组织和管理代码,提高代码的复用性和可维护性。
结论通过本次实验,我们对C语言中函数的概念和用法有了更深入的了解。
c语言函数的实验总结

c语言函数的实验总结C语言函数的实验总结一、实验目的C语言函数是C语言编程中的一个重要概念,能够帮助程序员实现代码模块化、提高代码复用性和可读性。
通过本次实验,旨在掌握C语言函数的基本用法和调用方式,提高编程能力和逻辑思维能力。
二、实验过程本次实验主要涉及以下几个方面的知识和技能:1. 函数的定义和声明2. 函数的参数传递方式3. 函数的返回值4. 函数的递归调用在实验开始前,我们首先了解了函数的定义和声明的概念。
函数的定义是指函数体的实现,包括函数的形参、返回值和函数体的具体实现;函数的声明是指对函数的提前声明,告诉编译器该函数的存在和返回值类型。
接下来,我们根据实验要求分别编写了一些示例函数来巩固相关的知识。
在函数的参数传递方式方面,我们编写了一些传值调用、指针调用和引用调用的示例函数,以便深入理解C语言中参数的传递方式为值传递。
在函数的返回值方面,我们编写了一些返回值为基本类型和引用类型的示例函数,以便理解C语言中函数返回值的作用和类型。
在函数的递归调用方面,我们编写了一些递归求阶乘、递归求斐波那契数列的示例函数,以便掌握递归调用的原理和实现方式。
在实验过程中,我们针对每一个示例函数进行了编码,并通过编译器进行了测试和调试。
在测试过程中,我们特别注意了函数的输入参数和输出结果,确保程序的正确性和可靠性。
同时,我们还使用了一些调试技巧,如打断点、输出调试信息来帮助我们查找代码中的错误和问题。
三、实验结果通过本次实验,我们成功实现了所有示例函数,并通过了编译器的测试和调试。
我们发现C语言函数在编程中的作用非常重要,能够帮助我们实现代码的模块化和封装。
同时,通过函数的参数传递方式可以提高代码的复用性,通过函数的返回值可以获得函数的执行结果,避免了代码之间的耦合性。
另外,通过递归调用函数可以简化代码的实现和理解,但同时也需要注意递归的终止条件和递归的效率问题。
四、实验总结通过本次实验,我们总结出以下几个重要的收获和体会:1. 函数是C语言中的基本概念,是代码模块化和可读性的重要手段。
C语言实验报告函数

C语言实验报告函数
简介
本实验报告旨在介绍C语言中的函数,包括函数的定义和调用、参数传递、返回值以及递归等内容。
通过实验,我们将深入了解函数在C 语言程序中的作用和使用方法。
函数定义和调用
在C语言中,函数是一段完成特定任务的独立代码块。
函数可以在程序中被多次调用,提供代码的模块化和重复使用性。
函数通常由函数名、参数列表、返回值类型和函数体组成。
函数定义的一般形式如下所示:
返回值类型函数名(参数列表) {
// 函数体
// 执行特定任务的代码
return 返回值;
}
函数定义中的返回值类型指定了函数的返回类型,函数体中的代码完成特定的任务,并通过 return 语句返回一个值。
函数的调用发生在程序的其他地方,通过函数名和对应的参数来调用函数。
函数调用的一般形式如下所示:
返回值变量 = 函数名(参数1, 参数2, ...);
函数调用会执行函数体中的代码,并返回一个值。
返回值可以保存在变量中供后续使用。
参数传递
在C语言中,参数传递可以通过值传递或地址传递来进行。
当使用值传递时,函数的参数是实际参数的副本,任何对参数的修改不会影响实际参数的值。
而当使用地址传递时,函数可以通过指针来修改实际参数的值。
值传递
值传递是指将实际参数的值复制给形式参数,在函数内部对形式参数的修改不会影响实际参数的值。
下面是一个示例:
``` #include <stdio.h>
void changeValue(int num) { num = 10; printf(。
C语言:函数的应用实验报告

课程名称:结构化程序设计与C语言开课实验室:年月日一、实验目的用C语言编写和调试函数的程序。
从而对函数的定义、调用、全局变量的灵活运用有比较深入的了解。
二、内容及结果1、程序一素数函数1)程序要求:写一个判断是否是素数的函数,在主函数输入一个整数,调用它后输出结果。
2)代码:#include<stdio.h>#include<math.h>int prime(int n){ int i,k;k=sqrt(n);for(i=2;i<=k;i++)if(n%i==0) break;if(i<=k)return 0;elsereturn 1;}int main(){ int prime(int n); int n;printf("Please enter n:"); scanf("%d\n",&n);if(prime(n)==1)printf("%d is a prime number",int(n));elseprintf("%d is not a prime number",int(n)); }3)运行截图:2、程序二 用递归方法求n 阶勒让德多项式的值 1)程序要求:递归公式为: 当n=0,=)(x P n 1 当n=1, =)(x P n x;当n>=1, =)(x P n ((2n-1)x-P n-1(x)-(n-1)P n-2)x))/n 2)代码:#include<stdio.h>#include<math.h>int p(int n,int x);void main(){int n,x;scanf("%d",&x);for(n=0;n<=10;n++)printf("p(%d,%d)=%d\n",n,x,p(n,x));}int p(int n,int x){if(n==0)return 1;elseif(n==1)return x;elsereturn((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n; }3)运行截图:3、程序三成绩统计程序1)程序要求:输入10个学生5门课的成绩,分别用函数实现以下功能:计算每个学生的平均分;计算每门课的平均分;找出所有50个分数中最高的分数所对应的学生和课程;计算平均方差。
《C语言与程序设计》实验06---函数

实验六函数一、实验目的1. 熟练掌握函数的定义、函数的类型和返回值。
2. 熟练掌握形式参数与实际参数、参数值的传递。
3. 掌握函数的嵌套调用与递归调用。
4.学会使用指向函数的指针变量。
5.了解指向指针的指针的概念及带参数的main函数。
6. 掌握局部变量和全局变量。
7. 掌握变量的存储类型。
8. 了解内部函数和外部函数。
二、实验学时:8课时三、预习知识1.标准库函数标准库函数是C系统提供的,这些库函数定义了一些基本的、常用的功能,用户可以使用这些库函数,但是在使用库函数之前需要用预编译命令# include将该库函数所在的头文件包含进来。
2.自定义函数定义函数一般有两种形式形式1:存储类型类型符函数名(类型符形参1,类型符形参2 ,… ) { 说明语句执行语句}形式2:存储类型类型符函数名(形参1,形参2 ,……)形参类型说明{ 说明语句执行语句}说明:①形参表中即使没有参数,函数名后的一对圆括号也不能省略。
②函数名前的类型符是用来说明函数返回值的数据类型(也作为函数的数据类型) 。
当函数值为整型时,类型符可以省略。
③当函数只完成某一特定操作不需要返回值时,可用类型标识符 void 说明,将函数定义成空类型。
④C 规定:不允许在一个函数内部再定义另外一个函数,即函数不允许嵌套定义。
⑤函数的存储类型:函数的存储类型有 extern 和 static 两种。
extern 型的函数除了可以被本程序中其它函数调用外,还可以被其它文件中的函数调用,这种函数称为外部函数,如果定义函数时省略 extern ,则隐含为外部函数。
static 型的函数只能被本源程序文件中的函数调用,称为内部函数(静态函数)。
3.函数的参数(1)在定义函数时函数名后面括号中的变量称为形参(形式参数),如果有两个以上形参,形参之间以逗号分隔。
形参是函数的内部变量,只在函数内部才有意义。
在未出现函数调用时,形参不占内存。
对每个形参必须指明其名字和数据类型。
C语言实验报告函数

实验名:函数的定义及调用一、实验目的1、掌握C语言函数定义及调用的规则。
2、理解参数传递的过程。
二、实验内容(一))题目11、题目内容描述1、上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
main(){int,y;printf(“%d\n”,sum(x+y));int sum(a,b){int a,b;return(a+b);}}2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
三、分析讨论1、针对以上实验内容写出相应的参数传递过程并分析结果。
2、讨论参数的传递的几种形式。
2、输入和输出信息描述及数据类型确定;、输入数据(1)序号输入数据描述数据类型1 x,y int2 a,b int(2)输出数据序号输出数据描述数据类型1 x+y int3、程序源代码(填写程序调试正确后的代码)#include <stdio.h>int main(){int sum(int a,int b); //对被调用函数sum 的声明int x,y,z;scanf("%d,%d",&x,&y);z=sum(x,y); //调用sum 函数,将其值赋给zprintf("%d\n",z); //输出函数结果zreturn 0;//返回值为0}int sum(int a,int b) //定义sum函数{return(a+b); //将a+b的值作为返回值返回到调用sum的位置}4、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1 In function 'main':|int,y;是改为int x,y;2 error: stray '\241' in program|error: expected expressionbefore '%' token|error: stray '\' in program|printf(“%d\n”,sum(x+y));是将整段改为int sum(int a , int b);int x,y,z;z=sum(x,y);printf("%d\n",z);3 error: 'a' redeclared asdifferent kind of symbol|error: 'b' redeclared asdifferent kind of symbol|int a,b;是去掉整句话4 warning: 'x' is useduninitialized in this function[-Wuninitialized]|是加上scanf("%d,%d",&x,&y);5 error: static declaration of'sum' follows non-staticdeclaration|是将int及后面的语句块都移到main外面5、测试与结果分析(1)、测试数据与结果测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1 测试用例4,5 9 是可运算范围内2 测试用例55555,7933 63488 是可运算范围内3 测试用例-89,-79 -168 是可运算范围内(2)、相关问题回答2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
C语言程序设计实验报告——实验六

c=add(a,b);
printf("sum is %f\n",c);
}
float add(float x,float y)
{
float z;
z=x+y;
return(z);
}
2.调试运行以下程序,分析调用函数前后程序中变量a和b的值是否发生改变?为什么?
void main( )
{
int a=3,b=6;
/*04*/ {
/*05*/ int a=14, b=15, temp;
/*06*/ temp=a/b;
/*07*/ #ifdef DEBUG
/*08*/ printf("a=%d, b=%d \n", a, b);
/*09*/ #endif
/*10*/ printf("temp =%d \n", temp);
#include <stdio.h>
#define NL printf("\n")
#define PRINT(F,V) printf("V=%F\t",V)
#define PRINT1(F,X1) PRINT(F,X1);NL
#define PRINT2(F,X1,X2) PRINT(F,X1);PRINT(F,X2);NL
main( )
{
int a,b,c,d;
float e,f,g,h;
long i,j;
char n,m;
a=1;b=2;c=3;d=4;e=1.5;f=2.5;g=3.5;h=4.5;
i=10;j=100;n='x';m='y';
C语言实验-函数

//练习 4 //主函数中变量的类型与函数体中变量类型的比较 #include<stdio.h> max(float x,float y) { float z=x; if(z<y) z=y; return z; } main() { float a=5.6,b=7.8;
int c; c=max(a,b); printf("%d\n",c); } //运行结果 //7
【实验总结】 1. 总结实验中所出现的问题及解决方法。 2. 总结函数使用方法和参数传递方式。
n=fun(k,m); printf("%d\n",n); n=fun(k,m); printf("%d\n",n); }
//运行结果 //8 //17 //如果,将函数体与主程序交换位置,会有什么结果?如何修改程序,使其编译 正确? //练习 3 //形参值的变化不影响实参值 #include<stdio.h> int a,b; void fun() {a=100;b=200;} main() { int a=5,b=7; fun(); printf("%d%d\n",a,b); } //运行结果 //57
//练习 6 //写一个判断素数的函数 //在主函数中输入一个整数,输出是否是素数的信息 #include<stdio.h> int prime(int number) { int flag=1,n;
for(n=2;n<number/2 && flag==1;n++) if(number%n==0) flag=0; return flag; } main() { int number; printf("input 1 number:\n"); scanf("%d",&number); if(prime(number)) printf("%d 是素数\n",number); else printf("%d 不是素数\n",number);
c语言函数实习报告

c语言函数实习报告c语言函数实习报告程序设计(C语言)实验报告实验目的(1)掌握函数的定义方法,调用方法,参数说明以及返回值;(2)掌握实参与形参的对应关系,一集参数之间的“值传递”的方式;(3)掌握函数嵌套调用及递归调用的设计方法;(4)在编写过程中加深理解函数调用的程序设计思想。
实验内容(1)编辑,编译,运行实验指导中的程序,并分析输出结果(2)编写一个函数primeNum(intx),功能是判别一个数是否是素数。
(3)编写函数mulNum(inta,intb),功能是判定a是否是b的整数倍实验1方法一:源程序:#include#includeintputeNum(intx) {intsum,a,b,c,d,e; sum=0;x=abs(x);a=x/10000;b=(x%10000)/1000; c=(x%1000)/100; d=(x%100)/10;e=(x%10)/1;sum=a+b+c+d+e;returnsum;}main(){inta,b;printf("Pleaseinputaninteger:");scanf("%d",&a);b=puteNum(a);printf("thesumofalldigitsis%d\n",b); }输入一个整数123运行结果如图输入整数98341验证运行结果如图方法二:#include#includeintputeNum(intx) {intsum,i,t;sum=0;x=abs(x);for(i=4;i>=0;i--) {t=pow(10,i);if(x>=t){sum=sum+x/t;x=x-(x/t)*t;}}returnsum;}main(){inta,b;printf("Pleaseinputaninteger:");scanf("%d",&a);b=puteNum(a);printf("Thesumofalldigitsis%d\n:",b);} 输入整数456运行结果如图输入整数98341验证运行结果如图实验2:源程序:#includevoidmove(chargeton,charputon){printf("%c->%c\n",geton,puton);}voidHanoi(intn,charone,chartwo,charthree){ if(n==1)move(one,three);else{Hanoi(n-1,one,three,two);move(one,three);Hanoi(n-1,two,one,three);}}voidmain(){intm;printf("Inputthenumberofdiskes:");scanf("%d",&m);printf("Thestepsofmoving%ddiskes:\n",m);Hanoi(m,'A','B','C' );}输入3运行结果如下:输入4运行结果如下:实验2:源程序:#includeinti,a,x;intprimeNum(intx){for(i=2;i {a=x%i;if(a==0)return0;}return1;}main(){printf("Pleaseinputx!\n");scanf("%d",&x);if(x printf("wronginput!\n"); else{a=primeNum(x);if(a==0)printf("%disnotaprimenumber!\n",x);else printf("%disaprimenumber!\n",x);}}输入数据0运行结果如下:输入数据1运行结果如下:输入数据2运行结果如下:输入数据3运行结果如下:输入数据9运行结果如下:输入数据13运行结果如下:输入数据59运行结果如下:输入数据121运行结果如下:实验3:源程序:#includeintmulNum(inta,intb){inti,c;c=a%b;if(c>0)i=0;elsei=1;returni;}main(){inta,b,s;printf("pleaseinputaandb:\n");scanf("%d%d",&a,&b);s=mulNum( a,b);if(s==1)printf("%disamultipleof%d\n",a,b);elseprintf("%disnotamultipleof%d\n",a,b);}输入数据1和5运行结果如下:输入数据5和5运行结果如下:输入数据6和2运行结果如下:输入数据6和4运行结果如下:输入数据20和4运行结果如下:输入数据37和9运行结果如下:出现的问题及解决方法:编译过程中常出现因错漏而使语句不规范的现象。
C语言实验程序、总结实验六函数(★)

C语言实验程序、总结实验六函数(★)第一篇:C语言实验程序、总结实验六函数一实验目的掌握定义函数的方法;实验六函数掌握函数实参与形参的对应关系以及“值传递”的方式; 3 掌握函数递归调用的方法;二实验内容编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数由键盘输入。
【提示】设有两个正整数m和n ⑴ 实验四介绍了求最大公约数的算法,也可以用递归的方法求最大公约数。
设hcf(int m,int n)是用来求m和n的最大公约数h函数,k=m%n,则:⎧hcf(n,k)h=⎨⎩nk≠0k=0⑵ 若最大公约数为h,则最小公倍数为:m*n/h。
实验时,完成以下两个函数的定义,使之和主程序构成完整的程序,实现题目的要求。
#include int hcf(int m,int n)/* 求最大公约数的函数*/ { …… } int lcd(int m,int n,int h)/* 求最小公倍数的函数 */ { 返回最小公倍数;} main(){ int m,n,h,l;printf(“请输入两个正整数m、n:”);scanf(“%d,%d”,&m,&n);h=hcf(m,n);printf(“%d和%d的最大公约数是:%dn”,m,n,h);l=lcd(m,n,h);printf(“%d和%d的最小公倍数是:%dn”,m,n,l);} 程序调试通过后,用m=350、n=125和m=96、n=64两组数据运行程序,记录程序的输出。
完整程序如下: #include int hcf(int m,int n)/* 求最大公约数的函数 */ { int temp,r;if(mint lcd(int m,int n,int h)/* 求最小公倍数的函数*/ { return(m*n/h);} main(){ int m,n,h,l;printf(“请输入两个正整数m、n:”);scanf(“%d,%d”,&m,&n);h=hcf(m,n);printf(“%d和%d的最大公约数是:%dn”,m,n,h);l=lcd(m,n,h);printf(“%d和%d的最小公倍数是:%dn”,m,n,l);}运行结果如下图:编写求n!的函数f(int n),在主函数中输入两个整数m、n,然后调用函数求:Cnm m!n!(m-n)!【注意】函数f的类型应用long或double。
C语言程序设计—函数—实验报告

实验报告专业软件工程班级X 班学号_ XXXXXXXXXXX_ 姓名实验日期:201X年X月X日报告退发(订正、重做)课程C程序设计实验实验名称函数一、实验目的①熟练掌握C程序中函数的定义;②掌握函数的调用,函数参数的传递;③熟练掌握函数的嵌套调用和递归调用;二、实验环境(描述实验的软件、硬件环境)①软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器;②硬件环境:PC机一台三、实验内容、步骤和结果分析题目一:编写一个用来判断质数(素数)的函数。
要求:(1)在main函数中调用该函数对输入的数值进行判断,并输出判断结果;(2)当输入数值<=1时,停止输入和判断。
#include<stdio.h>#include<math.h>/*=======判断质数(素数)的函数=======*/int judgePrime(int n){for(int i=2;i<=sqrt(n);i++)//一个数n如果是合数,那么它的所有的因子不超过n的开方{if(n%i==0)return 0;else continue;}return 1;}/*=======判断质数(素数)的函数=======*/int main(){printf("\n提示:输入一个数字来判断是否是质数(素数),当输入数值<=1时,停止输入和判断。
\n\n");for(int num=2,temp;num>1;){printf("Please enter a number:");scanf("%d",&num);if(num<=1)break;//当输入数值<=1时,停止输入和判断temp=judgePrime(num);if(temp==0)printf("%d is not a prime numner!\n\n",num);else printf("%d is a prime numner!\n\n",num);}return 0;}题目二:使用习题1中所编写的判断质数的函数验证哥德巴赫(Goldbach)的1+1猜想-----任何一个>=6的偶数都可以表示成两个素数之和要求:①屏幕提示用户一个>=6的偶数;②输出这个偶数等于2个素数之和的表达式;③当输入数据<6或者不是偶数时,停止输入和验证。
c语言函数实验总结

c语言函数实验总结本次实验主要是在C语言中熟悉掌握函数的概念和使用方法,对于函数的参数传递、返回值、函数调用等方面进行了深入学习。
在实验中,我积极参与实验操作,认真观察实验现象,结合课本和教师的指导,顺利完成了实验任务。
首先,在实验开始之前,我们首先对函数的概念进行了学习和了解。
函数是C语言程序的基本单位,是一个独立、完整的程序模块,具有特定的功能。
函数可以接收参数,进行一系列的操作,然后返回一个值。
使用函数可以使程序结构清晰,提高代码的可读性和可维护性,同时可以减少代码的重复使用,提高代码的复用性。
其次,我们学习了函数的定义和调用的方法。
函数的定义由函数头和函数体组成,函数头包括返回值类型、函数名和参数列表。
函数的调用就是通过函数名和实参来调用函数,实参的个数和类型必须与形参一致。
在实验中,我们通过实例和示例代码来熟悉和掌握函数定义和调用的方法。
在学习函数的参数传递时,我们了解了C语言中参数传递的方式,包括值传递、指针传递和引用传递。
值传递是指将实参的值复制一份传递给形参,在函数内部修改形参的值不会影响到实参。
指针传递是指将实参的地址传递给形参,在函数内部修改形参的值会影响到实参。
引用传递是指将实参的引用传递给形参,在函数内部修改形参的值会直接影响到实参。
通过实验操作,我们深入理解了参数传递的概念和原理,并能够灵活运用于实际的编程中。
在实验中,我们还学习了函数的返回值。
函数的返回值是指函数执行完毕后返回的一个值,可以是数值、字符或者指针等。
函数的返回值类型在函数定义的时候声明,在函数体中通过return语句返回具体的值。
在实验中,我们通过实例和示例代码来了解函数返回值的意义和用法,并能够正确使用返回值完成相应的操作。
最后,在实验中我们还学习了递归函数和库函数的使用。
递归函数是指函数调用自身的函数,可以解决一些问题的重复操作。
递归函数需要设置递归出口,以避免无限循环调用。
库函数是在C语言中提供的一些已经封装好的函数,可以直接调用来完成特定的功能。
C语言程序设计—函数—实验报告.docx

33
scanf(H :” r &num);
34
temper)roveGo 1 dbach (num);
35
if (temp— )//当输入小于 6 或者不是偶贾 彳
36
37
P丄
38
return ;
39
40
CMXMCCMC
length; KW lino; 40
Ln;29 3;初 Sd;0|0
Oc$\Wtf)dcrw> ANMasUn 8 介 ®
题目三 :编写一个求阶乘的函数,接着调用该函数实现组合的求解
要求: ① 提示用户输入 n 和 m 的数值;
: ② 输出的 C 结果
#include<stdio.h> /*======二阶乘函数=======*/ int fac(int n) {
int f; if(n<0)
printf(nn<O,data error!11); else if(n==0lln==l)
实验报告函数的用法(3篇)

第1篇一、实验目的1. 理解函数的概念及作用。
2. 掌握函数的声明、定义和调用方法。
3. 学习函数的参数传递和返回值。
4. 熟悉函数的嵌套调用和递归调用。
二、实验原理函数是程序设计中的一种基本概念,它将一系列具有特定功能的代码封装在一起,以便重复使用。
函数的主要作用是将复杂的程序分解为多个模块,提高代码的可读性和可维护性。
在C语言中,函数分为两大类:标准函数和自定义函数。
标准函数是C语言库函数,如printf()、scanf()等;自定义函数是由程序员根据实际需求编写的函数。
函数的基本结构如下:```c函数返回类型函数名(参数列表) {// 函数体}```三、实验内容1. 函数的声明函数声明用于告诉编译器函数的存在,包括函数名、返回类型和参数列表。
函数声明格式如下:```c函数返回类型函数名(参数类型参数名);```2. 函数的定义函数定义是函数声明的具体实现,包括函数名、返回类型、参数列表和函数体。
函数体由大括号{}包围,包含一系列执行语句。
```c函数返回类型函数名(参数类型参数名) {// 函数体}```3. 函数的调用函数调用是指程序中调用函数的过程。
调用函数时,需要按照函数的参数列表提供相应的实参。
```c函数名(实参1, 实参2, ..., 实参n);```4. 函数的参数传递函数的参数传递主要有两种方式:值传递和地址传递。
(1)值传递:将实参的值复制给形参,函数内部对形参的修改不会影响实参。
(2)地址传递:将实参的地址传递给形参,函数内部通过修改形参的地址来修改实参的值。
5. 函数的返回值函数的返回值是指函数执行完毕后返回给调用者的值。
函数返回值类型必须与函数声明时指定的返回类型一致。
6. 函数的嵌套调用函数嵌套调用是指在一个函数内部调用另一个函数。
嵌套调用的函数可以递归调用自身。
7. 函数的递归调用递归调用是指函数在执行过程中直接或间接地调用自身。
递归调用分为直接递归和间接递归两种。
厦门理工学院 C语言报告实验6_函数

《C语言程序设计》实验报告实验序号:6 实验项目:函数学号姓名专业、班级网络工程实验地点指导教师林仙丽实验时间2012年12月29日一、实验目的及要求1、掌握函数声明、定义和使用的方法;2、掌握函数嵌套和递归调用的方法;3、掌握全局变量、局部变量、静态局部变量的概念和使用方法;4、掌握定义头文件的方法,学会建立和调试多文件程序;5、实验内容采用函数方法完成。
二、实验设备(环境)及要求使用Visual C++ 6.0;windows系列操作系统的环境。
三、实验内容与步骤1.编写一个函数prt(c,n),重复打印给定的字符c,n次。
在主函数中调用prt(c,n)函数,打印一个直角三角形。
如:prt(*,6)的结果如下:*********************【实验提示】函数prt(c,n)完成输出功能,是一个void函数,有两个参数。
函数源代码部分:运行结果截图:2.写四个函数分别用于计算圆周长、圆面积、圆柱表面积,圆柱体积,在main函数中完成测试。
运行结果截图:3.根据以下公式求π的近似值,直到最后一项的绝对值小于10-5为止22222n13121116++++≈ π 运行结果截图:4.用递归方法计算3333321n ++++ 的值,n 的值由键盘输入运行结果截图:5.以下程序的功能是计算s=∑=nk k 0!,补足所缺语句。
#include “stdio.h ”long fun(int n){ int I;long m;m= 1 ;for(I=1; I<=n; I++) m= I*m ;return m;}main(){ long m;int k,n;scanf(“%d ”,&n);m= 0 ;for(k=0;k<=n;k++) m=m+ fun(k) ;printf(“%ld\n ”,m);}运行结果截图:6.【附加题】写一个函数,使输入的一个字符串按反序,在主函数中输入字符串和,在非主函数中输出反序后的字符串。
C语言实验报告 函数

实验名:函数的定义及调用一、实验目的1、掌握C语言函数定义及调用的规则。
2、理解参数传递的过程。
二、实验内容(一))题目11、题目内容描述1、上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
main(){int,y;printf(“%d\n”,sum(x+y));int sum(a,b){int a,b;return(a+b);}}2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
三、分析讨论1、针对以上实验内容写出相应的参数传递过程并分析结果。
2、讨论参数的传递的几种形式。
2、输入和输出信息描述及数据类型确定;、输入数据(1)序号输入数据描述数据类型1 x,y int2 a,b int(2)输出数据序号输出数据描述数据类型1 x+y int3、程序源代码(填写程序调试正确后的代码)#include <stdio.h>int main(){int sum(int a,int b); //对被调用函数sum 的声明int x,y,z;scanf("%d,%d",&x,&y);z=sum(x,y); //调用sum 函数,将其值赋给zprintf("%d\n",z); //输出函数结果zreturn 0;//返回值为0}int sum(int a,int b) //定义sum函数{return(a+b); //将a+b的值作为返回值返回到调用sum的位置}4、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1 In function 'main':|int,y;是改为int x,y;2 error: stray '\241' in program|error: expected expressionbefore '%' token|error: stray '\' in program|printf(“%d\n”,sum(x+y));是将整段改为int sum(int a , int b);int x,y,z;z=sum(x,y);printf("%d\n",z);3 error: 'a' redeclared asdifferent kind of symbol|error: 'b' redeclared asdifferent kind of symbol|int a,b;是去掉整句话4 warning: 'x' is useduninitialized in this function[-Wuninitialized]|是加上scanf("%d,%d",&x,&y);5 error: static declaration of'sum' follows non-staticdeclaration|是将int及后面的语句块都移到main外面5、测试与结果分析(1)、测试数据与结果测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1 测试用例4,5 9 是可运算范围内2 测试用例55555,7933 63488 是可运算范围内3 测试用例-89,-79 -168 是可运算范围内(2)、相关问题回答2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
厦门理工c语言数据结构实验

《数据结构》实验报告实验序号:6 实验项目名称:树和二叉树的操作}while(x!=-9999);}改写以上程序,实现功能如下(任选两题):1.编写函数实现前序、中序和后序遍历。
运行结果截图:2.编写函数实现计算叶节点个数。
运行结果截图:四、分析与讨论附源程序清单:1.#include <stdlib.h>#include <stdio.h>typedef int TElemType;typedef struct BiTNode{TElemType data;struct BiTNode *lchild,*rchild;}BiNode, *Bitree;DLR( Bitree root ){ if (root !=NULL) { //非空二叉树printf("%d",root->data); //访问DDLR(root->lchild); //递归遍历左子树DLR(root->rchild); //递归遍历右子树}return(0);}LDR(Bitree root){ if(root !=NULL){LDR(root->lchild);printf("%d",root->data);LDR(root->rchild);}return(0);}LRD (Bitree root){ if(root !=NULL) {LRD(root->lchild);LRD(root->rchild);printf("%d",root->data);}return(0);}Bitree root;//定义根结点void insert_data(int x) /*生成/树*/{Bitree p,q,s;s=(Bitree)malloc(sizeof(BiNode)); //创建结点s->data=x; //结点赋值s->lchild=NULL;s->rchild=NULL;if(!root){root=s;}else{p=root;while(p) /*如何接入二叉排序树的适当位置*/{q=p;if(p->data==x) //相同结点不能重复插入{printf("data already exist! \n");return;}else if(x<p->data)p=p->lchild;elsep=p->rchild;}if(x<q->data)q->lchild=s;elseq->rchild=s;}}void main() /*先生成二叉排序树*/{int i=1,x; //i记录结点个数,x存放结点值root=NULL; /*千万别忘了赋初值给root!*/printf("请输入数据,-9999表示输入结束\n");do{printf("please input data %d:",i);i++;scanf("%d",&x); /*从键盘采集数据,以-9999表示输入结束*/if(x==-9999){printf("\nNow output data value:\n");}elseinsert_data(x); /*调用插入数据元素的函数*/}while(x!=-9999);printf("\nDLR");DLR(root);printf("\nLDR");LDR(root);printf("\nLRD");LRD(root);}2.#include <stdlib.h>#include <stdio.h>typedef int TElemType;typedef struct BiTNode{TElemType data;struct BiTNode *lchild,*rchild;}BiNode, *Bitree;Bitree root;//定义根结点int CountLeaf (Bitree root){ //返回指针T所指二叉树中所有叶子结点个数int m,n;if (!root ) return 0;if (!root->lchild && !root->rchild) return 1;else {m = CountLeaf( root->lchild); n = CountLeaf( root->rchild);return (m+n);} //else} // CountLeafvoid insert_data(int x) /*生成/树*/{Bitree p,q,s;s=(Bitree)malloc(sizeof(BiNode)); //创建结点s->data=x; //结点赋值s->lchild=NULL;s->rchild=NULL;if(!root){root=s;}else{p=root;while(p) /*如何接入二叉排序树的适当位置*/{q=p;if(p->data==x) //相同结点不能重复插入{printf("data already exist! \n");return;}else if(x<p->data)p=p->lchild;elsep=p->rchild;}if(x<q->data)q->lchild=s;elseq->rchild=s;}}void main() /*先生成二叉排序树*/{int i=1,x; //i记录结点个数,x存放结点值int sum;root=NULL; /*千万别忘了赋初值给root!*/printf("请输入数据,-9999表示输入结束\n");do{printf("please input data %d:",i);i++;scanf("%d",&x); /*从键盘采集数据,以-9999表示输入结束*/if(x==-9999){printf("\nNow output data value:\n");}elseinsert_data(x); /*调用插入数据元素的函数*/ }while(x!=-9999);printf(" \n叶节点个数=");sum=CountLeaf (root);printf("%d\n",sum);}。
《C语言程序设计》函数测试实验报告

《C语言程序设计》函数测试实验报告一、引言C语言是一种非常常用的编程语言,被广泛应用于软件开发中。
在C语言中,函数是一种重要的代码构建块,可以通过函数的调用来实现程序的模块化和代码复用。
理解和掌握函数的使用对于编写高效、可维护的程序至关重要。
本次实验旨在通过编写C语言程序,并测试其函数的功能和正确性,提高学生对函数的理解和应用能力。
本实验采用了多种测试方法和测试用例,旨在全面测试函数的一致性、边界条件和异常处理等。
二、实验内容1.设计并实现一个函数,判断一个整数是否是素数,并编写相应的测试代码。
2.设计并实现一个函数,将一个字符串中的空格替换为指定的字符,并编写相应的测试代码。
3.设计并实现一个函数,将一个二维数组中的元素按照指定要求排序,并编写相应的测试代码。
三、实验方法1.设计函数时,根据需求和问题描述,创建相应的函数原型,并编写注释说明函数的功能、参数和返回值等。
2.编写测试代码时,根据函数的功能和预期结果,设计多组测试用例,包括一般情况、边界情况和异常情况等。
3.运行测试代码,通过函数返回值和输出结果进行验证和比对。
四、实验结果1.判断是否素数的函数:函数原型:int isPrime(int n);函数功能:判断给定的整数n是否是素数,是则返回1,否则返回0。
测试案例:1.1输入为2,预期输出为1(2是素数)。
1.2输入为4,预期输出为0(4不是素数)。
1.3输入为11,预期输出为1(11是素数)。
1.4输入为100,预期输出为0(100不是素数)。
2.替换字符串中的空格函数:函数原型:void replaceSpace(char *str, char ch);函数功能:将字符串str中的空格替换为字符ch。
测试案例:2.1 输入字符串为"Hello World",字符ch为'_',预期输出为"Hello_World"。
2.2 输入字符串为"Hello",字符ch为'_',预期输出为"Hello"(无空格)。
C语言实验报告6——函数

学生实验报告学号: 日期: 2014-06-22x = a - b;y = a + b;}void main(){int a = 7,b = 5;x = a + b;y = a - b;num();printf("%d,%d\n",x,y); }运行结果:2、阅读下面程序并执行,理解程序并记录程序运行结果#include "stdio.h"void main(){int a=2,i;for (i=0;i<3;i++)printf("%4d",f(a));}f(int a){int b=0;int c=3;b++;c++;return(a+b+c);}运行结果:3、调试运行教材146页-156页例7.1-例7.3页程序,理解并掌握程序改进所采用的程序设计技术。
7.1题#include "stdio.h"/*函数功能:用迭代法计算n!*/long Fact (int n){int i;long result=1;运行结果:7.2题#include "stdio.h" long Fact(int n); int main(){int m;long ret;printf("Input m:");}}运行结果:7.3题#include "stdio.h"unsigned long Fact(unsigned int n); int main()运行结果;4、编程设计教材186页7.7题(1)、(2),并在VCC++环境下运行.7.7(1)穷举法:源程序#include "stdio.h"int Gcd(int a,int b); /*函数声明*/int main(){if(a%t==0&&b%t==0)return t;}}在VCC++环境下运行:运行结果:(2)欧几里得算法实验总结:通过本节实验课,进一步熟悉了函数的基本用法与功能,初步学会了函数的调用方法,并且掌握了用迭代法编程计算一些简单的实际问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
签名: 日期: 附源程序清单: 1. #include<stdio.h> void main() { void prt(char c,int n); char a; int x; scanf("%c%d",&a,&x); prt(a,x); } void prt(char c,int n) { int i,k; for(i=1;i<=n;i++) { for(k=1;k<=i;k++) printf("%c",c); printf("\n");
2.写四个函数分别用于计算圆周长、圆面积、圆柱表面积,圆柱体积,在 main 函数中 完成测试。 运行结果截图:
3.根据以下公式求π的近似值,直到最后一项的绝对值小于 10-5 为止
π2 1 1 1 1 2 2 2 2 6 1 2 3 n
运行结果截图:
4.用递归方法计算 1 2 3 n 的值,n 的值由键盘输入 运行结果截图:
《C 语言程序设计》实验报告
实验序号:6 学 号 姓 名 林仙丽 实验项目:函数 专业、班级 实验时间 网络工程 2012 年 12 月 29 日
实验地点 一、实验目的及要求
指导教师
1、掌握函数声明、定义和使用的方法; 2、掌握函数嵌套和递归调用的方法; 3、掌握全局变量、局部变量、静态局部变量的概念和使用方法; 4、掌握定义头文件的方法,学会建立和调试多文件程序; 5、实验内容采用函数方法完成。 二、实验设备(环境)及要求 使用 Visual C++ 6.0;windows 系列操作系统的环境。 三、实验内容与步骤 1.编写一个函数 prt(c,n),重复打印给定的字符 c,n 次。在主函数中调用 prt(c,n)函数, 打印一个直角三角形。 如:prt(*,6)的结果如下: * ** *** **** ***** ****** 【实验提示】函数 prt(c,n)完成输出功能,是一个 void 函数,有两个参数。 函数源代码部分:的功能是计算 s=
k!,补足所缺语句。
k 0
n
#include “stdio.h” long fun(int n) { int I; long m; m= 1 ; for(I=1; I<=n; I++) m= I*m return m; } main() { long m; int k,n; scanf(“%d”,&n); m= 0 ; for(k=0;k<=n;k++) m=m+ fun(k) printf(“%ld\n”,m); } 运行结果截图:
m=m*I;
int k,n; scanf("%d",&n); m=0; for(k=0;k<=n;k++) m=m+fun(k); printf("%ld\n",m); } 6. 7.
3. #include<stdio.h> #include<math.h> void main() { float PI,sum=0; int n; for(n=1;;n++) { if(1.0/pow(n,2)>=10e-5) sum+=1.0/pow(n,2); else break; } PI=sqrt(6*sum); printf("%f\n",PI); } 4. #include<stdio.h> #include<math.h> void main() { int n; long fact(int i); scanf("%d",&n); printf("%ld\n",fact(n)); } long fact(int i) { long sum=0; if(i>=1) sum=sum+pow(i,3)+fact(i-1); return sum; } 5. #include<stdio.h> long fun(int n) { int I; long m; m=1; for(I=1; I<=n; I++) return m; } main() { long m;
} } 2. #include<stdio.h> #define PI 3.14 void main() { float perimeter(float a); float area(float a); float surface(float b,float h); float volume(float b,float h); float r,hh; printf("请输入半径 r 和高 h:"); scanf("%f%f",&r,&hh); printf(" 圆 周 长 : %-10.2f\n 圆 面 积 : %-10.2f\n 圆 柱 表 面 积 : %-10.2f\n 圆 柱 体 积:%-10.2f\n",perimeter(r),area(r),surface(r,hh),volume(r,hh)); } float perimeter(float a) { float p; p=2*a*PI; return p; } float area(float a) { float ar; ar=a*a*PI; return ar; } float surface(float b,float h) { float area(float a); float perimeter(float a); float s; s=area(b)*2+h*perimeter(b); return s; } float volume(float b,float h) { float area(float a); float v; v=h*area(b); return v; }
;
;
6. 【附加题】写一个函数,使输入的一个字符串按反序,在主函数中输入字符串和,在 非主函数中输出反序后的字符串。 运行结果截图:
7. 【附加题】编写程序,证明 100-200 之间的所有偶数均可写成两个素数之和,并输出。 运行结果截图:
四、分析与讨论 对上机实践结果进行分析,上机的心得体会。 五、教师评语 成绩