实验五 使用函数编写程序
C语言实验指导3--用函数进行程序设计

《C语言程序设计》实验指导书软工2010级2班m a oS W U实验环境Windows,Visual C++实验目录实验三用函数进行程序设计实验目的1、掌握C语言函数定义及调用的规则,理解参数传递的过程。
2、掌握函数嵌套调用过程及递归调用过程。
3、理解数组元素作参数和数组名作参数的不同。
4、编程验证全局变量、局部变量,动态变量、静态变量。
实验内容1、编程验证基本的函数定义和调用下面的程序,在主函数main中输入2个整数,并传给函数max。
函数max返回最大值。
#include <stdio.h>int max(int x,int y){ /*本函数返回x和y中的最大值*/int z;if(x>y) z=x;else z=y;return z;}main(){int a,b;printf("请输入a和b,用空格分开:\n");scanf("%d %d",&a,&b);printf("最大值是%d\n",max(a,b));}2、编程验证函数嵌套调用的执行过程执行下面的程序,分析嵌套调用的过程。
再分析一下,如果没有函数声明,编译时有何问题。
#include<stdio.h>void f1(void);/*这3行是函数声明*/void f2(void);void f3(void);void f1(){printf("I am f1\n");f2();}void f2(){f3();printf("I am f2\n");}void f3(){printf("I am f3\n");}main(){f1();f2();}3、编程验证函数的递归调用过程#include <stdio.h>int f(int a[],int n){if(n>=1){printf("要计算f(a,%d),先计算f(a,%d)\n",n,n-1);return f(a,n-1)+a[n-1];}else return 0;}main(){int aa[5]={1,2,3,4,5},sum;sum=f(aa,5);printf("数组aa[5]中5个元素的总和是%d\n",sum);}4、编程验证数组元素及数组名作参数有何不同数组元素作参数以及数组名作参数(1)把数组元素作参数。
函数实验报告总结

函数实验报告总结函数实验报告总结引言:函数是计算机编程中的重要概念,它能够将一组输入映射为输出,是程序设计中模块化和可重用性的基石。
为了更好地理解函数的概念和使用方法,我们进行了一系列的函数实验。
本文将对这些实验进行总结和归纳,探讨函数在实际编程中的应用。
实验一:函数的定义和调用在这个实验中,我们学习了函数的基本概念和语法。
通过定义一个简单的函数,我们了解了如何使用关键字“def”来定义函数,并通过调用函数来执行其中的代码块。
这个实验让我们明白了函数的封装性和可复用性,可以将一段代码封装成函数,供其他地方调用。
实验二:函数的参数传递在这个实验中,我们学习了函数的参数传递方式。
通过定义带有参数的函数,我们了解了函数参数的不同类型,包括位置参数、关键字参数和默认参数。
我们还学习了如何在函数调用时传递参数,并探讨了参数传递的机制和注意事项。
这个实验让我们对函数的灵活性和可变性有了更深入的理解。
实验三:函数的返回值在这个实验中,我们学习了函数的返回值。
通过定义带有返回值的函数,我们了解了如何使用关键字“return”来返回函数执行的结果。
我们还学习了函数返回值的类型和用途,包括返回单个值、返回多个值和返回空值。
这个实验让我们明白了函数的结果可以被其他代码使用,提高了代码的灵活性和可扩展性。
实验四:递归函数在这个实验中,我们学习了递归函数的概念和用法。
通过定义递归函数来解决问题,我们了解了递归的原理和应用场景。
我们还学习了递归函数的优缺点,包括代码简洁但可能导致性能问题。
这个实验让我们对递归思想和算法有了更深入的认识,提高了问题解决的能力。
实验五:高阶函数在这个实验中,我们学习了高阶函数的概念和用法。
通过定义接受函数作为参数或返回函数的函数,我们了解了高阶函数的特点和应用场景。
我们还学习了匿名函数和函数式编程的基本概念,以及如何使用内置函数和自定义函数来实现高级功能。
这个实验让我们对函数的扩展性和灵活性有了更深入的理解。
实验05函数程序设计

计算两个复数之积(调试示例error05_1)程序填空,不要改变与输入输出有关的语句。
分别输入两个复数的实部与虚部,编程调用函数实现计算两个复数之积。
若两个复数分别为:c1=x1+(y1)i, c2=x2+(y2)i,则:c1*c2 = (x1*x2-y1*y2) + (x1*y2+x2*y1)i输入输出示例:括号内是说明输入1 2 (x1=1, y1=2)-2 3 (x2=-2, y2=3)输出product of complex is (-5.000000)+(1.000000)i#include<stdio.h>/*---------*/int main(void){float imag1, imag2, real1, real2;scanf("%f%f", &real1, &imag1);scanf("%f%f", &real2, &imag2);complex_prod(real1, imag1, real2, imag2);printf("product of complex is (%f)+(%f)i\n", result_real, result_imag);return 0;}/*---------*/使用函数求1! + 2! + … + m!(改错题error05_2)程序填空,不要改变与输入输出有关的语句。
求1! + 2! + … + 10!,要求定义并调用函数fact(n)计算 n!,函数形参 n 的类型是int,函数类型是double。
输入输出示例:括号内是说明输出:1!+2!+...+10! = 4037913.000000#include <stdio.h>double fact(int n);int main(void){int i;double sum;/*---------*/printf("1!+2!+...+10! = %f\n", sum);return 0;}/*---------*/使用函数判断数的符号程序填空,不要改变与输入输出有关的语句。
C语言实验报告之利用函数进行程序设计

一、实验的目的1、掌握定义函数的方法。
2、掌握函数的实参与形参的对应关系以及“值传递”的方式。
3、掌握函数的嵌套调用及其递过调用的方法。
4、掌握全局变量与局部变量的使用。
二、要求及内容本实验主要完成函数的的应用训练,总共要求完成四个问题的源代码的编辑、编译、连接与运行,最终产生相关的运行结果,按规定要求提交相应的实验报告。
具体要求完成的问题如下:1、编程求100—200之间的素数,该区间的数据从主函数中传出,由一个判别素数的函数进行判别后返回主函数输出。
2、编写一个程序,由主函数传来一个字符串,在函数中分别统计出字母、数字、空格和其它字符的个数,在主函数中打印输出。
3、用递归算法将一个整数n转换成相应的字符串。
4、输入10个学生5门课的成绩,分别用函数实现下列各项功能:(1)计算出每个学生的平均分;(2)计算出每门课程的平均分;(3)找出所有50个分数中最高分数所对应的学生和课程。
三、算法设计思想或程序流程图1、根据素数是不能被2到本身的开平方之间的任何一个整数整除的整数,设计一个判别一个整数是不是素数的函数,即为“sushu”,然后在主函数中调用并求出100—200中的所有素数。
2、编写一个判断字母、数字、空格以及其他字符的函数,即“jisuan”,从主函数中输入一个字符串,调用函数对其计算相关字符的个数。
3、从主函数中输入一个n。
设计函数“zfc”,如果n整除10为0,则输出其对应的ASCLL码,如果不为0,则继续返回函数“zfc”,即递归调用,直到为0为止。
主函数中,判断n是否大于0,若不大于0,则输出时求出n的相反数并在其之前加一个“-”号。
4、设计一个“score”函数,结合for循环语句和数组计算每个学生和每门课程的平均分并且找出所有50个分数中最高分数所对应的学生和课程,然后再main函数中调用。
四、所使用的软硬件平台软件平台:Microsoft Windows XP专业版SP3,Microsoft Visual C++ 6.0。
C语言实验五最简单的C语言程序设计

C语⾔实验五最简单的C语⾔程序设计实验5:最简单的C语⾔程序设计⼀、实验⽬的:(1)掌握C语⾔中使⽤最多的⼀种语句——赋值语句的使⽤⽅法。
(2)掌握各种类型数据的输⼊输出的⽅法,能正确使⽤各种格式转换符。
(3)进⼀步掌握编写程序和调试程序的⽅法。
⼆、实验内容和步骤:1、通过下⾯的程序掌握各种格式转换符的正确使⽤⽅法。
(1)输⼊以下程序:/* Note:Your choice is C IDE */# includeint main( ){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61,b=62;c1='a';c2='b';d=3.56;e=-6.87;f=3157.890121;g=0.123456789;m=50000;n=-60000;p=32768;q=40000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);printf("f=%15.6f,g=%15.12f\nm=%1d\np=%u,q=%u\n",f,g,m,n,p,q);显⽰结果:(2)运⾏此程序并分析结果。
(3)在此基础上,将程序第10~14⾏改为c1=a,c2=b;f=3157.890121;g=0.123456789;d=f;e=g;运⾏程序,分析结果。
/* Note:Your choice is C IDE */#include"stdio.h"int main(){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61;b=62;c1=a;c2=b;f=3157.890121;g=0.123456789;d=f;e=g;p=a=m=50000;q=b=n=-60000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);printf("f=%15.6f,g=%15.12f\nm=%1d,n=%1d\np=%u,q=%u\n",f,g,m,n,p,q);}显⽰结果:(4)⽤sizeof运算符分别检测程序中各类型的数据占多少字节。
C语言程序设计实验五:函数(5篇范例)

C语言程序设计实验五:函数(5篇范例)第一篇:C语言程序设计实验五:函数C语言程序设计实验五:函数1、定义函数返回两个数中较大的数,在主函数中通过调用该函数求三个数中较大的数并输出,编写主函数调用该函数。
说明:(1)请大家按学号来坐,便于考勤和管理。
(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。
(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。
(4)文档名称:班级+学号后2位+姓名+实验编号,例如12通1班12张山实验五.doc。
第二篇:C语言程序设计实验七:函数、数组、指针C语言程序设计实验七:函数、数组、指针1、程序运行后,用户任意输入一个字符串,求出字符串长度,然后输出字符串内容及个数。
不能使用strlen函数。
求字符串长度函数的函数原型必须如下:int MyStrLenPt(char *str)若输入:nihao123!则输出:nihao123!:9 chars2、编写一个对一维数组进行排序的程序。
要求:写两个函数,一个主函数,一个sort函数。
在主函数中完成数组的输入和输出,通过调用sort函数对数组进行排序。
sort函数的原型为:voidsort(int*p, intn);说明:(1)请大家按学号来坐,便于考勤和管理。
(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。
(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。
(4)文档名称:班级+学号后2位+姓名+实验编号,例如11电1班12张山实验七.doc。
第三篇:C语言程序设计—函数—实验报告实验报告专业软件工程班级X班学号_ XXXXXXXXXXX_姓名实验日期:201X年X月X日报告退发(订正、重做)课程C程序设计实验实验名称函数一、实验目的① 熟练掌握C程序中函数的定义;② 掌握函数的调用,函数参数的传递;③ 熟练掌握函数的嵌套调用和递归调用;二、实验环境(描述实验的软件、硬件环境)① 软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器;② 硬件环境:PC机一台三、实验内容、步骤和结果分析题目一:编写一个用来判断质数(素数)的函数。
实验五、函数程序设计

实验五函数程序设计一、实验目的1.掌握函数的定义、函数的说明和调用。
2.掌握函数的参数及其传递方式,函数值的正确返回。
二、实验设备及分组1.Windows XP操作系统;2.Visual C++6.0语言环境;3.每人一台PC机。
三、实验内容1.[目的]掌握标准库函数的说明和调用方法。
[题目内容]编写一个程序,首先显示一个菜单,然后根据用户的选择,输入数据后,执行相应的操作。
[输入]用户选择和函数自变量值[输出]如下菜单:=======MENU======1.。
sin2.。
cos3.。
pow4.。
sqrt0.。
exit==================[提示]使用标准库函数、多分支选择结构。
2.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容]编写一个用户自定义函数,该函数有一个整型参数,函数的功能是:当这个整型数的值是偶数时,函数的返回值为0,当这个整型数的值是奇数时,返回值为1 。
编写一个程序,从键盘输入任意10个整数,分别调用用户自定义函数来判断这10个整数的奇偶性。
[输入]任意10个整数[输出]这10个整数的奇偶性[提示]在主函数中使用循环结构输入10个整数。
根据子函数的返回值输出相应的判断结果信息。
3.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容]编写一个用户自定义函数,该函数有三个整数参数,函数的功能是:求解这三个整数的最大值,函数的返回值为三个参数的最大值。
编写一个程序,从键盘输入任意5个整数,分别两次调用用户自定义函数来求出这5个整数中的最大值。
[输入]任意5个整数[输出]这5个整数的最大值[提示]先用前三个整数调用函数,求出的最大值作为参数之一,再与另两个整数一起求出最大值即为所求。
4.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。
[题目内容] n m A 表示从m 各元素中抽出n 个元素的排列的个数。
它的计算公式为:)!(!n m m A n m -=。
C语言实验报告(函数应用)

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。
如果有两个数,每一个数的所有约数(除它本身以外)之和正好等于对方,则称这两个数为互满数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五使用函数编写程序
【实验目的】
1.熟练掌握函数的定义和调用。
2.理解函数的实参、形参和返回值的概念。
3.熟练掌握VC程序调试方法,包括断点的设置和取消,以及单步执行跟踪进入函数和跳出函数的方法。
【实验内容】
5-1调试示例,从键盘输入一个正整数n,计算n! 的值,要求定义和调用函数fact(n),计算n!。
源程序(有错误的程序)
#include <stdio.h>
void main( )
{
int n;
long int f;
printf("Input n: ");
scanf ("%d", &n);
f=fact(n);
printf("%d!=%ld\n",n,f);
}
long fact(int m)
{
int i;
long int product;
for ( i = 1; i <= m; i++ )
product = product * i;
return product;
}
运行结果(改正后程序的运行结果)
Input n: 10
10! = 3628800
实验四中我们使用了程序运行到光标位置调试程序,本次实验需要掌握设置断点,以及单步调试进入函数和跳出函数的方法。
(1)打开源程序error5_1.cpp,编译程序,出现的错误信息:
'fact' : undeclared identifier
'fact' : redefinition; different type modifiers
双击该错误信息,箭头指向“f=fact(n);”这一行,错误信息指出函数“fact”没有定义,这是因为数据在调用前,必须先定义或声明。
在主调函数的变量定义前面加上函数声明“long fact(int m);”后,重新编译,连接,都正确。
(2)调试开始,设置2个断点(断点的作用:程序执行到断点处暂停,使用户可以观察当前的变量或其它表达式的值,然后继续运行),先把光标定位到要设置断点的位置,然后单击编译工具条上的(Inert / Remove Breakpoint (F9)),断点就设置好了(如图5.1所示)。
如果
要取消断点,只要把光标放到要取消的断点处,单击,这个断点就取消了。
图5.1 设置断点
(3)单击编译工具条(go (F5)),运行程序,用户输入n的值10后,程序运行到第一个断点位置暂停(如图5.2所示)。
图5.2 程序运行到断点位置
(4)单击(Step Into (F11))进入函数fact()调试,箭头表示程序已经执行到函数fact()
内(如图5.3所示)。
(5)使用,在函数fact()中设置程序的第3个断点(如图5.3所示)。
观察到product的值是-2903040,不正确,因为变量product未赋初值,加上语句product=1后,
按以上的步骤,重新编译、连接,运行到第3个断点处,变量窗口中product的值正确。
(7)现在需要从被调函数返回到主调函数,单击调试工具条中的(Step Out (Shift F11)),
程序返回主调函数继续执行(如图5.5所示)。
10!=3628800,与题目要求的结果一致。
(9)单击终止调试图标(Stop Debugging(Shaft+F5)),程序调试结束。
图5.3 进入函数fact()调试,并在运行时设置断点
图5.4 程序从函数fact()开始直接运行到第3个断点的位置(return前面)
图5.5 程序回到了主调函数
图5.6 程序执行到最后
5-2编程,输入两个正整数m和n,计算(m+n)! / (m! + n!)。
要求定义和调用函数fact(n)计算n!,函数类型是double。
5-3 编程,输入任意实数x和正整数n,计算x 的n 次幂。
要求定义和调用函数power(x,n)计算x 的n 次幂,其中x和n 的类型分别是double和int,函数类型是double。
输入输出示例:
输入x和n:2 10
2的10次方是1024
如何求x1+x2+x3+…+x n
5-4编程,输入x,计算并输出下列分段函数f(x) 的值。
要求定义和调用函数sign(x) 实现该分段函数。
1x>0
f(x) =0x=0
-1x<0
5-5编程,输入2个整数begin和end,分别代表摄氏温度的起止值,输出该范围内摄氏温度C和华氏温度F的转换表,摄氏温度每次增加5℃。
要求定义和调用函数ctof(celsius ),将摄氏温度C转换为华氏温度F,计算公式:F = 32 + C * 9 / 5。
5-6 编程,给定平面任意二点坐标(x1, y1)和(x2, y2),求这两点之间的距离(保留2位小数)。
要求定义和调用函数dist(x1, x2, y1, y2)计算两点间的距离。
输入输出示例:
input (x1,y1),(x2,y2):
10 10
200 100
Distance = 210.24
提示:模仿5-1,调试程序,包括设置断点、运行到断点、取消断点、单步进入函数和从函数返回到主调函数。
5-7 编程,输入三个正整数m、n和x,计算x m /m! + x n /n! 的值(保留2位小数)。
要求分别定义和调用函数fact(n) 计算n的阶乘,函数power(x,n)计算x 的n 次幂。
输入输出示例:
输入x , m , n:2 7 8
计算的结果为:0.03
5-8 编程,求f(g) = 2.1g2 + 5.78g - 32.5值,其中g(x)=5x+10.3(保留3位小数)。
要求定义和调用函数计算g(x)。
输入输出示例:
Input x:10.5
f(62.800) = 8612.548
思考:如何定义和调用2个函数分别计算g(x)和f(g)。
5-9改错,求1! + 2! + …+ 10!,要求定义函数和调用函数fact(n)计算n!,函数类型是double。
(源程序error5_2.cpp)
输入输出示例:
1! + 2! + … + 10! = 409113.000000
源程序(有错误的程序)
#include <stdio.h>
double fact(int n)
void main( )
{
int i;
double sum;
for (i = 1 ; i < 10; i++)
sum = sum + fact(i);
printf("1!+2!+…+10!= %f\n", sum);
}
double fact(int n);
{
int i;
double result;
for (i = 1 ; i <=n; i++)
fact(n)=fact(n)*i;
return result;
}
提示:模仿5-1,调试程序,包括设置断点、运行到断点、取消断点、单步进入函数和从函数返回到主调函数。
【实验报告要求】
将编程题(5-2~5-8)的程序流程图、源程序、运行结果和改错题(5-9)改正后的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,写在实验报告上。