• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      C語言函數(shù)調(diào)用方式教學(xué)方法的探討

      2022-07-06 23:49:08王曉東
      客聯(lián) 2022年4期
      關(guān)鍵詞:函數(shù)教學(xué)

      摘 要:函數(shù)調(diào)用方式是C語言程序設(shè)計(jì)課程教學(xué)的重點(diǎn),也是教學(xué)難點(diǎn)之一。本文簡述了兩種C語言函數(shù)調(diào)用方式的特點(diǎn),解答了學(xué)生在學(xué)習(xí)過程中遇到的常見問題。并通過典型案例分析,引導(dǎo)學(xué)生掌握C語言函數(shù)調(diào)用方式的運(yùn)用方法。

      關(guān)鍵詞:C語言;教學(xué);函數(shù);調(diào)用方式

      一、引言

      程序設(shè)計(jì)語言是高等院校公共基礎(chǔ)教學(xué)的重要組成部分,也是計(jì)算機(jī)相關(guān)專業(yè)的基礎(chǔ)課程。C語言是一門十分優(yōu)秀的程序設(shè)計(jì)語言,不僅適用于教學(xué),而且實(shí)用性極強(qiáng),應(yīng)用廣泛。函數(shù)調(diào)用方式不僅涉及了函數(shù)信息傳遞的效率問題,而且還可能對程序運(yùn)行結(jié)果產(chǎn)生影響,因此也是C語言課程教學(xué)的一個(gè)重點(diǎn)。C語言函數(shù)調(diào)用有兩種方式,除了傳統(tǒng)的傳值調(diào)用之外,還增加了頗具特色的傳址調(diào)用方式。在授課中抓住要點(diǎn),鞭辟入里,精選典型案例進(jìn)行分析,取得了良好的教學(xué)效果。

      二、傳值調(diào)用

      傳值調(diào)用是在高級語言中普遍存在的函數(shù)調(diào)用方式,其形參和實(shí)參均為普通變量。在函數(shù)調(diào)用時(shí)把實(shí)參的值從左至右,一一對應(yīng)地傳遞給各個(gè)形參。這種傳遞是單向的,類似變量賦值,形參的值發(fā)生變化對實(shí)參毫無影響。選用求兩個(gè)整數(shù)的最大公約數(shù)這個(gè)程序作為案例,讓學(xué)生直觀認(rèn)識(shí)到函數(shù)定義、調(diào)用以及返回值等各個(gè)要素。定義一個(gè)gcd函數(shù)負(fù)責(zé)求最大公約數(shù),兩個(gè)形參均設(shè)置為普通類型int。算法采用輾轉(zhuǎn)相除法,代碼如下:

      #include<stdio.h>

      main()

      { int gcd(int m,int n); /*函數(shù)聲明*/

      int m,n,k;

      scanf("%d%d",&m,&n);

      k=gcd(m,n); /*函數(shù)調(diào)用*/

      printf("最大公約數(shù)是%d\n",k);

      }

      int gcd(int m,int n) /*函數(shù)定義*/

      { int a;

      do

      { a=m%n;

      m=n;

      n=a;

      }while(n!=0);

      return(m); /*函數(shù)返回值*/

      }

      有的學(xué)生可能會(huì)認(rèn)為函數(shù)遞歸調(diào)用是一種新的調(diào)用方式,其實(shí)它是函數(shù)嵌套調(diào)用的特殊形式,本質(zhì)仍然屬于傳值調(diào)用。再次選取求最大公約數(shù)這個(gè)案例,采用遞歸調(diào)用方式。部分代碼如下:

      int gcd(int m,int n) /*函數(shù)定義*/

      { int k;

      if(n==0)

      k=m;

      else

      k=gcd(n,m%n); /*遞歸調(diào)用*/

      return(k); /*函數(shù)返回值*/

      }

      三、傳址調(diào)用

      傳址調(diào)用方式在形式上與傳值調(diào)用方式的區(qū)別是,形參是指針變量,實(shí)參則是變量的地址。多數(shù)參數(shù)值都是通過傳值調(diào)用方式傳遞給被調(diào)函數(shù)的,但是在有些場合使用傳值調(diào)用并不恰當(dāng)。例如傳遞一個(gè)任意長度的數(shù)組,或者函數(shù)需要返回多個(gè)結(jié)果,或者傳遞需要占很多內(nèi)存空間的結(jié)構(gòu)體數(shù)據(jù)。遇到上述情況可以采用傳址調(diào)用方式,傳址調(diào)用使得被調(diào)函數(shù)能夠修改主調(diào)函數(shù)中變量的值,程序功能更加強(qiáng)大。

      選取求某班C語言平均成績這個(gè)案例,定義函數(shù)average求平均成績。按照傳址調(diào)用的要求,該函數(shù)的形參應(yīng)該為指針類型int*。調(diào)用時(shí)把數(shù)組名作為實(shí)參傳遞給average函數(shù)的形參,在函數(shù)中利用指針訪問數(shù)組,計(jì)算出平均成績,返回給main函數(shù)即可。代碼如下:

      #include<stdio.h>

      #define N 30

      main()

      { float average(int *p); /*函數(shù)聲明*/

      int a[N],i;

      float aver;

      for(i=0;i<N;i++)

      scanf("%d",&a[i]);

      aver=average(a); /*函數(shù)調(diào)用*/

      printf("aver=%5.2f\n",aver);

      }

      float average(int *p) /*函數(shù)定義*/

      { float aver;

      int i;

      for(i=0,aver=0;i<N;i++,p++)

      aver+=*p;

      return(aver/N); /*函數(shù)返回值*/

      }

      有的學(xué)生可能會(huì)認(rèn)為數(shù)組作為形參是一種新的函數(shù)調(diào)用方式,即函數(shù)頭部變?yōu)閒loat average(int a[N]),其實(shí)它的本質(zhì)仍然屬于傳址調(diào)用。形參數(shù)組是不單獨(dú)占據(jù)內(nèi)存空間的,實(shí)參數(shù)組和形參數(shù)組的地址相同,各個(gè)元素在內(nèi)存中是重疊存放的,占據(jù)同一段內(nèi)存空間。實(shí)際上C語言把形參數(shù)組作為指針變量來處理,這也是形參數(shù)組可以不給出長度的原因所在。

      四、結(jié)語

      傳值調(diào)用方式和傳址調(diào)用方式各有特色,傳值調(diào)用使用簡便,程序的可讀性好,傳址調(diào)用的功能則更為強(qiáng)大。在教學(xué)中應(yīng)該重點(diǎn)分析兩種函數(shù)調(diào)用方式的特點(diǎn),引導(dǎo)學(xué)生仔細(xì)體會(huì),在程序設(shè)計(jì)中根據(jù)實(shí)際情況靈活運(yùn)用。

      參考文獻(xiàn):

      [1] 王曉東. C程序設(shè)計(jì)簡明教程(第二版)[M].北京:中國水利水電出版社, 2008.

      猜你喜歡
      函數(shù)教學(xué)
      第3講 “函數(shù)”復(fù)習(xí)精講
      二次函數(shù)
      第3講 “函數(shù)”復(fù)習(xí)精講
      二次函數(shù)
      函數(shù)備考精講
      微課讓高中數(shù)學(xué)教學(xué)更高效
      甘肅教育(2020年14期)2020-09-11 07:57:50
      如何讓高中生物教學(xué)變得生動(dòng)有趣
      甘肅教育(2020年12期)2020-04-13 06:25:34
      第3講“函數(shù)”復(fù)習(xí)精講
      “自我診斷表”在高中數(shù)學(xué)教學(xué)中的應(yīng)用
      東方教育(2017年19期)2017-12-05 15:14:48
      對外漢語教學(xué)中“想”和“要”的比較
      荆州市| 福州市| 牟定县| 商城县| 兴隆县| 永登县| 杨浦区| 临城县| 卫辉市| 海伦市| 靖安县| 周口市| 巢湖市| 梨树县| 蓬莱市| 贞丰县| 秭归县| 南京市| 镇江市| 西乌珠穆沁旗| 广州市| 日照市| 航空| 康定县| 图木舒克市| 西畴县| 清苑县| 绥芬河市| 新乡市| 大厂| 鱼台县| 团风县| 仁布县| 冀州市| 仁怀市| 潮安县| 明溪县| 晋州市| 崇信县| 连城县| 安康市|