C語言教學中函數的調用問題

導語: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()主函數中調用。