首页 > 代码库 > 实验七——函数定义及调用总结

实验七——函数定义及调用总结

一、本次课学习到的知识点:

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。它适用的场合主要是把一些确定的、相对独立的程序功能封装成函数。

实验七——函数定义及调用总结