实验05 函数程序设计
- 格式:docx
- 大小:26.99 KB
- 文档页数:8
c语言函数实验报告C语言函数实验报告引言:C语言作为一种高级编程语言,具有灵活、高效的特点,被广泛应用于软件开发和系统编程领域。
函数是C语言中的基本构建模块,通过函数的定义和调用,可以实现程序的模块化和重用。
本篇实验报告将重点介绍C语言函数的实验过程和结果。
实验目的:1. 掌握C语言函数的定义和调用方法;2. 熟悉函数参数传递的方式;3. 理解函数返回值的作用和使用;4. 学习函数的递归调用。
实验过程:1. 函数的定义和调用在实验中,我们首先学习了函数的定义和调用方法。
通过定义函数,我们可以将一段具有特定功能的代码封装成一个函数,从而实现代码的模块化和重用。
在调用函数时,我们可以直接使用函数名来执行函数中的代码,并且可以传递参数给函数。
2. 函数参数传递C语言中函数参数传递的方式有两种:按值传递和按引用传递。
按值传递是指将实参的值复制给形参,函数内部对形参的修改不会影响实参的值。
而按引用传递是指将实参的地址传递给形参,函数内部对形参的修改会直接影响实参的值。
3. 函数返回值在C语言中,函数可以有返回值,也可以没有返回值。
有返回值的函数可以通过return语句将结果返回给调用者,调用者可以根据返回值进行后续的处理。
没有返回值的函数通常用于执行某些操作而不产生结果的情况。
4. 函数的递归调用函数的递归调用是指函数自身调用自身的过程。
递归调用在某些场景下非常方便,可以简化代码逻辑,提高代码的可读性。
然而,递归调用也需要注意控制递归的结束条件,以免造成无限循环。
实验结果:通过实验,我们成功定义和调用了多个函数,并且学习了函数参数传递和返回值的使用方法。
我们还编写了一些递归函数,验证了递归调用的正确性。
结论:函数是C语言中非常重要的概念,通过函数的定义和调用,我们可以实现代码的模块化和重用,提高代码的可读性和可维护性。
函数参数传递和返回值的使用方法也是我们需要掌握的基本技能。
递归调用作为一种特殊的函数调用方式,在某些场景下非常有用,但也需要注意控制递归的结束条件。
计算两个复数之积(调试示例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语言程序设计实验五:函数(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.实验地点填:北区机房3. “四、程序代码”部分,如是填空只写填空内容。
4. “五、结果分析”部分,填写运行的输入输出和出现的问题及结果分析实验一(2.3.1~2.3.5)一、名称:顺序结构程序设计二、目的与要求:习题实验教材p83(1)(2)(4)(5)三、算法说明:2.3.1~2.3.5 中的问题描述实验二(4.3.1~4.3.5,4.3.4 不要求)一、名称:分支结构程序设计二、目的与要求:习题实验教材p99(1)~(4)三、算法说明:4.3.1~4.3.5 中的问题描述实验三(5.3.1、5.3.2)一、名称:循环结构程序设计(一)二、目的与要求:1. 掌握for语句、while语句实现循环的方法2. 循环嵌套的使用三、算法说明:5.3.1~5.3.2 中实验练习1-2中的问题描述实验四(5.3.3、5.3.5)一、名称:循环结构程序设计(二)二、目的与要求:习题实验教材p111(1)~(4)三、算法说明:5.3.3实验练习、5.3.5中实验练习1-3的问题描述实验五(6.4.1做实验1-4)一、名称:函数程序设计二、目的与要求:习题实验教材p128(1)~(3)三、算法说明:6.4.1实验练习1-4 中的问题描述实验六(6.4.2~2.4.3)一、名称:函数程序设计二、目的与要求:习题实验教材p128(4)(5)(7)三、算法说明:6.4.2 中实验练习1、6.4.3中实验练习1-2的问题描述实验七(7.3.1~7.3.2)一、名称:数组程序设计二、目的与要求:习题实验教材p146(1)~(3)三、算法说明:7.3.1实验练习1-27.3.2实验练习1中的问题描述实验八(7.3.2~7.3.3)一、名称:数组程序设计二、目的与要求:习题实验教材p146(3)~(5)三、算法说明:7.3.2实验练习1、7.3.3中的问题描述实验九(8.3.1~8.3.2)一、名称:指针程序设计二、目的与要求:习题实验教材p166(1)~(2)三、算法说明:8.3.1~8.3.2 中的问题描述实验十(9.3.1、10.3.2、10.3.3 不要求)一、名称:构造数据类型和文件程序设计二、目的与要求:习题实验教材p176(1)(2)p198(1)(2)三、算法说明:9.3.1 、10.3.2、10.3.3中的问题描述。
实验五函数程序设计一、实验目的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 -=。
函数实验报告函数实验报告引言:函数是数学中一个重要的概念,它描述了一种特定的关系,将一个或多个输入值映射到一个输出值。
在数学和计算机科学中,函数被广泛应用于各种问题的建模和解决。
本实验旨在通过实际案例和数据分析,探索函数的特性和应用。
一、函数的定义和特性1.1 函数的定义函数是一种映射关系,它将一个或多个输入值映射到一个唯一的输出值。
函数通常用符号表示,如f(x)、g(x)等。
1.2 函数的特性函数具有以下特性:- 唯一性:对于每一个输入值,函数只能有一个输出值。
- 定义域:函数的输入值的集合称为定义域,它决定了函数的有效输入范围。
- 值域:函数的输出值的集合称为值域,它决定了函数的有效输出范围。
- 可逆性:如果一个函数的每一个输出值都可以通过逆映射找到唯一的输入值,则该函数是可逆的。
二、函数的应用案例2.1 函数在物理学中的应用函数在物理学中有广泛的应用,例如描述运动的函数、描述力的函数等。
通过建立合适的函数模型,可以对物理系统进行分析和预测。
2.2 函数在经济学中的应用函数在经济学中也有重要的应用,例如成本函数、收益函数等。
通过对经济系统中的各种变量建立函数关系,可以进行经济政策的制定和分析。
2.3 函数在计算机科学中的应用函数在计算机科学中是一种基本的概念,它被广泛应用于算法设计、软件开发等领域。
例如,计算机程序可以看作是由一系列函数构成的。
三、函数实验设计与数据分析3.1 实验设计本次实验设计了一个函数实验,通过收集和分析数据来验证函数的特性和应用。
实验对象是一组学生的身高和体重数据。
3.2 数据收集在实验中,我们随机选择了100名学生,并测量了他们的身高和体重。
通过这些数据,我们可以建立身高和体重之间的函数关系。
3.3 数据分析通过对身高和体重数据的分析,我们可以得出以下结论:- 身高和体重之间存在正相关关系,即身高增加时,体重也会增加。
- 身高和体重之间的函数关系可以用线性函数来描述,即体重 = a * 身高 + b。
函数c语言实验报告函数C语言实验报告一、引言函数是C语言中的重要概念之一,它能够将一系列的代码逻辑封装成一个独立的模块,提供给其他代码进行调用,从而实现代码的复用性和可维护性。
本实验旨在通过实际的编程实践,掌握函数的定义、调用和参数传递等基本概念,进一步理解函数的作用和使用方法。
二、实验目的1. 理解函数的定义和调用的基本原理;2. 掌握函数的参数传递方式;3. 熟悉函数的返回值类型和使用方法。
三、实验过程1. 函数的定义和调用在C语言中,函数的定义包括函数的返回值类型、函数名、参数列表和函数体。
函数的调用通过函数名和实参进行,实参的值会传递给形参进行函数运算。
为了更好地理解函数的定义和调用,我们可以通过一个简单的例子进行说明。
```c#include <stdio.h>// 定义一个函数,用于计算两个整数的和int sum(int a, int b) {return a + b;}int main() {int num1 = 10, num2 = 20;int result = sum(num1, num2); // 调用sum函数,将num1和num2作为实参传递给函数printf("The sum of %d and %d is %d\n", num1, num2, result);return 0;}```在上述代码中,我们定义了一个名为sum的函数,它接受两个整数类型的参数a和b,并返回它们的和。
在main函数中,我们声明了两个整数变量num1和num2,并将它们的值分别赋为10和20。
然后,我们调用sum函数,并将num1和num2作为实参传递给函数。
函数执行完毕后,返回的结果会被赋值给result变量,并通过printf函数输出。
2. 函数的参数传递函数的参数传递方式有两种:值传递和指针传递。
值传递是指将实参的值复制给形参,函数内部对形参的修改不会影响实参。
函数的程序设计实验实验报告1、回答问题:根据程序1,试分析:1.1全局变量、局部变量、静态变量的特点是什么动态局部变量:静态局部变量在静态存储区内分配存储单元。
在程序整个运行期间都不释放。
而自动变量(即动态局部变量)属于动态存储类别,存储在动态存储区空间(而不是静态存储区空间),函数调用结束后即释放。
静态局部变量:静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。
静态局部变量始终存在着,也就是说它的生存期为整个源程序。
静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。
退出该函数后,尽管该变量还继续存在,但不能使用它。
动态全局变量:全局作用域,整个程序都可以使用。
静态全局变量:静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰过的变量具有文件作用域。
这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。
根据程序2,试分析:2.1 根据盘子数的增长,hanoi函数被调用的次数是如何变化的?2n-12.2 设盘子的移动次数为H(n)。
汉诺塔问题的递归表达式:H⑴ = 1H(n) = 2*H(n-1)+1 (n>1)那么就能得到H(n)的一般式:H(n) = 2^n - 1 (n>0)根据一般式,可以不使用递归,就能得到盘子的移动次数。
请根据这一现象,分析递归方法的优缺点。
递归好处:代码更简洁清晰,可读性更好递归可读性好这一点,对于初学者可能会反对。
实际上递归的代码更清晰,但是从学习的角度要理解递归真正发生的什么,是如何调用的,调用层次和路线,调用堆栈中保存了什么,可能是不容易。
但是不可否认递归的代码更简洁。
一般来说,一个人可能很容易的写出前中后序的二叉树遍历的递归算法,要写出相应的非递归算法就比较考验水平了,恐怕至少一半的人搞不定。
五《C语言程序设计》实验四选择结构程序设计一、实验目的1、掌握分支语句的格式和功能。
2、掌握选择结构的程序设计。
3、掌握分支结构的嵌套。
二、实验内容与要求1、编程,计算下列分段函数值:x2+3x-4,x<0且x≠-4f(x)= x2-6x+5,0=x<10且x≠1及x≠5x2-4x-1,其他要求如下:(1)用if语句实现分支。
自变量x与函数值均采用双精度类型。
(2)自变量x值从键盘输入,且输入前要有提示信息。
(3)数据的输出格式采用以下形式:x=输入值,f(x)=计算值(4)分别以-3.0,-1.0,0.5,1.5,2.5,3.5,4.5,5.5为自变量,运行该程序。
记录结果。
(5)源程序以sy4_1.c存盘。
2、编程,将一个百分制成绩转换成等级制成绩。
具体要求如下:(1)百分制与等级制的对应关系如下:(2)用switch语句实现该功能。
(3)用键盘输入百分制成绩,输入前要有提示信息。
(4)要能判断输入数据的合理性,对于不合理的数据应输出错误信息。
(5)输出结果中应包含百分制成绩和成绩等级。
(6)分别输入成绩-10,99,60,85,70,101,45,运行该程序。
记录结果。
(7)源程序以sy4_2.c存盘。
三、思考题1、实现选择结构程序设计的方法有哪几种?各有什么特点?适用条件是什么?2、如何设置选择结构中的判断条件?它在程序设计中的意义何在?实验五循环结构程序设计(1)一、实验目的1、掌握循环的概念。
2、掌握三种常用的循环语句的格式和功能。
3、初步掌握循环结构的编程方法。
二、实验内容与要求1、编程,分别利用三种循环语句,求1+2+3+…50之和。
要求如下:(1)输出计算结果;数据的输出格式采用以下形式:1+2+3+…50=计算值(2)源程序分别以sy5_1.c、sy5_2.c、sy5_3.c存盘。
2、编程,穷举算法解百马百担问题(有100匹马驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?)要求如下:(1)输出计算结果;在数据输出之前应有提示信息。
第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语言程序实验报告安徽工程大学高级语言程序设计实验报告班级姓名同组者/ 成绩日期2019\11\21 指导教师实验名称函数程序设计一、实验目的1.掌握定义函数的方法。
2.掌握函数实参与形参的对应关系,体会“值传递”的方式。
3.掌握函数的嵌套调用和递归调用的方法。
4.掌握全局变量和局部变量、动态变量和静态变量的概念与使用方法。
5.理解数组作为函数参数的传递方式。
6.理解宏的概念,掌握宏的定义。
7.了解文件包含的概念,掌握其用法。
二、实验内容1.完成程序,求解n!具体要求:输入并完善源程序;对源程序进行编译、连接和运行;写出程序运行结果。
2.计算s=1的k次方+2的k次方+3的k次方+……+N的k次方。
具体要求:输入并完善源程序;对源程序进行编译、连接和运行;写出程序运行结果。
3.写出下面3个程序的输出结果,说明每个程序中的各个x有何不同。
4.阅读程序,理解程序的功能,写出预期结果并上机验证。
5.编程并上机调试运行。
(1)编写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。
(2)输入一个整数,将它逆序输出。
要求定义并调用函数rverse(number),它的功能是返回number的逆序数。
如reverse(12345)的返回值是54321。
(3)用递归法求n阶勒让德多项式的值,递归公式为P(x)=1,n=0;P(x)=x,n=1;P(x)= [(2n-1)*x-Pn-1(x)-(n-1)Pn-2(x)]/n, n>1(4)编写一函数,由实参传递一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串并输出上述结果。
(5)带参数的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。
输出交换后的两个值。
(6)编写函数,实现两个字符串的连接,在主函数中输入两个字符串并输出连接后的结果(不要使用库函数中的strcat函数)。
(7)请编写函数fun,它的功能是:求出1~1000之内能被7或11整除,但不能同时被7和11整除的所有整数,并将它们放在a所指的数组中,通过n返回这些数的个数,在主函数中输出这些整数,并给出统计的总数。
贵州大学《C程序设计实验》实验报告实验名称:函数专业电子信息科学与技术班级姓名学号教师2010年}else{printf("%d isn't a prime number\n",n);}}bool prime_number(int x){bool flag=true;for(int i=2;i<x/2&&(flag==true);i++){if(x%i==0)flag=0;}return flag;}运行情况:分析:程序开始:bool prime_number(int x);声明一个函数,函数返回值为bool型,函数名为prime_number,函数带一个int型参数。
scanf("%d",&n);从屏幕输入数n。
if(prime_number(n)) 调用函数,传入参数n。
bool prime_number(int x){bool flag=true;for(int i=2;i<x/2&&(flag==true);i++){if(x%i==0)flag= false;}return flag;}把两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。
(3). 用递归法将一个整数n转换成字符串。
例如,输入483,应输出字符串“483”。
n的位#include <stdio.h>void main(){int n;void covert( int n);printf("input n\n");scanf("%ld",&n);if(n<0){putchar('-');n=-n;}covert(n);}void covert(int n){inti;if((i=n/10)!=0)covert(i);printf("%c",n%10+'0');}数不确定,可以是任意的整数。
《程序设计语言》实验指导书徐东燕编北方民族大学计算机科学与工程学院2012年9月目录实验一 C语言编程环境熟悉及简单程序的编写(验证型实验,2学时) (3)实验二分支结构程序设计(设计型实验,2学时) (6)实验三循环结构程序设计(设计型实验,2学时) (8)实验四函数程序设计(设计型实验,2学时) (10)实验五数组程序设计((设计型实验,2学时) (12)实验六指针程序设计(设计型实验,2学时) (14)实验七结构体程序设计(设计型实验,2学时) (15)实验八程序结构与递归函数(综合性实验,2学时) (16)实验九指针进阶及综合程序设计(综合型实验,2学时) (17)实验十文件的程序设计(设计型实验,2学时) (18)参考文献 (20)课程编号:11101203 课程类别:专业基础课适用专业:计算机科学与技术、软件工程、网络工程、信管专业课程总学时:76 实验课学时:20开设实验项目数:10实验一C语言编程环境熟悉及简单程序的编写(验证型实验,2学时)一、实验目的与要求实验环境1.熟悉Cfree开发环境或Visual C++ 6.0的使用环境;2.掌握Cfree开发环境或Visual C++ 6.0环境下建立C程序的步骤;3.掌握C程序在Cfree开发环境或Visual C++ 6.0环境下的编辑、调试和运行的步骤、方法;4.理解C程序的一般结构;5.理解并掌握程序的顺序结构程序设计;6.在Cfree开发环境或Visual C++ 6.0环境下编写并运行基本的C程序;7.理解程序调试思想,能修改简单的C语法错误;8.掌握算术、赋值表达式,输入输入语句和简单数据处理方法。
二、实验环境1.微机每人一台,要求PⅢ以上处理器。
2.windows2000/xp操作系统。
3.Cfree开发环境或或Visual C++ 6.0开发环境。
三、实验预习与准备1.计算机基本操作练习。
2.Cfree开发环境或Visual C++ 6.0软件使用预习。
C语言程序设计实验报告(实验名称:函数)1实验目的(1)掌握函数的定义方法、调用方法、参数说明以及返回值;(2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式;(3)掌握函数的嵌套调用及递归调用的用的设计方法;(4)在编程过程中加深理解函数调用的程序设计思想。
2实验内容(1)编写一个函数primeNum(int x),功能是判别一个数是否为素数。
要求:①在主函数中输入一个整数x(直接赋值或从键盘输入);②函数类型为空值(void),调用primeNum( )函数后,在函数中输出x是否为素数的信息,输出格式为“x is a prime number”或”x is not aprime number”;③分别输入一下数据:0,1,2,5,9,13,59,121,并运行程序,检查结果是否正确。
(2)编写函数 mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。
如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。
要求:①在主函数中从键盘输入一对整型数据a和b;②调用函数后,根据返回值对a和b的关系进行说明。
例如,在主函数中输入:10,5,则输出“10 is a multiple of 5”;③分别输入下面几组数据进行函数的正确性测试:1与5,5与5,6与2,6与4,20与4,37与9。
3算法描述流程图(1)primeNum(int x)(判别一个数是否是素数)函数流程图①主函数流程图:②判断素数函数流程图:(2)mulNum(int a,int b)(确定a和b是否是整数倍的关系)函数流程图①主函数流程图:②判断倍数流程图:4源程序(1)判断某个数是否是素数#include <stdio.h>int primNum(int x) /*编写函数判断某个数是否是素数*/ {int i;if (x==0||x==1) /*当x等于1或等于0时判断是否为素数*/ return 0;for (i=2;i<x;i++) /* 当x大于2时判断不为素数的数*/{if (x%i==0)return 0;}if (x%i) /* 当x等于2或不满足上述条件时时判断出该数是素数*/ return 1;}void main(){int n ;printf("Please input an integer:"); /* 提示从键盘输入一个数x */scanf("%d",&n);if (primNum(n)==1) /* 调用定义的函数*/ printf("%d is a prime number\n",n); /* 由函数得出结论判断是否为素数*/ elseprintf("%d is not a prime number\n",n);}(2)个数是否是整数倍关系#include <stdio.h>int mulNum(int a,int b)/* 定义函数确定两个数是否有整数倍关系*/{if (a%b==0) /* 判断出a是b的整数*/return 1;else /* 判断出a不是b的整数*/return 0;}void main (){int m,n;printf ("please input tow integers:\n"); /*提示从键盘输入两个数*/scanf ("%d%d",&m,&n); /*从键盘输入两个数的值*/if(mulNum(m,n)==1) /*调用定义的函数并判断输出相应的结果*/printf("%d is a multiple of %d\n",m,n);elseprintf("%d is not a multiple of %d\n",m,n);}5测试数据(1)实验(1)测试数据为0,1,2,5,9,13,59,121运行结果当测试数据0时当测试数据1时当测试数据2时当测试数据5时当测试数据9时当测试数据59时当测试数据121时(2)实验2测试的数据1与5,5与5,6与2,6与4,20与4,37与9。
c语言程序设计中函数实验教学设计与应用一、函数在c语言程序设计课程中的地位函数部分的学习被安排在三大程序控制结构之后,有利于学生对函数知识点的系统学习,也能够使学生深刻理解结构化程序设计的全局思想,在大学期间开设《c语言程序设计》课程的主要目的是培养学生充分利用信息时代的优势,通过编程解决实际问题的能力。
实际上c程序的基本组成单位是函数,课程所有知识点的学习最终都将落实到编写各种函数来进行验证和实现。
因此,学生只有灵活掌握函数的运用,才能为后续学习奠定坚实基础。
二、传统函数教学存有的问题传统函数教学流程如下:其一,函数定义及其形式;其二,函数形参,return语句,函数返回值;其三,函数声明,格式,边线;其四,函数调用,函数实参等。
这种传统的教学流程过于强调函数语法知识,概念和规则的讲解,这样导致学生似懂非懂,与教学理念相违背,为了适应教学要求,突出以学生为主,教员为辅的教学理念,主要探讨函数的教学设计及实践[1]。
三、代莱函数教学设计及方法函数教学主要以发现问题、分析问题、解决问题为思路开展教学,以启发、引导、对比和总结为辅帮助学生分析问题解决提出的问题。
不仅可以让学生带着兴趣学习,也会加深学生对知识点的深刻理解及灵活应用。
本堂课的教学流程是:交代任务;提出问题、发现问题、解决问题;巩固练习[2]。
第一,明确提出问题、分析问题、解决问题。
学生只段小宇在main函数中撰写直观程序,于是向学生扔出问题:繁杂程序应当如何展开非政府和设计?在此,给学生一些时间利用main函数去化解取值任务,化解完和同学生一起检验结果,然后鼓励学生分析这种化解方式在实际中存有的问题,并鼓舞学生思索化解此问题的最佳方法,从而带出自学的内容——函数法。
接着再次鼓励学生用函数法再次化解取值的任务,最后将化解该任务的两种方法展开对照,使学生探讨、体会并总结出来繁杂程序的设计方法。
第二,巩固练习。
在这个环节,笔者设计了带有陷阱的小例子:通过编写swap函数来实现主函数中两个整数的交换,给学生一些时间讨论、验证结果,引导学生分析其中的`问题,同时引出函数调用流程这一知识点,并通过动画演示的方式帮助学生分析函数调用流程。
计算两个复数之积(调试示例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;
}
/*---------*/
使用函数判断数的符号
使用函数求奇数和程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一批正整数(以零或负数为结束标志),求其中的奇数和。
要求定义和调用函数even(n) 判断数的奇偶性,当n为偶数时返回1,否则返回0,函数形参n的类型是int,函数类型是int。
输入输出示例:括号内是说明
输入
2 (repeat=2)
12 9 7 18 3 11 20 0
11 8 6 17 2 10 19 -1
输出
The sum of the odd numbers is 30.
The sum of the odd numbers is 47.
#include <stdio.h>
int even(int n);
int main(void)
{
int n, sum;
int ri, repeat;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d",&n);
/*---------*/
printf("The sum of the odd numbers is %d.\n", sum);
}
return 0;
}
/*---------*/
使用函数计算两点间的距离程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
给定平面任意两点坐标 (x1, y1) 和 (x2, y2),求这两点之间的距离(保留2位小数)。
要求定义和调用函数 dist(x1, y1, x2, y2)计算两点间的距离,函数形参x1、y1、x2和y2的类型都是double,函数类型是double。
输入输出示例:括号内是说明
输入
1 (repeat=1)
10 10 (x1=10, y1=10)
200 100 (x2=200, y2=100)
输出
Distance = 210.24
#include <stdio.h>
#include <math.h>
double dist(double x1, double y1, double x2, double y2);
int main(void)
{
int repeat, ri;
double distance, x1, y1, x2, y2;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);
/*---------*/
printf("Distance = %.2f\n", distance);
}
return 0;
}
/*---------*/
使用函数统计素数并求和
使用函数统计一个整数中数字的个数
使用函数找水仙花数程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入2 个正整数 m 和 n(1<=m,n<=1000),输出 m 到 n 之间的所有水仙花数。
水仙花数是指各位数字的立方和等于其自身的数。
要求定义并调用函数is(number)判断 number 的各位数字之立方和是否等于其自身,若相等则返回1,否则返回0,函数形参 number 的类型是int,函数类型是int。
输出使用语句:printf("%d\n", i);
输入输出示例:括号内是说明
输入:
2 (repeat=2)
100 400 (m=100, n=400)
1 100 (m=1, n=100)
输出:
153 (1*1*1+5*5*5+3*3*3=153)
370 (3*3*3+7*7*7=370)
371 (3*3*3+7*7*7+1*1*1=371)
1 (1*1*1=1)
#include <stdio.h>
int main(void)
{
int i, m, n;
int repeat, ri;
int is(int number);
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d%d", &m, &n);
/*---------*/
}
return 0;
}
/*---------*/
使用函数求余弦函数的近似值(选作)
程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入精度 e 和 x,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e。
cos(x) = x^0/0!-x^2/2!+x^4/4!-x^6/6!+……
要求定义并调用函数 funcos(e,x)计算 cos(x) 的值,函数形参e和x的类型均为double,函数类型是double。
输入输出示例:括号内是说明
输入:
2 (repeat=2)
0.001 0 (e=0.001, x=0)
0.0001 -3.14 (e=0.0001, x=-3.14)
输出:
sum = 1.000000
sum = -0.999999
#include <stdio.h>
#include <math.h>
double funcos(double e, double x); int main(void)
{
int repeat, ri;
double e, sum, x;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){ scanf("%le%le", &e, &x);
/*---------*/
printf("sum = %f\n", sum); }
return 0;
}
/*---------*/。