一、本次课学习到的知识点:
1、函数的定义:函数是一个完成特定工作的独立程序模块,包括函数和自定义函数两种。
2、以计算圆柱体体积为例,通过定义体积计算功能的函数和主函数调用的例子,引出函数定义的一般形式:函数首部加函数体,且在函数结尾处通过return 语句返回结果。
函数类型 函数名(形式参数表) /*函数首部*/
{
函数实现过程 /*函数体*/
}
return 表达式;
3、函数首部由函数类型,函数名和形式参数表组成,位于函数定义第一行。函数类型指函数结果返回的类型,一般与return语句中表达式的类型一致。形参表中给出函数计算所要用到的相关已知条件,以类似变量定义的形式给出。形参表中各个形参之间用逗号分隔,每个形参前面的类型必须分别写明。函数的形参的数量可以是一个,也可以是多个,或者没有形参。
4、形参、实参及参数传递。形参只能用变量表示,在函数中起作用;实参可以是变量、常量或表达式,在主调函数中。实参与形参要个数一致,类型一致。参数传递时,实参把变量、常量的值或者表达式结果值传递给形参。
5、函数定义首部与声明。二者形式相似,函数声明的目的主要是说明函数的类型和参数的情况,以保证程序编译时对函数调用是否正确做出判断,声明位置通常在主函数前面。而函数定义首部位于函数定义的第一行,与函数体连续书写组成函数定义。
6、函数声明是一条c语句,而函数定义时的函数首部不是语句,后面不能跟分号。如果在调用函数前,既不定义,也不声明,程序编译时会出错。
二、实验过程中遇到的问题及解决方法:
1、会发现程序编译正确,结果却不正确,却不能发现问题在哪。
2、在练习5-1中,虽然老师讲了正确做法,但我不知道自己编写的哪里出现了问题。
题目:使用函数求1到n之和:输入一个正整数n,输出1~n之和。要求定义和调用函数sum(n)求1~n之和。
#include<stdio.h> #include<math.h> int sum(int n); int main(void) { int n,sum; printf("请输入一个正整数n:"); scanf("%d",&n); printf("sum=%.0f\n"); return 0; } int sum(int n) { int i,sum; for(i=1;i<=n;i++) sum=sum+i; return n; }
三、实验心得体会及本章学习总结
函数是c语言程序的基本组成单元,编写每一个程序都需要用到函数,如main()函数和priintf()、scanf()等函数。
本章介绍了函数的定义和使用,讨论了变量与函数的关系。
函数首部三要素:函数类型,函数名,形式参数表。
函数的调用:任何c程序执行,首先从主函数main()开始,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原先暂停的位置继续执行。
形参和实参必须一一对应,实参的值依次传给形参。
函数声明:c语言要求函数先定义后调用。如果自定义函数被放在主调函数的后面,就需要在函数调用前,加上函数原型声明。
四、预习
1、在例题5-5中,pyramid()函数的功能是在屏幕上输出数字金字塔,不做任何运算,也没有运算结果,也不需要返回值。函数定义时,形参n决定了需要输出的数字金字塔的层数。
2、区别:前面介绍的函数都是起计算或判断作用,最终有一个函数结果返回。在例题5-5中,调用函数的作用就是在屏幕上输出数字金字塔,不是为了得到某个运算结果,而是要让它产生某些作用。
3、不返回结果的函数定义:
void 函数名(形参表)
{
函数实现过程
}
函数类型为void,表示不返回结果,函数体中可以使用没有表达式的return语句,也可以省略return。void类型的函数虽然不直接返回一个值,但它的作用通常以屏幕输出等方式体现。
在不返回结果的函数定义中,void不能省略,否则,函数类型被默认定义为int。
4、例5-5定义pyramid()函数时,省略了return语句,并不意味着函数不能返回。对于void类型的函数,如果省略了return语句,当函数中所用语句都执行完后,遇到最后的大括号即自动返回主调函数。
5、不返回结果的函数在定义、调用、参数传递、函数声明上,思路完全与以前相同,只是函数类型变为void。它适用的场合主要是把一些确定的、相对独立的程序功能封装成函数。
原文:http://www.cnblogs.com/hesong/p/6011153.html