C语言教学中函数的调用问题
  导语:在调用时经常会遇到各种各样的问题,下面就由为大家介绍一下C语言教学中函数的调用问题,欢迎大家阅读!
  本人在教学过程中,出现了屡次这种问题。在讲授函数的概念、函数的定义和函数的调用之后,给学生出一道题目用函数来实现,通常情况下,该问题如果不用函数方法而用其他方法做的话,学生可能会做得出来,但让他们必须用自定义函数的方法来实现,他们就感觉无从下手,并不是这个问题本身很难,归根结底,学生对于怎么自定义函数,定义多少个参数,怎么在主调函数中调用自己定义的被调函数不知道如何做。从而导致了用函数解决的问题却用其他方法实现。在这里,我个人通过自己的反复思量,为了提高讲授函数调用的教学效果,自己总结了几条。
  要知道函数怎么调用,首先得知道用户怎么定义函数。
  2.1 函数定义的一般格式:
  类型标识符[3] 函数名(形式参数列表)
  { 声明部分
  语句部分
printf函数是如何实现的  }
  这个格式定义的函数为有参函数,“形式参数列表”中的参数被称为形参,有些函数是无参函数,那么“形式参数列表”可以没有,但括弧不能省略,即无参函数。
  函数在使用之前要先声明、定义,然后才能调用[1]。
  2.2 函数调用的一般形式为:
  函数名(实参表列)
  函数在程序中出现的位置来分,可以有以下三种函数调用方式[2]:
  ①函数语句
  把函数调用作为一个语句,这种方式不要求函数带回值,如打印图形、显示字符串等。只
要函数完成一定的操作。
  ②函数表达式
  函数出现在一个表达式中,这种表达式称为函数表达式。要求函数带回一个确定的值以参加表达式的运算。如:c=10*max(a,b),其中,函数max就是表达式的一部分。
  ③函数参数
  函数调用作为一个函数的实参,如:printf(“%d”,max(a,b));是把max(a,b)作为printf函数的一个参数。
  2.3 函数问题案例讲解
  ①首先从库函数的调用案例着手讲授,学生自然就很轻松上手。
  众所周知,库函数中的数学函数学生从高中就经常接触到,在计算机教学的其他课程里面也会经常出现,如excel里面就有数学函数,学生们已经很熟悉了,如下面一道编程题就需要调用库函数解决。
  用C语言求14+24+34+……94+104之和。
  #include"math.h"
  main()
  {int n=10,k=4;
  long y=0;
  for(i=1;i<=n;i++)
  y=y+pow(i,k);
  printf("%d",y);
  }
  其中,pow(i,k)就是系统自带的数学函数,i和k是它自带的两个参数,其功能是计算i的k次方。通过这个系统数学函数的调用程序的编写及调试,学生们很轻松就知道库函数怎么调用,
即函数名加上函数括号里面的参数。
  另外大家使用库函数的时候,一定要在本文件开头用#include命令,将调用有关库函数时所需用到的信息“包含”到本文件中来。该程序开头用语句# include"math.h",即可将数学库函数“包含”到主函数中来。
  ②用大家熟悉且简短的函数编程案例入手讲解。
  典型小案例教学具有很强的启发性,既有利于学生学习,也有利于老师教授。
  用C语言函数实现1+2+3+……+20之和。
  long fnsum(int n)
  {int i;
  long y=0;
  {for(i=1;i<=n;i++)
  y=y+i;}
  return y;
  }
  main()
  {
  int n=20;
  printf("%d",fnsum(n));
  }
  在这个程序代码中,程序行long fnsum(int n)是自定义函数,fnsum是函数名,n是定义的一个形参,也仅需要一个,表示1+2+……+20共有多少个数求和。由于fnsum函数代码写在main()函数之前,可以不进展声明。反之,假设fnsum函数代码写在main()函数之后,必须用
代码long fnsum(int n);进展声明。fnsum函数功能即是题目要完成的功能实现,最后通过main()主函数定义一个实参n并赋值20,在printf函数中通过代码printf("%d",fnsum(n)),调用了自定义函数fnsum,并将实参n=20传递给自定义函数fnsum(int n)中的形参n,最终将结果打印输出。
  在main()主函数中,fnsum这个函数调用也可以改成如下:
  main()
  {
  int n=20,sum;
  sum=fnsum(n);
  printf("%d",sum);
  }
  这个是通过函数表达式的方法进展函数调用,通过这个自定义函数的简单案例讲解,学生很轻松能够理解函数怎么自定义并在main()主函数中调用。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。