首頁 > 文章中心 > c語言函數(shù)

      c語言函數(shù)

      前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇c語言函數(shù)范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。

      c語言函數(shù)

      c語言函數(shù)范文第1篇

      關鍵詞:函數(shù)指針,指針函數(shù),地址

       

      1.引言

      一個程序由兩部分組成:代碼部分和數(shù)據(jù)部分。當在程序中定義變量時,編譯系統(tǒng)就會為變量分配相應的存儲單元,由此就形成了地址的概念。數(shù)據(jù)在內(nèi)存中是存放在某一地址上的,代碼同樣也是存儲在內(nèi)存中的某一地址上,因此指針即可向內(nèi)存中存儲的數(shù)據(jù)也可以指向程序中的代碼,這就是函數(shù)指針。而指針函數(shù)則是指返回值是一個指針的函數(shù)。

      2.函數(shù)指針

      可以用指針變量指向整型變量、字符串、數(shù)組,也可以指向一個函數(shù)。在C語言中規(guī)定,一個函數(shù)總是占用一段連續(xù)的內(nèi)存區(qū),而函數(shù)名就是該函數(shù)所占內(nèi)存區(qū)的首地址。我們可以把函數(shù)的這個首地址(或稱入口地址)賦給一個指針變量,使該指針變量指向該函數(shù)。然后通過指針變量就可以找到并調(diào)用這個函數(shù)。論文參考網(wǎng)。我們把這種指向函數(shù)的指針變量稱為“函數(shù)指針變量”。

      函數(shù)指針變量定義的一般形式為:

      類型說明符(*函數(shù)指針變量名)(形式參數(shù)表);

      例如: int(*pf)( );

      表示pf是一個指向函數(shù)入口地址的指針變量,該函數(shù)的返回值(函數(shù)值)是整型。

      下面通過例子來說明用函數(shù)指針形式實現(xiàn)對函數(shù)調(diào)用的方法。在我們沒有學習指針變量之前,我們調(diào)用函數(shù)時是通過函數(shù)名來完成的。

      2.1用函數(shù)名實現(xiàn)函數(shù)的調(diào)用

      源程序代碼如下:

      #include<stdio.h>

      int max(inta,int b)

      {if(a>b)return a;

      elsereturn b;}

      void main()

      { int max(inta,int b);

      int a,b,c;

      printf('inputtwo numbers:');

      scanf('%d,%d',&a,&b);

      c=max(a,b);/*用函數(shù)名調(diào)用*/

      printf('max=%d ',c);

      }

      程序運行結果如下:

      2.2用函數(shù)指針來實現(xiàn)函數(shù)的調(diào)用

      源程序代碼:

      int max(inta,int b)

      {if(a>b) returna;

      else return b;}

      void main()

      { int max(inta,int b);

      int (*pmax)(int ,int ); /*定義了一個指向整型函數(shù)的指針*/

      int a,b,c;

      pmax=max;/*使函數(shù)指針指向該函數(shù)的入中地址*/

      printf('inputtwo numbers:');

      scanf('%d,%d',&a,&b);

      c=(*pmax)(a,b);/*通過指針調(diào)用max函數(shù)*/

      printf('max=%d ',c);}

      程序運行結果如下:

      實例說明:

      (1) 本實例中“int (*pmax)( int ,int );”用來定義pmax是一個指向函數(shù)的指針,該函數(shù)有兩個整型參數(shù),函數(shù)值為整型。

      (2) 賦值語句“pmax=max;”的作用是將函數(shù)max的入口

      地賦給指針變量pmax(函數(shù)名代表該函數(shù)的入口地址)。

      這時,pmax就是指向函數(shù)max的指針變量,此時pmax

      和max都指向函數(shù)的開頭,見右圖。調(diào)用*pmax就是調(diào)

      用max。

      (3) 請注意:pmax是指向函數(shù)的指針變量,它只能指向函數(shù)

      的入口處而不能指向函數(shù)中間的某一條指令處,因此不能

      用 *(pmax+1)來表示函數(shù)的下一條指令。

      (4) 在main函數(shù)中有一個賦值語句:

      c=(*pmax)(a,b);與實例2.1中c=max(a,b);等價。這就是用指

      針形式實現(xiàn)函數(shù)的調(diào)用。以上用兩種方法實現(xiàn)函數(shù)的調(diào)用,結果是一樣的。論文參考網(wǎng)。

      2.3使用函數(shù)指針

      問題:編寫程序,根據(jù)用戶的選擇分別調(diào)用sin 、cos、 tan函數(shù)計算一個角度的三角函數(shù)值。角度值從鍵盤輸入。

      源程序代碼如下:

      #include<stdio.h>

      #include<math.h>

      main()

      {double(*p[3])(double)={sin,cos,tan};

      intchoice,angle;

      printf('Pleaseinput angle=?');

      scanf('%d',&angle);

      printf('Pleaseinput choice(0-sin,1-cos,2-tan)=?');

      scanf('%d',&choice);

      printf('%lf ',(*p[choice])(angle*3.14159/180));

      }

      實例說明:

      (1)在本實例中“double (*p[3])(double)={sin,cos,tan};”定義了一個具有3個元素的函數(shù)指針數(shù)組p,其中3個元素分別指向數(shù)學函數(shù)sin、cos、tan。

      (2)當程序運行時給angle賦值30,給choice賦值0。則:

      程序中“priintf('%lf ',(*p[choice])(angle*3.14159/180));”

      轉換為:

      “printf('%lf ',(*p[0])(30*3.14159/180));”(與“printf('%lf ',sin(30*3.14159/180));”等價)。

      程序運行結果如下:

      3. 指針函數(shù)

      一個函數(shù)可以返回一個整型值、字符值、實型值等,也可以返回指針型的數(shù)據(jù),即地址。指針函數(shù)則是指返回值是一個指針的函數(shù)。在C語言中允許一個函數(shù)的返回值是一個指針(即地址),這種返回指針值的函數(shù)稱為指針函數(shù)。論文參考網(wǎng)。

      定義指針型函數(shù)的一般形式為:

      類型說明符 *函數(shù)名(形參表)

      {

      …… /*函數(shù)體*/

      }

      如: int *pf(int x,int y)

      {

      ...... /*函數(shù)體*/

      }

      pf是函數(shù)名,調(diào)用它以后能得到一個指向整型數(shù)據(jù)的指針(地址)。x、y是函數(shù)pf的形參,為整型。請注意在*pf 兩側沒有括號,在pf的兩側分別為*運算符和()運算符。而()優(yōu)先級高于*,因此pf先與()結合。顯然這是一個函數(shù)形式。這個函數(shù)前面有一個*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。最前面的int表示返回的指針指向整型變量。對C的這種定義形式,用時要十分小心。

      例:有若干個學生的成績(每個學生有4門課程),要求在用戶輸入學生序號后,能輸出該學生的全部成績。

      源程序代碼如下:

      #include<stdio.h>

      void main()

      {floatscore[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};

      float*search(float(*pointer)[4],int n);

      float *p;

      int i,m;

      printf('inputthe number of student:');

      scanf('%d',&m);

      printf('Thescores of No.%d are: ',m);

      p=search(score,m);

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

      printf('%5.2f ',*(p+i));

      printf(' ');

      }

      float*search(float(*pointer)[4],int n)

      {float*pt;

      pt=*(pointer+n);

      return(pt);

      }

      程序運行結果如下:

      4.結束語

      特別注意的是函數(shù)指針和指針函數(shù)這兩者在寫法和意義上的區(qū)別。如int(*p)()和int *p()是兩個完全不同的量。int(*p)()是一個變量說明,說明p 是一個指向函數(shù)入口的指針變量,該函數(shù)的返回值是整型量,(*p)的兩邊的括號不能少。int *p() 則不是變量說明而是函數(shù)說明,說明p是一個指針型函數(shù),其返回值是一個指向整型量的指針,*p兩邊沒有括號。作為函數(shù)說明, 在括號內(nèi)最好寫入形式參數(shù),這樣便于與變量說明區(qū)別。 對于指針函數(shù)定義,int *p()只是函數(shù)頭部分,一般還應該有函數(shù)體部分,這樣才能構成一個完整的函數(shù)結構。

      參考文獻:

      [1] 陳強.C語言核心開發(fā)技術從入門到精通[M].北京:電子工業(yè)出版社,2009.

      [2] 匡松.C語言程序設計[M] .北京:中國鐵道出版社,2008.

      [3] 李俊杰.C語言復習指南與題解[M] .北京:清華大學出版社,2003.

      [4] 譚浩強.C程序設計[M] .北京:清華大學出版社,2005.

      c語言函數(shù)范文第2篇

      關鍵詞:C語言;函數(shù)說明;返回值

      函數(shù)的一般形式是:type-specifier function_name(parameter list)parameter declarations{body of the function}類型說明符定義了函數(shù)中return語句返回值的類型,該返回值可以是任何有效類型。如果沒有類型說明符出現(xiàn),函數(shù)返回一個整型值。參數(shù)表是一個用逗號分隔的變量表,當函數(shù)被調(diào)用時這些變量接收調(diào)用參數(shù)的值。一個函數(shù)可以沒有參數(shù),這時函數(shù)表是空的。但即使沒有參數(shù),括號仍然是必須要有的。參數(shù)說明段定義了其中參數(shù)的類型。當一個函數(shù)沒有明確說明類型時,C語言的編譯程序自動將整型(int)作為這個函數(shù)的缺省類型,缺省類型適用于很大一部分函數(shù)。當有必要返回其它類型數(shù)據(jù)時,需要分兩步處理:首先,必須給函數(shù)以明確的類型說明符;其次,函數(shù)類型的說明必須處于對它的首次調(diào)用之前。只有這樣,C編譯程序才能為返回非整型的值的函數(shù)生成正確代碼。

      一、函數(shù)的類型說明可將函數(shù)說明為返回任何一種合法的C語言數(shù)據(jù)類型

      類型說明符告訴編譯程序它返回什么類型的數(shù)據(jù)。這個信息對于程序能否正確運行關系極大,因為不同的數(shù)據(jù)有不同的長度和內(nèi)部表示。返回非整型數(shù)據(jù)的函數(shù)被使用之前,必須把它的類型向程序的其余部分說明。若不這樣做,C語言的編譯程序就認為函數(shù)是返回整型數(shù)據(jù)的函數(shù),調(diào)用點又在函數(shù)類型說明之前,編譯程序就會對調(diào)用生成錯誤代碼。為了防止上述問題的出現(xiàn),必須使用一個特別的說明語句,通知編譯程序這個函數(shù)返回什么值。下例示出了這種方法。

      第一個函數(shù)的類型說明sum()函數(shù)返回浮點類型的數(shù)據(jù)。這個說明使編譯程序能夠?qū)um()的調(diào)用產(chǎn)生正確代碼。函數(shù)類型說明語句的一般形式是:type_specifier function_name(;)即使函數(shù)使用形參,也不要將其寫入說明句。若未使用類型說明語句,函數(shù)返回的數(shù)據(jù)類型可能與調(diào)用者所要求的不一致,其結果是難以預料的。如果兩者同處于一個文件中,編譯程序可以發(fā)現(xiàn)該錯誤并停止編譯。如果不在同一個文件中,編譯程序無法發(fā)現(xiàn)這種錯誤。類型檢查僅在編譯中進行,鏈接和運行時均不檢查。因此,必須十分細心以確保絕不發(fā)生上述錯誤。當被說明為整型的函數(shù)返回字符時,這個字符值被轉換為整數(shù)。因為C語言以不加說明的方式進行字符型與整型之間的數(shù)據(jù)轉換,因而多數(shù)情況下,返回字符值的函數(shù)并不是說明為返回字符值,而是由函數(shù)的這種字符型向整型的缺省類型轉換隱含實現(xiàn)的。

      二、返回語句

      返回語句return有兩個重要用途。第一,它使得內(nèi)含它的那個函數(shù)立即退出,也就是使程序返回到調(diào)用語句處繼續(xù)進行。第二,它可以用來回送一個數(shù)值。本章將說明這兩個用途。

      (一)從函數(shù)返回函數(shù)可以用兩種方法停止運行并返回到調(diào)用程序

      第一種是在執(zhí)行完函數(shù)的最后一個語句之后,從概念上講,是遇到了函數(shù)的結束符“}”(當然這個花括號實際上并不會出現(xiàn)在目標碼中,但我們可以這樣理解)。例如,下面的函數(shù)在屏幕上顯示一個字符串。

      一旦字串顯示完畢,函數(shù)就沒事可做了,這時它返回到被調(diào)用處。在實際情況中,沒有多少函數(shù)是以這種缺省方式終止運行的。因為有時必須送回一個值,大多數(shù)函數(shù)用return語句終止運行,有時在函數(shù)中設立了多個終止點以簡化函數(shù)、提高效率。切記,一個函數(shù)可以有多個返回語句。如下所示,函數(shù)在s1、s2相等時返回1,不相等時返回-1。

      (二)返回值所有的函數(shù)

      c語言函數(shù)范文第3篇

      關鍵詞:傳遞方式;數(shù)據(jù)類型;值傳遞;指針;數(shù)組

      中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2012)07-1688-02

      The Discussion on Function Parameters Passing in the C Language Teaching

      DONG Xin-zheng

      (Department of Computer Science and Technology, Zhuhai College of Jilin University, Zhuhai 519041, China)

      Abstract:The function parameter-passing modes are usually divided into“value passing”and“address passing”in some textbooks, which brings some difficulty for the beginners to understand. This paper makes a clear distinction between parameter-passing mode and data type, which are two basic concepts related with function parameter passing; analyzes three cases: general data type as function parameters, pointer data type as function parameters and array name as function parameters; gets the summary that“pass-by-value”is the only function parameter-passing mode in C language, the difficulty about data type is to distinct between the pointer data type and non-pointer data type.

      Key words:parameter-passing mode; data type; pass-by-value; pointer; array

      1概述

      函數(shù)是C語言程序的基本構成模塊,通過使用函數(shù),不僅可以省去重復代碼的編寫,還可以使程序更加模塊化,從而有利于程序的閱讀、修改和完善。對于C語言的初學者來說,準確理解函數(shù)參數(shù)的傳遞方式是難點之一。一些C語言程序設計教材[1][2]中把函數(shù)間的參數(shù)傳遞分為“數(shù)值傳遞”和“地址傳遞”兩種方式,這種分類很容易使初學者混淆概念,更不能抓住參數(shù)傳遞的本質(zhì)。

      2傳遞方式和數(shù)據(jù)類型

      “值傳遞”[3]是函數(shù)參數(shù)的唯一傳遞方式。函數(shù)的參數(shù)分為實際參數(shù)(簡稱實參)和形式參數(shù)(簡稱形參),在定義函數(shù)時使用的參數(shù)叫形參,在調(diào)用函數(shù)時使用的參數(shù)叫實參。實參可以是常量、變量或表達式,但要求它們有確定的值。實參與形參的結合只有一種方式,即“值傳遞”,把實參的值賦給形參變量?!爸祩鬟f”具有單向性,只能把實參傳給形參,而不能由形參回傳給實參。

      不同數(shù)據(jù)類型的函數(shù)參數(shù)對主調(diào)函數(shù)中變量的作用有所不同。函數(shù)參數(shù)可取的數(shù)據(jù)類型為基本類型、構造類型、指針類型或空類型,如圖1[3]所示??疹愋捅硎驹摵瘮?shù)為無參函數(shù),在此不作介紹。其余數(shù)據(jù)類型又可分為三類:普通類型,包括基本類型、結構體類型和共用體類型;指針類型;數(shù)組類型。函數(shù)參數(shù)為普通類型時,對函數(shù)的調(diào)用不用影響到主調(diào)函數(shù)中變量的值;函數(shù)參數(shù)為指針類型或數(shù)組類型時,對函數(shù)的調(diào)用可以修改主調(diào)函數(shù)中有關變量的值。

      圖1

      3普通類型變量作為函數(shù)參數(shù)

      普通變量作為函數(shù)參數(shù)時,對形參的修改不會影響到實參。如下例所示,通過“值傳遞”,形參x保存了實參a的值,形參y保存了實參b的值,因為形參和實參是相互獨立的不同變量,所以在swap函數(shù)中對形參x和y進行的交換不會反映到實參a和b中。

      #include

      void swap(int x, int y)

      {

      int temp;

      temp=x; x=y; y=temp;

      }

      void main()

      {

      int a, b;

      scanf("%d%d", &a, &b);

      swap(a, b);

      printf("%d %d\n", a, b);

      }

      輸入:1 2

      輸出:1 2

      4指針作為函數(shù)參數(shù)

      變量的指針就是變量的地址,存放變量地址的變量叫指針變量,定義指針變量的一般形式為:

      基類型*指針變量名;

      通過指針變量訪問其所指向的變量的方式稱為間接訪問方式。如下例所示。

      int age;

      a=10; //直接訪問方式

      int* p=&a;

      *p=11; //間接訪問方式

      指針類型作為函數(shù)參數(shù)時,參數(shù)傳遞方式仍然是“值傳遞”,即把實參的值傳遞給形參。不同的是參數(shù)為指針變量,可以通過形參的間接訪問方式來讀取或修改主調(diào)函數(shù)中有關變量的值。

      如下例所示,通過“值傳遞”,形參x保存了變量a的地址,形參y保存了變量b的地址,即x指向變量a,y指向變量b,在swap函數(shù)中通過間接訪問方式交換了變量a和b的值。

      #include

      void swap(int* x, int* y)

      {

      int temp;

      temp=*x; *x=*y; *y=temp;

      }

      void main()

      {

      int a, b;

      scanf("%d%d", &a, &b);

      swap(&a, &b);

      printf("%d %d\n", a, b);

      }

      輸入:1 2

      輸出:2 1

      5數(shù)組名作為函數(shù)參數(shù)

      數(shù)組元素和數(shù)組名也可以作為函數(shù)參數(shù),數(shù)組元素作為函數(shù)參數(shù)與普通變量用法相同,數(shù)組名作為函數(shù)參數(shù)與指針變量相同。

      用數(shù)組名作函數(shù)形參時,指定數(shù)組大小是不起任何作用的。因為C語言編譯對形參數(shù)組大小不做檢查,只是將實參數(shù)組的首地址傳遞給形參數(shù)組。實參數(shù)組名即是實參數(shù)組的首地址,相當于指針常量;形參數(shù)組名相當于指針變量。實際上,C編譯都是將形參數(shù)組名作為指針變量來處理的[3]。所以,數(shù)組名作為函數(shù)參數(shù)可以按指針作為函數(shù)參數(shù)來理解。

      如下例所示,數(shù)組名array代表數(shù)組array的首地址,通過“值傳遞”,形參數(shù)組名a,也可以理解為形參指針變量a,保存了數(shù)組array的首地址,因此,在swap函數(shù)中對形參數(shù)組a的操作即是對實參數(shù)組array的操作。

      #include

      void swap(int a[])

      {

      int temp;

      temp=a[0]; a[0]=a[1]; a[1]=temp;

      }

      void main()

      {

      int array[2];

      scanf("%d%d", &array[0], &array[1]);

      swap(array);

      printf("%d %d\n", array[0], array[1]);

      }

      輸入:1 2

      輸出:2 1

      6結論

      綜上所述,C語言函數(shù)參數(shù)問題主要涉及兩個概念:傳遞方式和數(shù)據(jù)類型。實參與形參的傳遞方式只有一種,即“值傳遞”。參數(shù)的數(shù)據(jù)類型可以為普通類型、指針類型和數(shù)組類型,數(shù)組類型實際上是按指針類型來處理的,所以,主要是指針類型與非指針類型的區(qū)別。對初學者來說,問題的難點在于數(shù)據(jù)類型的不同而非傳遞方式,即指針類型變量與非指針類型變量的區(qū)別。

      參考文獻:

      [1]田祥宏.C語言程序設計[M].西安:西安電子科技大學出版社,2007.

      c語言函數(shù)范文第4篇

      關鍵詞:C語言 函數(shù) 參數(shù)傳遞

      中圖分類號:TP312 文獻標識碼:A 文章編號:1674-098X(2014)11(a)-0135-02

      “C語言程序設計”課程是信息類專業(yè)的一門非常重要的基礎課程,這門課程的主要目的就是讓學生以C語言為例了解高級程序設計語言的結構,掌握程序設計的基本思想,具備初步的分析問題和用計算機解決問題的能力。函數(shù)是C語言程序設計課程的重點和難點,它體現(xiàn)了模塊化程序設計的思想,將一個復雜的問題分解成一個個小而簡單的問題,通過解決一個個小問題進而實現(xiàn)大的復雜問題的求解。在函數(shù)的教學中,經(jīng)常會有教師不好教學生學不懂的現(xiàn)象,學生學完函數(shù)后,基本概念和結構語法都清楚,但是針對具體的問題就無從下手,教學效果一直不是太好。筆者在多年C語言教學的實踐基礎上,結合我校學生的具體情況,對函數(shù)部分的內(nèi)容組織和教學方法做了一些探討。

      1 教學內(nèi)容和安排

      函數(shù)部分一般按以下內(nèi)容進行教學。

      (1)函數(shù)的作用和分類:標準庫函數(shù)和自定義函數(shù)。

      (2)函數(shù)定義的基本格式:無參函數(shù)、有參函數(shù)和空函數(shù)。

      (3)函數(shù)的參數(shù)傳遞:值傳遞和地址傳遞。

      (4)函數(shù)的返回值:無返回值、一個返回值和多個返回值。

      (5)函數(shù)的調(diào)用:作為單獨語句、作為表達式和作為函數(shù)參數(shù)。

      (6)函數(shù)的遞歸調(diào)用和嵌套調(diào)用。

      (7)函數(shù)的聲明:聲明的位置、格式和省略情況。

      (8)變量的作用域:全局變量和局部變量。

      (9)變量的存儲類型及生存期:自動變量、靜態(tài)變量、外部變量和寄存器變量。

      可以看出,函數(shù)部分的內(nèi)容非常多,而且會有許多新的概念突然介入,有相當一部分教材,以譚浩強教授的《C程序設計》(第四版)為代表,將函數(shù)作為單獨一章放在選擇控制結構和數(shù)組之后,把函數(shù)相關的上述所有內(nèi)容都放在這一章中介紹,然后在后續(xù)的指針、結構體和文件等章節(jié)中又幾乎沒有函數(shù)的蹤影,程序的主體仍然放到main()函數(shù)中去講解,筆者認為這樣的內(nèi)容編排結構不利于學生對函數(shù)的把握,它會導致函數(shù)和其他內(nèi)容脫節(jié),給學生造成這是專門的一章,不學或?qū)W不好對其它內(nèi)容不會產(chǎn)生多大影響的印象,結果到課程結束時仍然對函數(shù)知之甚少,平時也幾乎沒用函數(shù)來編寫過程序,導致到了學期末學生在編程時仍然習慣把所有程序都放到一個main()函數(shù)中去編寫,很少有模塊化程序設計的思想,為以后編寫復雜程序或者參加團隊合作埋下了隱患。

      該文作者在講授函數(shù)這一部分時,參考了哈爾濱工業(yè)大學蘇小紅教授的高教版《C語言程序設計》(第二版)的內(nèi)容編排,把函數(shù)提到了數(shù)組之前介紹,而且從函數(shù)這一章開始,后面幾乎所有的程序都是按模塊化思想將程序分成一個個小函數(shù),再通過main()函數(shù)調(diào)用這些函數(shù)來實現(xiàn)主體功能,并且在后續(xù)內(nèi)容的講解中,不斷強化學生對函數(shù)的把握,強化學生模塊化程序設計的思想,學生在學習的過程當中,不斷地復習鞏固著函數(shù)的知識,不斷地感受著模塊化程序設計的思想,也逐漸養(yǎng)成了用函數(shù)設計程序的習慣,實踐表明,到學期末的時候,大多數(shù)學生都可以寫一些簡單的函數(shù)并通過main()函數(shù)調(diào)用來進行程序設計。

      2 函數(shù)的設計思想和設計方法

      在進行程序設計時,很多學生感到困惑、難以理解和掌握的是什么時候需要設計函數(shù)和該設計什么樣的函數(shù),形參和返回值該如何設置。對這個問題,筆者認為在講解的時候要著重把握幾點。

      首先,在確定什么時候該設計函數(shù)時,需要先對整個程序的過程有個把握,確定程序的主體功能,這樣,對需不需要設計函數(shù)及對哪些部分可以設計函數(shù)就有了較為明確的答案。例如:從鍵盤上輸入一個整數(shù)n(n>1且n<10),輸出1!+2!+3!+...+n!的值。

      對程序進行分析后,可以得出程序主體可以分成兩個步驟:

      輸入一個整數(shù)n;

      輸出1!+2!+3!+...+n!的值。

      在第2) 步驟中,由于重復用到了求階乘的功能,所以如果把求階乘這部分設計成一個函數(shù),將會對第2) 步的編程起到簡化的作用。這樣,經(jīng)過初步分析,可以確定需要設計一個函數(shù),此函數(shù)的功能是對給定的一個整數(shù)m,求出其階乘。

      函數(shù)的功能確定后,接著就可以著手設計函數(shù)了。具體到函數(shù)設計時,很多學生的疑惑是怎么設計函數(shù)的參數(shù)和返回值,在這里,筆者建議學生采用“黑匣子”的方法設計函數(shù),即不需要管函數(shù)的內(nèi)部結構,把它看做一個“黑匣子”,只從外部的功能要求來確定函數(shù)應該具備什么樣的功能,進而確定主函數(shù)在調(diào)用該函數(shù)時需要傳遞給它什么參數(shù),它在返回主調(diào)函數(shù)時又需不需要返回值或需要返回幾個值。在上個例子中,函數(shù)的功能確定是求階乘,在主函數(shù)調(diào)用它時需要告訴它對誰求階乘,即傳遞給該函數(shù)階乘的階數(shù)m,函數(shù)調(diào)用結束后,需要m的階乘返回主調(diào)函數(shù),即只需要返回一個值,如圖1所示。

      由此,我們得出此函數(shù)的相關內(nèi)容:

      函數(shù)功能:求出整數(shù)m的階乘m!

      函數(shù)入口參數(shù):一個形參,整形變量m表示階乘的階數(shù)

      函數(shù)返回值:一個返回值,返回m!的值

      這段信息可以作為注釋放在函數(shù)的開頭以便讓其他程序員有足夠的信息了解如何使用該函數(shù)。然后根據(jù)C語言中函數(shù)的定義格式可以寫出求階乘函數(shù)定義:int fact(int m);考慮到m!的范圍,我們可以將其修改定義為:long fact(int m);

      至此,函數(shù)的第一個難點就解決了。

      3 函數(shù)的參數(shù)傳遞

      在函數(shù)需要有多個返回值時,僅僅一個return就很難滿足要求了,這里就需要利用指針或全局變量將函數(shù)中的多個值傳遞到主調(diào)函數(shù)中,這屬于函數(shù)的參數(shù)傳遞問題。函數(shù)的參數(shù)傳遞是函數(shù)部分的又一個難點,可以分為值傳遞和地址傳遞,因為還關系到指針的應用,學生一時間很難理解和掌握。鑒于這一點,筆者采用形象類比法結合內(nèi)存空間講解了值傳遞和地址傳遞的區(qū)別。

      函數(shù)在被調(diào)用時新開辟了一段內(nèi)存空間,所有形參和函數(shù)內(nèi)部變量都在這個內(nèi)存空間中被訪問或修改,一旦返回主調(diào)函數(shù)這段內(nèi)存空間也就被釋放掉,形參的值不會傳遞給實參,影響到主調(diào)函數(shù)。即在進行值傳遞時相當于有一個復制操作,即將實參的值賦給函數(shù)空間的形參,這是一個單向傳遞,因此,對形參的改變不會影響到實參。而地址傳遞的實質(zhì)是將主調(diào)函數(shù)中的某個或多個地址放到被調(diào)函數(shù)中進行訪問,此操作間接訪問到了主調(diào)函數(shù)中的變量,因而影響到了主調(diào)函數(shù)中的變量值。

      上述講法需要學生建立內(nèi)存空間的概念,要對程序的存儲空間有所認識,相當一部分同學表示難以理解。筆者結合大一學生都學過計算機引論的實際情況,將值傳遞比喻為將計算機中的某一文件file1.doc拷貝給別人,別人拷走后可以隨便修改這個文件的內(nèi)容,這些修改都不會影響到原來的文件file1.doc。當傳遞的是地址的時候,即使用指針變量作函數(shù)參數(shù)時,相當于把機器密碼、要修改的文件路徑及文件名(如d:\project\file1.doc)告訴了別人,別人在修改時直接針對file1.doc,進行修改后,file1.doc的內(nèi)容肯定也會發(fā)生改變,這就是地址傳遞。經(jīng)過這樣形象的比喻后,學生多表示容易理解,在寫程序時會有意識地考慮需要進行的是值傳遞還是地址傳遞,形參該設置成普通變量還是指針變量,教學效果有所改善。

      4 結語

      實踐證明,在筆者進行的函數(shù)教學中,相當一部分同學對函數(shù)有了形象的認識,更深地理解了模塊化程序設計的思想,取得了良好的學習效果。學無止境,教亦無止境。除了以上幾點,只函數(shù)部分就還有很多可以繼續(xù)深入挖掘的東西,比如從函數(shù)有無參數(shù)方面,函數(shù)有無返回值或是否有多個返回值方面,變量的存儲類型和生存期方面等等,這些都值得我們教師不斷地研究不斷地探討。但歸根結底,如何讓學生容易掌握要點,如何讓學生發(fā)自內(nèi)心地喜歡學習、愛上學習并善于主動學習,筆者認為才是教師的最終目的。

      參考文獻

      [1] 蘇小紅.C語言程序設計[M].2版.高等教育出版社,2013.

      [2] 譚浩強.C程序設計[M].4版.清華大學出版社,2011.

      c語言函數(shù)范文第5篇

      【關鍵詞】ICT專業(yè) 學術漢語 教學模式

      【基金項目】本文的研究受到重慶郵電大學社會科學基金項目支持(K2015-08)和國際化教育教學研究項目支持(GJJY15-2-07)。

      【中圖分類號】G64 【文獻標識碼】A 【文章編號】2095-3089(2016)35-0015-02

      一、前言

      隨著我國“一帶一路”戰(zhàn)略的實施和“留學中國計劃”的開展,來華留學生規(guī)模不斷擴大,留學生結構和層次也開始發(fā)生變化[1][2]。目前,重慶郵電大學有來自50多個國家和地區(qū)的長期留學生400多人在校學習,其中研究生比例超過50%。隨著高水平漢語留學者的出現(xiàn),越來越多的留學生選擇以漢語作為學術研究的工具,部分留學生已在我校開始攻讀博士學位,這給傳統(tǒng)對外漢語教學帶來了新的機遇和挑戰(zhàn)。

      學術漢語是借鑒ESP(English for Special Purpose,專門用途英語)理論創(chuàng)造的一個術語,其目的是為專業(yè)學習服務[2][3]。目前,進入專業(yè)學習的重慶郵電大學留學生漢語水平一般要求在HSK4級以上,這一漢語水平的學生在進入到ICT專業(yè)課堂學習的時候,面對大量的通信編碼、信令、存儲器等ICT領域的專業(yè)詞匯時仍存在大量無法理解的現(xiàn)象。造成這些問題的主要原因包括:(1)缺少具有針對性的學術漢語教材學習。(2)專業(yè)術語理解障礙,對專業(yè)術語的掌握和理解上綴蹺零。(3)不熟悉ICT專業(yè)學術漢語文獻寫作規(guī)則,缺少專業(yè)漢語教師與學術導師的聯(lián)合指導。(4)缺乏ICT學術論文文體知識、論文思維,沒有經(jīng)過系統(tǒng)、科學的科研能力培養(yǎng)。

      二、留學生教育教學模式探索

      形成重視學術漢語教學的意識和氛圍。在意識上重視學術漢語教學,突出本、碩、博階段專業(yè)素養(yǎng)的培養(yǎng)和訓練,區(qū)分留學生學歷教育和短期漢語進修學習,圍繞計算機、通信領域的漢語學術論文面向留學生舉辦“讀論文、做實驗”的科技競賽活動。

      設置相應的課程并加強相關課程研究。制定分階段的學術漢語課程,從一般漢語教學的高級漢語階段開始,延伸到本碩博學歷教育階段,幫助留學生順利銜接到專業(yè)學習和研究。通過學習一些基本的專業(yè)詞匯,掌握基本的句法結構,為學歷生以及從事科學研究的漢語學習者進入專業(yè)學習、研究階段打下語言基礎。

      探索留學生學術漢語導師聯(lián)合制。在留學生進入漢語學習高級階段初期、即將進入專業(yè)學習的前期,建立留學生學術漢語導師聯(lián)合制,由對外漢語教師配合留學生的指導教師共同培養(yǎng)學生準確運用漢語進行科學研究的能力。傳授用漢語進行學術寫作的學術規(guī)范知識,訓練用漢語進行學術研究的方法,包括搜集資料的方法、開展實驗的方法、撰寫論文的方法,逐步培養(yǎng)漢語學術思維和科研意識。

      三、留學生教育教學實踐

      為進入專業(yè)學習的留學生開設過渡性學術漢語課程和學術能力培養(yǎng)課程。在過渡性課程上,通過講授計算機導論、通信原理等專業(yè)課程的基本詞匯、句法,為學生補充專業(yè)學習的基礎知識,使其掌握如何運用漢語學習專業(yè)課程的技能。在學術能力培養(yǎng)課程上,講授用漢語進行ICT學術寫作的學術規(guī)范知識、學術研究方法。培養(yǎng)留學生掌握通過軟件學報、計算機研究與發(fā)展、電子學報等中文學術期刊和知網(wǎng)等學術工具進行資料搜集的方法。培養(yǎng)留學生掌握提出問題、分析問題、解決問題逐層推進的科技寫作方法。

      傳統(tǒng)的教材式的對外漢語教學方法因教材出版周期較長,不能及時反應學術漢語的進展;另一方面,以慕課為主的網(wǎng)絡教學資源良莠不齊,詞法、句法使用隨意,術語準確性差,不適合直接引入校園作為知識進行傳授。在課程資源建設上,我校結合學校辦學特色、專業(yè)特長和留學生專業(yè)分布特點,由對外漢語教師、ICT專業(yè)教師等組成了專門的課程資源建設團隊,借助互聯(lián)網(wǎng)手段及時獲取最新的、權威的學術成果。通過篩選、匯編、整理等環(huán)節(jié),嚴格遵循學術文章中的專業(yè)詞匯、術語和寫作特點,以詞匯銜接、語法銜接作為切入點,按照計算機、通信專業(yè)設置分類,結合學術漢語教學特點,對資源進行認定、注解,并最終形成教學講義供學生使用。

      四、結語

      在來華留學生漢語水平不斷提高、學歷需求不斷提升、專業(yè)技能學習目的不斷明確的情況下,留學生運用漢語開展科學研究時亟需學術專業(yè)教師的指導。本文以重慶郵電大學ICT專業(yè)留學生為例,探討了我校在學術漢語教育教學方面的現(xiàn)狀和創(chuàng)新,希望借此吸引更多的學術專業(yè)教師關注留學生學術漢語的指導與教學。

      參考文獻:

      [1]單韻鳴.專門用途漢語教材的編寫問題――以《科技漢語閱讀教程》系列教材為例[J].暨南大學華文學院學報,2008,(2).

      [2]高增霞,劉福英.論學術漢語在對外漢語教學中的重要性,云南師范大學學報(對外漢語教學與研究版),2016,14(2).

      [3]張明月,科技漢語的文體研究及其在科技漢語教材編寫中的應用.南京師范大學,碩士論文.

      作者簡介:

      相關期刊更多

      忻州師范學院學報

      省級期刊 審核時間1個月內(nèi)

      忻州師范學院

      徐州師范大學學報

      省級期刊 審核時間1個月內(nèi)

      江蘇省教育廳

      贛南師范學院學報

      省級期刊 審核時間1個月內(nèi)

      贛南師范大學

      国产精品亚洲综合一区| va天堂va亚洲va影视中文字幕| 亚洲沟沟美女亚洲沟沟| 亚洲国产精品无码AAA片| 国产成人综合亚洲亚洲国产第一页| 亚洲精品一级无码鲁丝片| 亚洲av麻豆aⅴ无码电影| 色噜噜的亚洲男人的天堂| 亚洲AV无码一区二区大桥未久| 亚洲国产成人无码AV在线| 亚洲AV永久无码精品一福利 | 亚洲Av无码一区二区二三区| 亚洲国产精品久久久久秋霞影院| 亚洲精品白色在线发布| 亚洲午夜一区二区电影院| 亚洲AV成人无码天堂| 国产成人精品日本亚洲直接| 亚洲熟妇av午夜无码不卡| 中文字幕亚洲综合久久综合 | 亚洲熟妇无码乱子AV电影| 亚洲精品字幕在线观看| 亚洲国产第一站精品蜜芽| 久久综合图区亚洲综合图区| 亚洲第一福利网站| 亚洲精品中文字幕麻豆| 亚洲一区二区三区在线网站| 亚洲男人的天堂网站| 无码天堂va亚洲va在线va| 亚洲国产天堂久久综合| 国产成人亚洲精品91专区手机| 中文亚洲AV片不卡在线观看| 国产国拍亚洲精品mv在线观看 | 亚洲色欲色欲www在线丝| 亚洲av最新在线网址| 久久亚洲日韩看片无码| 亚洲六月丁香婷婷综合| 亚洲AV无码一区二区一二区| 亚洲国产一级在线观看| 亚洲精品国产成人片| 亚洲网站在线免费观看| 亚洲一卡2卡3卡4卡5卡6卡|