C语言教学中函数的调用问题
导语:C语言在调用时经常会遇到各种各样的问题,下面就由小编为大家介绍一下C语言教学中函数的调用问题,欢迎大家阅读!
1 函数调用问题的提出
本人在教学过程中,出现了多次这种问题。在讲授函数的概念、函数的定义和函数的调用之后,给学生出一道题目用函数来实现,通常情况下,该问题如果不用函数方法而用其他方法做的话,学生可能会做得出来,但让他们必须用自定义函数的方法来实现,他们就感觉无从下手,并不是这个问题本身很难,归根结底,学生对于怎么自定义函数,定义多少个参数,怎么在主调函数中调用自己定义的被调函数不知道如何做。从而导致了用函数解决的问题却用其他方法实现。在这里,我个人通过自己的反复思量,为了提高讲授函数调用的教学效果,自己总结了几条经验。
2 函数调用问题方法讨论
要知道函数怎么调用,首先得知道用户怎么定义函数。
2.1 函数定义的一般格式:
类型标识符[3] 函数名(形式参数列表)
{ 声明部分
语句部分
}
这个格式定义的函数为有参函数,“形式参数列表”中的参数被称为形参,有些函数是无参函数,则“形式参数列表”可以没有,但括弧不能省略,即无参函数。
函数在使用之前要先声明、定义,然后才能调用[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()主函数中调用。
-
浅谈高职C语言课程的教学分析与设计
C语言作为学院网络技术专业的人门课程,旨在通过锻炼学生的逻辑思维,墙养学生在职业岗位中实际应用的能力.目前,该专业的学生毕业后主要从事网站开发和网络管理等方面的工作,而在这些领域几乎都以C语言作为应用的开发工具.但从历年教学实践来看,教师往往付出的精力多...
-
为什么入门首选C语言?
C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员。那么为什么入门首选C语言呢,下面小编为大家介绍一下吧!C...
-
2017计算机二级C语言精选习题
多做题有助于同学们及时检测自己的学习情况。希望提供的2017计算机二级C语言精选习题,能够帮助大家巩固所学知识,为今后的学习打好基础!(1)OSI模型的'物理层负责下列哪一种功能?A)格式化报文B)为数据选择通过网络的路由C)定义连接到介质的特征D)提供远程文件访...
-
测试C语言功力的几个问题
在实际的VC++教学中,发现很少有真正精通了C语言编程的学员,一般都有或多或少概念不是完全清楚的问题,特别是一些需要丰富的实战经验才能体会和明白的问题,如字符串,指针,类型转换,定义指向函数的指针类型,这也是导致学习VC++困难的一个原因。下面就来和小编一起看看测...