狠狠操网,91中文字幕在线观看,精品久久香蕉国产线看观看亚洲,亚洲haose在线观看

C語言的函數(shù)分類 有關(guān)c語言函數(shù)分為哪些類型

C語言的函數(shù)分類

  可以說C程序的全部工作都是由各式各樣的函數(shù)完成的, 所以也把C語言稱為函數(shù)式語言。 由于采用了函數(shù)模塊式的結(jié)構(gòu), C語言易于實現(xiàn)結(jié)構(gòu)化程序設(shè)計。使程序的層次結(jié)構(gòu)清晰,便于程序的編寫、閱讀、調(diào)試。下面就和小編一起看看C語言的函數(shù)分類吧。

  C語言的函數(shù)分類

  在C語言中可從不同的角度對函數(shù)分類。

  1. 從函數(shù)定義的角度看,函數(shù)可分為庫函數(shù)和用戶定義函數(shù)兩種。

  (1)庫函數(shù)

  由C系統(tǒng)提供,用戶無須定義, 也不必在程序中作類型說明,只需在程序前包含有該函數(shù)原型的頭文件即可在程序中直接調(diào)用。在前面各章的例題中反復(fù)用到printf 、 scanf 、 getchar 、putchar、gets、puts、strcat等函數(shù)均屬此類。

  (2)用戶定義函數(shù)

  由用戶按需要寫的函數(shù)。對于用戶自定義函數(shù), 不僅要在程序中定義函數(shù)本身, 而且在主調(diào)函數(shù)模塊中還必須對該被調(diào)函數(shù)進行類型說明,然后才能使用。

  2. C語言的函數(shù)兼有其它語言中的函數(shù)和過程兩種功能,從這個角度看,又可把函數(shù)分為有返回值函數(shù)和無返回值函數(shù)兩種。

  (1)有返回值函數(shù)

  此類函數(shù)被調(diào)用執(zhí)行完后將向調(diào)用者返回一個執(zhí)行結(jié)果, 稱為函數(shù)返回值。如數(shù)學(xué)函數(shù)即屬于此類函數(shù)。 由用戶定義的這種要返回函數(shù)值的函數(shù),必須在函數(shù)定義和函數(shù)說明中明確返回值的類型。

  (2)無返回值函數(shù)

  此類函數(shù)用于完成某項特定的處理任務(wù), 執(zhí)行完成后不向調(diào)用者返回函數(shù)值。這類函數(shù)類似于其它語言的過程。 由于函數(shù)無須返回值,用戶在定義此類函數(shù)時可指定它的返回為“空類型”, 空類型的`說明符為“void”。

  3. 從主調(diào)函數(shù)和被調(diào)函數(shù)之間數(shù)據(jù)傳送的角度看又可分為無參函數(shù)和有參函數(shù)兩種。

  (1)無參函數(shù)

  函數(shù)定義、函數(shù)說明及函數(shù)調(diào)用中均不帶參數(shù)。 主調(diào)函數(shù)和被調(diào)函數(shù)之間不進行參數(shù)傳送。 此類函數(shù)通常用來完成一組指定的功能,可以返回或不返回函數(shù)值。

  (2)有參函數(shù)

  也稱為帶參函數(shù)。在函數(shù)定義及函數(shù)說明時都有參數(shù), 稱為形式參數(shù)(簡稱為形參)。在函數(shù)調(diào)用時也必須給出參數(shù), 稱為實際參數(shù)(簡稱為實參)。 進行函數(shù)調(diào)用時,主調(diào)函數(shù)將把實參的值傳送給形參,供被調(diào)函數(shù)使用。

  4. C語言提供了極為豐富的庫函數(shù), 這些庫函數(shù)又可從功能角度作以下分類。

  (1)字符類型分類函數(shù)

  用于對字符按ASCII碼分類:字母,數(shù)字,**字符,分隔符,大小寫字母等。

  (2)轉(zhuǎn)換函數(shù)

  用于字符或字符串的轉(zhuǎn)換;在字符量和各類數(shù)字量 (整型, 實型等)之間進行轉(zhuǎn)換;在大、小寫之間進行轉(zhuǎn)換。

  (3)目錄路徑函數(shù)

  用于文件目錄和路徑操作。

  (4)診斷函數(shù)

  用于內(nèi)部錯誤檢測。

  (5)圖形函數(shù)

  用于屏幕管理和各種圖形功能。

  (6)輸入輸出函數(shù)

  用于完成輸入輸出功能。

  (7)接口函數(shù)

  用于與DOS,BIOS和硬件的接口。

  (8)字符串函數(shù)

  用于字符串操作和處理。

  (9)內(nèi)存管理函數(shù)

  用于內(nèi)存管理。

  (10)數(shù)學(xué)函數(shù)

  用于數(shù)學(xué)函數(shù)計算。

  (11)日期和時間函數(shù)

  用于日期,時間轉(zhuǎn)換操作。

  (12)進程**函數(shù)

  用于進程管理和**。

  (13)其它函數(shù)

  用于其它各種功能。

  以上各類函數(shù)不僅數(shù)量多,而且有的還需要硬件知識才會使用,因此要想全部掌握則需要一個較長的學(xué)習(xí)過程。 應(yīng)首先掌握一些最基本、 最常用的函數(shù),再逐步深入。

  拓展:C語言基本算法

  1.交換(兩量交換借助第三者)

  例1、任意讀入兩個整數(shù),將二者的值交換后輸出。

  main()

  {int a,b,t;

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

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

  t=a; a=b; b=t;

  printf("%d,%d ",a,b);}

  【解析】程序中加粗部分為算法的核心,如同交換兩個杯子里的飲料,必須借助第三個空杯子。

  假設(shè)輸入的值分別為3、7,則第一行輸出為3,7;第二行輸出為7,3。

  其中t為中間變量,起到“空杯子”的作用。

  注意:三句賦值語句賦值號左右的各量之間的關(guān)系!

  【應(yīng)用】

  例2、任意讀入三個整數(shù),然后按從小到大的順序輸出。

  main()

  {int a,b,c,t;

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

  if(a>b){ t=a; a=b; b=t; }

  if(a>c){ t=a; a=c; c=t; }

  if(b>c) { t=b; b=c; c=t; }

  printf("%d,%d,%d ",a,b,c);}

  2.累加

  累加算法的要領(lǐng)是形如“s=s+A”的累加式,此式必須出現(xiàn)在循環(huán)中才能被反復(fù)執(zhí)行,從而實現(xiàn)累加功能。“A”通常是有規(guī)律變化的表達(dá)式,s在進入循環(huán)前必須獲得合適的初值,通常為0。

  例1、求1+2+3+……+100的和。

  main()

  {int i,s;

  s=0; i=1;

  while(i<=100)

  {s=s+i;

  i=i+1;

  }

  printf("1+2+3+...+100=%d ",s);}

  【解析】程序中加粗部分為累加式的典型形式,賦值號左右都出現(xiàn)的變量稱為累加器,其中“i = i + 1”為特殊的累加式,每次累加的值為1,這樣的累加器又稱為計數(shù)器。

  3.累乘

  累乘算法的要領(lǐng)是形如“s=s*A”的累乘式,此式必須出現(xiàn)在循環(huán)中才能被反復(fù)執(zhí)行,從而實現(xiàn)累乘功能!癆”通常是有規(guī)律變化的表達(dá)式,s在進入循環(huán)前必須獲得合適的初值,通常為1。

  例1、求10!

  [分析]10!=1×2×3×……×10

  main()

  {int i; long c;

  c=1; i=1;

  while(i<=10)

  {c=c*i;

  i=i+1;

  }

  printf("1*2*3*...*10=%ld ",c);}


C語言的函數(shù)分類擴展閱讀


C語言的函數(shù)分類(擴展1)

——什么是C語言函數(shù)

什么是C語言函數(shù)

  可以說C程序的全部工作都是由各式各樣的函數(shù)完成的,所以也把C語言稱為函數(shù)式語言。由于采用了函數(shù)模塊式的結(jié)構(gòu),C語言易于實現(xiàn)結(jié)構(gòu)化程序設(shè)計。使程序的層次結(jié)構(gòu)清晰,便于程序的編寫、閱讀、調(diào)試。今天,小編為大家搜索整理了什么是C語言函數(shù),希望大家能有所收獲,更多精彩內(nèi)容請持續(xù)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!

  什么是函數(shù)

  第一,函數(shù)就是C語言的模塊,一塊一塊的,有較強的**性,可以相互調(diào)用,換句話說,C語言中,一個函數(shù)里面可以調(diào)用n個函數(shù),即大函數(shù)調(diào)用小函數(shù),小函數(shù)又調(diào)用“小小”函數(shù)。這就是結(jié)構(gòu)化程序設(shè)計,所以面向過程的語言又叫結(jié)構(gòu)化語言。

  第二,函數(shù)就是一系列C語句的集合,能完成某個特定的功能。需要該功能的時候直接調(diào)用該函數(shù)即可,不用每次都堆疊代碼。需要修改該功能時,也只需要修改和維護這一個函數(shù)即可。

  為什么需要函數(shù)

  第一,將語句集合成函數(shù)的好處是方便代碼重用。所謂“重用”,是指有一些代碼的功能是相同的,操作是一樣的,只不過針對的數(shù)據(jù)不一樣,這時就可以將這種功能寫成一個函數(shù)模塊,以后用到這個功能時只需要調(diào)用這個函數(shù)模塊就可以了,不需要再重復(fù)地編寫同樣的代碼。這樣可以解決大量同類型的問題,避免重復(fù)性操作。

  第二,將語句集合成函數(shù)方便代碼的維護。哪個功能出問題了,或者需要修改某個功能,那就只需要修改某個功能的函數(shù)就可以了。

  所以,函數(shù)有利于程序的模塊化。這實際上就是面向過程的思想。面向過程語言最基本的單位不是語句,而是函數(shù)。

  庫函數(shù)和自定義函數(shù)

  前面各章中,程序大都只有一個主函數(shù)main,但是在實際編程中程序往往是由多個函數(shù)組成的。

  C語言不僅提供了極為豐富的庫函數(shù)(幾百個),還允許用戶定義自己的函數(shù)。用戶可以將自己的算法編成一個個相對**的函數(shù)模塊,然后通過調(diào)用來使用這些函數(shù)。在實際的C編程中用得最多的就是自己定義的函數(shù)。庫函數(shù)只能提供一些基本的功能,我們所需要的大多數(shù)功能還是需要自己寫。

  不僅如此,在將來要學(xué)習(xí)的很多語言中,比如Labview,這些公司在開發(fā)這些語言的時候就已經(jīng)將所有需要用到的函數(shù)都模塊化了,不再需要自己動手編寫模塊內(nèi)部的程序。我們只需要調(diào)用這些模塊編程即可,這樣**提高了編程的效率,簡化了調(diào)試的難度。我們甚至不需要知道各個模塊內(nèi)部的程序到底是怎么編寫的,我們只需要知道怎么用就行了。

  函數(shù)的調(diào)用

  可以說,C程序的全部工作都是由各式各樣的函數(shù)完成的。由于采用了函數(shù)模塊式結(jié)構(gòu),所以C語言易于實現(xiàn)結(jié)構(gòu)化程序設(shè)計,使程序的層次結(jié)構(gòu)清晰,便于程序的編寫、閱讀和調(diào)試。

  在C語言中,所有函數(shù)的定義,包括主函數(shù)main在內(nèi),都是“*行”的。也就是說,在一個函數(shù)的函數(shù)體內(nèi),不能再定義另一個函數(shù),即不能嵌套定義。但是函數(shù)之間允許相互調(diào)用,也允許嵌套調(diào)用。習(xí)慣**調(diào)用者稱為主調(diào)函數(shù),被調(diào)用者稱為被調(diào)函數(shù)。函數(shù)還可以自己調(diào)用自己,稱為遞歸調(diào)用。

  此外,main函數(shù)是主函數(shù),它可以調(diào)用其他函數(shù),但不允許被其他函數(shù)調(diào)用。C程序的執(zhí)行總是從main函數(shù)開始的(也是由main結(jié)束的),就算定義的函數(shù)放在main的前面,程序仍然從main開始執(zhí)行。如果執(zhí)行到函數(shù)調(diào)用則執(zhí)行被調(diào)用的函數(shù),完成函數(shù)調(diào)用后再返回到main函數(shù)繼續(xù)往下執(zhí)行,最后由main函數(shù)結(jié)束整個程序。一個C語言程序必須有且僅有一個主函數(shù)main。

  拓展:C語言的'函數(shù)分類

  在C語言中可從不同的角度對函數(shù)分類。

  1.從函數(shù)定義的角度看,函數(shù)可分為庫函數(shù)和用戶定義函數(shù)兩種。

  (1)庫函數(shù)

  由C系統(tǒng)提供,用戶無須定義,也不必在程序中作類型說明,只需在程序前包含有該函數(shù)原型的頭文件即可在程序中直接調(diào)用。在前面各章的例題中反復(fù)用到printf、scanf、getchar、putchar、gets、puts、strcat等函數(shù)均屬此類。

  (2)用戶定義函數(shù)

  由用戶按需要寫的函數(shù)。對于用戶自定義函數(shù),不僅要在程序中定義函數(shù)本身,而且在主調(diào)函數(shù)模塊中還必須對該被調(diào)函數(shù)進行類型說明,然后才能使用。

  2.C語言的函數(shù)兼有其它語言中的函數(shù)和過程兩種功能,從這個角度看,又可把函數(shù)分為有返回值函數(shù)和無返回值函數(shù)兩種。

  (1)有返回值函數(shù)

  此類函數(shù)被調(diào)用執(zhí)行完后將向調(diào)用者返回一個執(zhí)行結(jié)果,稱為函數(shù)返回值。如數(shù)學(xué)函數(shù)即屬于此類函數(shù)。由用戶定義的這種要返回函數(shù)值的函數(shù),必須在函數(shù)定義和函數(shù)說明中明確返回值的類型。

  (2)無返回值函數(shù)

  此類函數(shù)用于完成某項特定的.處理任務(wù),執(zhí)行完成后不向調(diào)用者返回函數(shù)值。這類函數(shù)類似于其它語言的過程。由于函數(shù)無須返回值,用戶在定義此類函數(shù)時可指定它的返回為“空類型”,空類型的說明符為“void”。

  3.從主調(diào)函數(shù)和被調(diào)函數(shù)之間數(shù)據(jù)傳送的角度看又可分為無參函數(shù)和有參函數(shù)兩種。

  (1)無參函數(shù)

  函數(shù)定義、函數(shù)說明及函數(shù)調(diào)用中均不帶參數(shù)。主調(diào)函數(shù)和被調(diào)函數(shù)之間不進行參數(shù)傳送。此類函數(shù)通常用來完成一組指定的功能,可以返回或不返回函數(shù)值。

  (2)有參函數(shù)

  也稱為帶參函數(shù)。在函數(shù)定義及函數(shù)說明時都有參數(shù),稱為形式參數(shù)(簡稱為形參)。在函數(shù)調(diào)用時也必須給出參數(shù),稱為實際參數(shù)(簡稱為實參)。進行函數(shù)調(diào)用時,主調(diào)函數(shù)將把實參的值傳送給形參,供被調(diào)函數(shù)使用。

  4.C語言提供了極為豐富的庫函數(shù),這些庫函數(shù)又可從功能角度作以下分類。

  (1)字符類型分類函數(shù)

  用于對字符按ASCII碼分類:字母,數(shù)字,**字符,分隔符,大小寫字母等。

  (2)轉(zhuǎn)換函數(shù)

  用于字符或字符串的轉(zhuǎn)換;在字符量和各類數(shù)字量(整型,實型等)之間進行轉(zhuǎn)換;在大、小寫之間進行轉(zhuǎn)換。

  (3)目錄路徑函數(shù)

  用于文件目錄和路徑操作。

  (4)診斷函數(shù)

  用于內(nèi)部錯誤檢測。

  (5)圖形函數(shù)

  用于屏幕管理和各種圖形功能。

  (6)輸入輸出函數(shù)

  用于完成輸入輸出功能。

  (7)接口函數(shù)

  用于與DOS,BIOS和硬件的接口。

  (8)字符串函數(shù)

  用于字符串操作和處理。

  (9)內(nèi)存管理函數(shù)

  用于內(nèi)存管理。

  (10)數(shù)學(xué)函數(shù)

  用于數(shù)學(xué)函數(shù)計算。

  (11)日期和時間函數(shù)

  用于日期,時間轉(zhuǎn)換操作。

  (12)進程**函數(shù)

  用于進程管理和**。

  (13)其它函數(shù)

  用于其它各種功能。

  以上各類函數(shù)不僅數(shù)量多,而且有的還需要硬件知識才會使用,因此要想全部掌握則需要一個較長的學(xué)習(xí)過程。應(yīng)首先掌握一些最基本、最常用的函數(shù),再逐步深入。


C語言的函數(shù)分類(擴展2)

——C語言函數(shù)的定義

C語言函數(shù)的定義

  引導(dǎo)語:函數(shù)表示每個輸入值對應(yīng)唯一輸出值的一種對應(yīng)關(guān)系。這種關(guān)系使一個集合里的每一個元素對應(yīng)到另一個(可能相同的)集合里的唯一元素。以下是小編分享給大家的C語言函數(shù)的定義,歡迎參考學(xué)習(xí)!

  一、函數(shù)的定義

  一個函數(shù)包括函數(shù)頭和語句體兩部分。

  函數(shù)頭由下列三不分組成:

  函數(shù)返回值類型

  函數(shù)名

  參數(shù)表

  一個完整的函數(shù)應(yīng)該是這樣的:

  函數(shù)返回值類型 函數(shù)名(參數(shù)表)

  {

  語句體;

  }

  函數(shù)返回值類型可以是前面說到的某個數(shù)據(jù)類型、或者是某個數(shù)據(jù)類型的指針、指向結(jié)構(gòu)的指針、指向數(shù)組的指針。指針概念到以后再介紹。

  函數(shù)名在程序中必須是唯一的,它也遵循標(biāo)識符命名規(guī)則。

  參數(shù)表可以沒有也可以有多個,在函數(shù)調(diào)用的時候,實際參數(shù)將被拷貝到這些變量中。語句體包括局部變量的聲明和可執(zhí)行代碼。

  我們在前面其實已經(jīng)接觸過函數(shù)了,如abs(),sqrt(),我們并不知道它的內(nèi)部是什么,我們只要會使用它即可。

  這一節(jié)主要講解無參數(shù)無返回值的函數(shù)調(diào)用。

  二、函數(shù)的聲明和調(diào)用

  為了調(diào)用一個函數(shù),必須事先聲明該函數(shù)的返回值類型和參數(shù)類型,這和使用變量的道理是一樣的(有一種可以例外,就是函數(shù)的定義在調(diào)用之前,下面再講述)。

  看一個簡單的例子:

  void a(); /*函數(shù)聲明*/

  main()

  {

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

  }

  void a() /*函數(shù)定義*/

  {

  int num;

  scanf(%d,&num);

  printf(%d ,num);

  }

  在main()的前面聲明了一個函數(shù),函數(shù)類型是void型,函數(shù)名為a,無參數(shù)。然后在main()函數(shù)里面調(diào)用這個函數(shù),該函數(shù)的作用很簡單,就是輸入一個整數(shù)然后再顯示它。在調(diào)用函數(shù)之前聲明了該函數(shù)其實它和下面這個程序的功能是一樣的:

  main()

  {

  int num;

  scanf(%d,&num);

  printf(%d ,num);

  }

  可以看出,實際上就是把a()函數(shù)里面的所有內(nèi)容直接搬到main()函數(shù)里面(注意,這句話不是絕對的。)

  我們前面已經(jīng)說了,當(dāng)定義在調(diào)用之前時,可以不聲明函數(shù)。所以上面的程序和下面這個也是等價的:

  void a()

  {

  int num;

  scanf(%d,&num);

  printf(%d ,num);

  }

  main()

  {

  a();

  }

  因為定義在調(diào)用之前,所以可以不聲明函數(shù),這是因為編譯器在編譯的時候,已經(jīng)發(fā)現(xiàn)a是一個函數(shù)名,是無返回值類型無參數(shù)的函數(shù)了。

  那么很多人也許就會想,那我們何必還要聲明這一步呢?我們只要把所有的函數(shù)的定義都放在前面不就可以了嗎?這種想法是不可取的,一個好的程序員總是在程序的開頭聲明所有用到的函數(shù)和變量,這是為了以后好檢查。

  前面說了,在調(diào)用之前,必須先聲明函數(shù),所以下面的做法也是正確的(但在這里我個人并不提倡)。

  main()

  {

  void a();

  a();

  }

  v  oid a()

  {

  int num;

  scanf(%d,&num);

  printf(%d ,num);

  }

  一般來說,比較好的程序書寫順序是,先聲明函數(shù),然后寫主函數(shù),然后再寫那些自定義的函數(shù)。

  既然main()函數(shù)可以調(diào)用別的函數(shù),那么我們自己定義的函數(shù)能不能再調(diào)用其他函數(shù)呢?答案是可以的?聪旅娴睦樱

  void a();

  void b();

  main()

  {

  a();

  }

  void a()

  {

  b();

  }

  void b()

  {

  int num;

  scanf(%d,&num);

  printf(%d ,num);

  }

  三C語言讀書筆記--函數(shù)

  先來看看函數(shù)的一般形式,嘗試寫一個加法的函數(shù):

  思路是這樣的:首先得有頭文件,頭文件之后就得寫主函數(shù),主函數(shù)的內(nèi)部應(yīng)該就是加法的過程,我們將所有加法的語句都拿出來組成一個函數(shù)。代碼如下:

  #include

  int add(int a, int b);

  int main()

  {

  int result = add(3,5);

  printf("sum is %d ", result);

  return 0;

  }

  int add(int a, int b)

  {

  int sum;

  sum = a+b;

  return sum;

  }

  這是一個最簡單的函數(shù),描述了一個加法函數(shù)的定義和調(diào)用的過程。

  int add(int a, int b) 成為函數(shù)的首部。

  有了首部之后,就得考慮一件事情,將首部復(fù)制之后,加上一個分號,粘貼在主函數(shù)之前,作為函數(shù)的原型聲明。試想,我們在主函數(shù)里邊是不是要先定義變量result才能使用result?那么函數(shù)的道理也是一樣的,當(dāng)程序運行到主函數(shù)中語句“int result = add(3,5);”的時候,如果向上沒有尋找到add()的定義,那么編譯器一定就會報錯。所以要不然添加函數(shù)的原型聲明,要不然就將函數(shù)的定義直接寫在主函數(shù)之前。

  函數(shù)首部int add(int a, int b)中的第一個int,即add之前的這個int稱為函數(shù)的類型。表明這個函數(shù)將要返回一個整數(shù)類型的值。這個類型可以是C語言中任何被允許的數(shù)據(jù)類型,包括void,意為無返回值類型,即這個函數(shù)不需要返回任何的值。

  函數(shù)首部int add(int a, int b)中的add稱為函數(shù)的名字,簡稱函數(shù)名。

  函數(shù)首部int add(int a, int b)中int a和int b稱為函數(shù)的形式參數(shù)。這里形式參數(shù)理論上可以有無窮多個,當(dāng)然,現(xiàn)實情況下3-5個就已經(jīng)算是很多了;形式參數(shù)中,即使a和b都是int類型的,也要分別定義才行;形式參數(shù)可以在函數(shù)中直接使用,無須再次定義;形式參數(shù)是用來告訴調(diào)用者,你應(yīng)該給我傳遞來什么樣子的數(shù)據(jù),我好利用你給我的數(shù)據(jù)在函數(shù)中進行計算。

  int add(int a, int b){}中的{}就是函數(shù)體的內(nèi)容了。函數(shù)需要進行的所有的操作都要放在這對大括號中。想必大家也看到了函數(shù)體中最后有一條語句是return,這條語句起到的作用就是返回函數(shù)計算的結(jié)果,在這個程序中就是將加法的結(jié)果返回給主函數(shù)。需要注意的是,函數(shù)的類型和返回值的類型必須嚴(yán)格一致!

  函數(shù)的定義到此為止,接下來講講函數(shù)的調(diào)用方式。只要定義好函數(shù),通過函數(shù)名(實際參數(shù)1,實際參數(shù)2,實際參數(shù)n)這種方式就可以調(diào)用函數(shù)了。例如主函數(shù)中的“int result = add(3,5);”,就是調(diào)用了add函數(shù)。這里,3和5稱為實際參數(shù),即你究竟想讓函數(shù)幫你計算哪兩個數(shù)的加法結(jié)果,你就在這個括號里邊寫哪幾個數(shù)字。必須要嚴(yán)格遵守的`規(guī)定:實際參數(shù)和形式參數(shù)必須一一對應(yīng),數(shù)量應(yīng)該相同,類型也保持一致。

  理解了這幾點之后,一個基本的函數(shù)就已經(jīng)可以寫出來了。接下來來個題目嘗試一下:

  輸入精度e,使用公式求π的近似值,精確到最后一項的絕對值小于e。公式:π=1-1/3+1/5-1/7+...

  代碼:

  //首先得有頭文件

  #include

  #include//后邊要使用到fabs絕對值函數(shù)

  //然后就是主函數(shù)了

  int main(void)

  {

  double pi, e; //定義所需變量

  double f_pi(double e); //原型聲明。函數(shù)名只要符合命名規(guī)則即可 //因為要求小于e,所以也將這個e傳遞過去

  printf("enter e: "); //輸入的提示

  scanf("%lf", &e); // double類型的e對應(yīng)%lf,記住不要缺少&

  printf("pi=%lf ", f_pi(e) ); // 函數(shù)返回的是個double類型的值,直接輸出

  return 0;

  }

  double f_pi(double e) //函數(shù)首部,形參和實參一定要對應(yīng),可以重名

  {

  int denominator, flag;

  double item, sum;

  //請注意“先定義,然后賦初值再使用”的好習(xí)慣!!!

  flag = 1; //負(fù)責(zé)變換**符號的變量

  denominator = 1; //分母初值為1,第一項的1為1/1

  item=1.0; //存放每一項的值

  sum=0;

  while(fabs(item)>=e) //滿足條件就循環(huán)

  {

  item=flag*1.0/denominator; //計算每一項的值。flag**符號

  //1.0必須寫出小數(shù)位,否則整項就變成一個整型值

  sum+=item; //累加

  flag = -flag; //符號**切換

  denominator = denominator + 2;//分母遞增

  }

  return sum; //sum的類型和函數(shù)的類型必須一致

  }

  函數(shù)的定義和調(diào)用其實并不難理解,相信很多人困擾在參數(shù)的傳遞上,接下來總結(jié)一下函數(shù)參數(shù)傳遞的幾種方式:

  正常的參數(shù)調(diào)用,例如int、float、double等一一對應(yīng)的傳遞。

  無參數(shù),也無返回值。例如下列代碼就只是為了輸出一些語句。這種做法在語法上是被允許的,但是并不推薦這么寫。

  void printf()

  {

  printf("hello world!");

  }

  3. 參數(shù)是數(shù)組的名字。我們知道數(shù)組的名字是個地址,那么如果實參是數(shù)組名的話,我們可以將形參設(shè)置成指針,指向?qū)崊鬟f過來的數(shù)組的首地址。

  4. 參數(shù)是指針。如果實參是指針,那么形參肯定也得是指針。保持類型一致即可,然后在函數(shù)內(nèi)部再對指針進行操作。

  5. 參數(shù)是結(jié)構(gòu)體。如果實參是結(jié)構(gòu)體,一般來說我們使用結(jié)構(gòu)體指針來做形參比較合適。

  還是在此分割一下吧,說了這么多,可能很多人在問問什么函數(shù)定義這么麻煩,還要定義函數(shù),直接都寫在main函數(shù)中多方便?

  非也!

  C語言是一個過程化的語言,C語言中的主函數(shù)其實是用來主導(dǎo)程序的進程和數(shù)據(jù)的流動方向的。如果將主函數(shù)寫的過于復(fù)雜,我們閱讀程序的結(jié)構(gòu)就會非常的費力。

  四、C語言中函數(shù)回調(diào)

  什么是回調(diào)函數(shù)?

  簡而言之,回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當(dāng)這個指針被用為調(diào)用它所指向的函數(shù)時,我們就說這是回調(diào)函數(shù)。

  為什么要使用回調(diào)函數(shù)?

  因為可以把調(diào)用者與被調(diào)用者分開。調(diào)用者不關(guān)心誰是被調(diào)用者,所有它需知道的,只是存在一個具有某種特定原型、某些限制條件(如返回值為int)的被調(diào)用函數(shù)。

  如果想知道回調(diào)函數(shù)在實際中有什么作用,先假設(shè)有這樣一種情況,我們要編寫一個庫,它提供了某些排序算法的實現(xiàn),如冒泡排序、快速排序、shell排序、shake排序等等,但為使庫更加通用,不想在函數(shù)中嵌入排序邏輯,而讓使用者來實現(xiàn)相應(yīng)的邏輯;或者,想讓庫可用于多種數(shù)據(jù)類型(int、float、string),此時,該怎么辦呢?可以使用函數(shù)指針,并進行回調(diào)。

  回調(diào)可用于通知機制,例如,有時要在程序中設(shè)置一個計時器,每到一定時間,程序會得到相應(yīng)的通知,但通知機制的實現(xiàn)者對我們的程序一無所知。而此時,就需有一個特定原型的函數(shù)指針,用這個指針來進行回調(diào),來通知我們的程序事件已經(jīng)發(fā)生。

  下面是自己寫的一個簡單的回調(diào)函數(shù),相比其他的那些復(fù)雜的代碼,這個更容易理解:

  #include

  #include

  void perfect(int n)

  {

  int i=1;

  int count=0;

  for(i=1;i

  {

  if(0==n%i)

  {

  count+=i;

  }

  }

  if(count==n)

  printf("%d是完數(shù) ",n);

  else printf("%d不是完數(shù) ",n);

  }

  void myCallback(void (*perfect)(int ),int n)

  {

  perfect(n);

  }

  int main()

  {

  int n;

  printf("請輸入一個正整數(shù) ");

  scanf("%d",&n);

  myCallback(perfect,n);

  return 0;

  }

  五、C語言中的刷新和定位函數(shù)

  一.fflush

  1.fflush的原型如下:

  intfflush(FILE *stream);

  2.當(dāng)需要立即把輸出緩沖區(qū)的數(shù)據(jù)進行物理寫入時,應(yīng)該使用這個函數(shù)。例如調(diào)用fflush函數(shù)保證調(diào)試信息實際打印出來,而不是保存在緩沖區(qū)中直到以后才打印。

  二.定位函數(shù)

  1.在正常情況下,數(shù)據(jù)以線性的方式寫入,這意味著后面寫入的數(shù)據(jù)在文件中的位置是在以前所有寫入數(shù)據(jù)的后面。C同時**隨機訪問I/O,也就是以任意順序訪問文件的不同位置。隨機訪問是通過在讀取或?qū)懭肭,先定位到文件中需要的位置來實現(xiàn)的。

  2.定位函數(shù)原型:

  1>long ftell(FILE*stream);

  2>intfseek(FILE *steam,long offset,intfrom);

  3.ftell函數(shù)返回流的當(dāng)前位置。即:下一個讀取或?qū)懭雽⒁_始的位置距離文件起始位置的偏移量。該函數(shù)允許保存一個文件的當(dāng)前位置。

  1>在二進制流中,這個值就是當(dāng)前位置距離文件起始位置之間的字節(jié)數(shù)。

  2>在文本流中,這個值表示一個位置,但它并不一定準(zhǔn)確地表示當(dāng)前位置和文件起始位置之間的字符數(shù),因為有些系統(tǒng)將對行末字符進行翻譯轉(zhuǎn)換。但是,ftell函數(shù)返回的值總是可以用于fseek函數(shù)中,作為一個距離文件起始位置的偏移量。

  4.fseek函數(shù)允許你一個流中定位。這個函數(shù)將改變下一個讀取或?qū)懭氩僮鞯奈恢。它的?1個參數(shù)是需要改變的流。它的第2和第3個參數(shù)標(biāo)識文件中需要定位的位置。

  1>試圖定位到一個文件的起始位置之前是一個錯誤。定位到文件尾并進行寫入將擴展這個文件。定位到文件尾之后并進行讀取將導(dǎo)致返回一條“到達(dá)文件尾”的信息。

  2>在二進制流中,從SEEK_END進行定位可能不被**,所以應(yīng)該避免。

  3>在文本流中,如果from是SEEK_CUR或SEEK_END,offset必須是零。如果from是SEEK_SET,offset必須是一個從同一個流中以前調(diào)用ftell所返回的值。

  5.用fseek改變一個流的位置會帶來三個副作用。

  1>首先,行末指示字符被**。

  2>其次,如果在fseek之前使用ungetc把一個字符返回到流中,那么這個被退回的字符會被丟棄,因為在定位操作以后,它不再是“下一個字符”。

  3>最后,定位允許你從寫入模式切換到讀取模式,或者回到打開的流以便更新。


C語言的函數(shù)分類(擴展3)

——C語言**ets()函數(shù)知識

C語言**ets()函數(shù)知識

  gets從標(biāo)準(zhǔn)輸入設(shè)備讀字符串函數(shù),其可以無限讀取,不會判斷上限,以回車結(jié)束讀取,所以程序員應(yīng)該確保buffer的空間足夠大,以便在執(zhí)行讀操作時不發(fā)生溢出。下面是C語言**ets()函數(shù)知識,一起來學(xué)習(xí)下吧:

  gets()函數(shù)用于從緩沖區(qū)中讀取字符串,其原型如下:

  char *gets(char *string);

  gets()函數(shù)從流中讀取字符串,直到出現(xiàn)換行符或讀到文件尾為止,最后加上NULL作為字符串結(jié)束。所讀取的字符串暫存在給定的參數(shù)string中。

  【返回值】若成功則返回string的指針,否則返回NULL。

  注意:由于gets()不檢查字符串string的大小,必須遇到換行符或文件結(jié)尾才會結(jié)束輸入,因此容易造成緩存溢出的安全性問題,導(dǎo)致程序崩潰,可以使用fgets()代替。

  【實例】請看下面一個簡單的例子。

  #include

  int main(void)

  {

  char str[10];

  printf("Input a string. ");

  gets(str);

  printf("The string you input is: %s",str); //輸出所有的值,注意a

  }

  如果輸入123456(長度小于10),則輸出結(jié)果為:

  Input a string.

  123456↙

  The string you input is:123456

  如果輸入12345678901234567890(長度大于10),則輸出結(jié)果為:

  Input a string.

  12345678901234567890↙

  The string you input is:12345678901234567890

  同時看到系統(tǒng)提示程序已經(jīng)崩潰。

  如果不能正確使用gets()函數(shù),帶來的危害是很大的,就如上面我們看到的,輸入字符串的長度大于緩沖區(qū)長度時,并沒有截斷,原樣輸出了讀入的字符串,造成程序崩潰。

  考慮到程序安全性和健壯性,建議用fgets()來代替gets()。

  如果你在GCC中使用gets(),編譯無法通過,會提示:

  the 'gets' function is dangerous and shout not be used.

  拓展內(nèi)容:C語言函數(shù)知識點總結(jié)

  總體上必須清楚的:

  1)程序結(jié)構(gòu)是三種:順序結(jié)構(gòu)、選擇結(jié)構(gòu)(分支結(jié)構(gòu))、循環(huán)結(jié)構(gòu)。

  2)讀程序都要從main()入口,然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇),有且只有一個main函數(shù)。

  3)計算機的數(shù)據(jù)在電腦中保存是以二進制的形式.數(shù)據(jù)存放的位置就是他的地址.

  4)bit是位是指為0或者1。 byte是指字節(jié),一個字節(jié)=八個位.

  概念常考到的:

  1、編譯預(yù)處理不是C語言的一部分,不占運行時間,不要加分號。C語言編譯的程序稱為源程序,它以ASCII數(shù)值存放在文本文件中。

  2、define PI 3.1415926;這個寫法是錯誤的,一定不能出現(xiàn)分號。 -

  3、每個C語言程序中main函數(shù)是有且只有一個。

  4、在函數(shù)中不可以再定義函數(shù)。

  5、算法:可以沒有輸入,但是一定要有輸出。

  6、break可用于循環(huán)結(jié)構(gòu)和switch語句。

  7、逗號運算符的級別最低,賦值的級別倒數(shù)第二。

  第一章C語言的基礎(chǔ)知識

  第一節(jié)、對C語言的基礎(chǔ)認(rèn)識

  1、C語言編寫的程序稱為源程序,又稱為編譯單位。

  2、C語言書寫格式是**的,每行可以寫多個語句,可以寫多行。

  3、一個C語言程序有且只有一個main函數(shù),是程序運行的起點。

  第二節(jié)、熟悉vc++

  1、VC是軟件,用來運行寫的C語言程序。

  2、每個C語言程序?qū)懲旰,都是先編譯,后鏈接,最后運行。(.c—.obj—.exe)這個過程中注意.c和.obj文件時無法運行的,只有.exe文件才可以運行。(常考。

  第三節(jié)、標(biāo)識符

  1、標(biāo)識符(必考內(nèi)容):

  合法的'要求是由字母,數(shù)字,下劃線組成。有其它元素就錯了。

  并且第一個必須為字母或則是下劃線。第一個為數(shù)字就錯了

  2、標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符、用戶標(biāo)識符。

  關(guān)鍵字:不可以作為用戶標(biāo)識符號。main define scanf printf都不是關(guān)鍵字。迷惑你的地方If是可以做為用戶標(biāo)識符。因為If中的第一個字母大寫了,所以不是關(guān)鍵字。

  預(yù)定義標(biāo)識符:背誦define scanf printf include。記住預(yù)定義標(biāo)識符可以做為用戶標(biāo)識符。

  用戶標(biāo)識符:基本上每年都考,詳細(xì)請見書上習(xí)題。

  第四節(jié):進制的轉(zhuǎn)換

  十進制轉(zhuǎn)換成二進制、八進制、十六進制。

  二進制、八進制、十六進制轉(zhuǎn)換成十進制。

  第五節(jié):整數(shù)與實數(shù)

  1)C語言只有八、十、十六進制,沒有二進制。但是運行時候,所有的進制都要轉(zhuǎn)換成二進制來進行處理。(考過兩次)

  a、C語言中的八進制規(guī)定要以0開頭。018的數(shù)值是非法的,八進制是沒有8的,逢8進1。

  b、C語言中的十六進制規(guī)定要以0x開頭。

  2)小數(shù)的合法寫法:C語言小數(shù)點兩邊有一個是零的話,可以不用寫。

  1.0在C語言中可寫成1.

  0.1在C語言中可以寫成.1。

  3)實型數(shù)據(jù)的合法形式:

  a、2.333e-1就是合法的,且數(shù)據(jù)是2.333×10-1。

  b、考試口訣:e前e后必有數(shù),e后必為整數(shù)。請結(jié)合書上的例子。

  4)整型一般是4個字節(jié),字符型是1個字節(jié),雙精度一般是8個字節(jié):

  long int x;表示x是長整型。

  unsigned int x;表示x是無符號整型。

  第六、七節(jié):算術(shù)表達(dá)式和賦值表達(dá)式

  核心:表達(dá)式一定有數(shù)值!

  1、算術(shù)表達(dá)式:+,-,*,/,%

  考試一定要注意:“/”兩邊都是整型的話,結(jié)果就是一個整型。 3/2的結(jié)果就是1.

  “/”如果有一邊是小數(shù),那么結(jié)果就是小數(shù)。 3/2.0的結(jié)果就是0.5

  “%”符號請一定要注意是余數(shù),考試最容易算成了除號。)%符號兩邊要求是整數(shù)。不是整數(shù)就錯了。[注意!!!]

  2、賦值表達(dá)式:表達(dá)式數(shù)值是最左邊的數(shù)值,a=b=5;該表達(dá)式為5,常量不可以賦值。

  1、int x=y=10:錯啦,定義時,不可以連續(xù)賦值。

  2、int x,y;

  x=y=10;對滴,定義完成后,可以連續(xù)賦值。

  3、賦值的左邊只能是一個變量。

  4、int x=7.7;對滴,x就是7

  5、float y=7;對滴,x就是7.0

  3、復(fù)合的賦值表達(dá)式:

  int a=2;

  a*=2+3;運行完成后,a的值是12。

  一定要注意,首先要在2+3的上面打上括號。變成(2+3)再運算。

  4、自加表達(dá)式:

  自加、自減表達(dá)式:假設(shè)a=5,++a(是為6),a++(為5);

  運行的機理:++a是先把變量的數(shù)值加上1,然后把得到的數(shù)值放到變量a中,然后再用這個++a表達(dá)式的數(shù)值為6,而a++是先用該表達(dá)式的數(shù)值為5,然后再把a的數(shù)值加上1為6,

  再放到變量a中。進行了++a和a++后在下面的程序中再用到a的話都是變量a中的6了。

  考試口訣:++在前先加后用,++在后先用后加。

  5、逗號表達(dá)式:

  優(yōu)先級別最低。表達(dá)式的數(shù)值逗號最右邊的那個表達(dá)式的數(shù)值。

 。2,3,4)的表達(dá)式的數(shù)值就是4。

  z=(2,3,4)(整個是賦值表達(dá)式)這個時候z的值為4。(有點難度哦!)

  z= 2,3,4(整個是逗號表達(dá)式)這個時候z的值為2。

  補充:

  1、空語句不可以隨意執(zhí)行,會導(dǎo)致邏輯錯誤。

  2、注釋是最近幾年考試的重點,注釋不是C語言,不占運行時間,沒有分號。不可以嵌套!

  3、**類型轉(zhuǎn)換:

  一定是(int)a不是int(a),注意類型上一定有括號的。

  注意(int)(a+b)和(int)a+b的區(qū)別。前是把a+b轉(zhuǎn)型,后是把a轉(zhuǎn)型再加b。

  4、三種取整丟小數(shù)的情況:

 。、int a =1.6;

 。、(int)a;

 。、1/2;3/2;

  第八節(jié)、字符

  1)字符數(shù)據(jù)的合法形式::

  ‘1’是字符占一個字節(jié),”1”是字符串占兩個字節(jié)(含有一個結(jié)束符號)。

  ‘0’的ASCII數(shù)值表示為48,’a’的ASCII數(shù)值是97,’A’的ASCII數(shù)值是65。

  一般考試表示單個字符錯誤的形式:’65’ “1”

  字符是可以進行算術(shù)運算的,記。骸0’-0=48

  大寫字母和小寫字母轉(zhuǎn)換的方法:‘A’+32=’a’相互之間一般是相差32。

  2)轉(zhuǎn)義字符:

  轉(zhuǎn)義字符分為一般轉(zhuǎn)義字符、八進制轉(zhuǎn)義字符、十六進制轉(zhuǎn)義字符。

  一般轉(zhuǎn)義字符:背誦/0、、 ’、 ”、 。

  八進制轉(zhuǎn)義字符:‘141’是合法的,前導(dǎo)的0是不能寫的。

  十六進制轉(zhuǎn)義字符:’x6d’才是合法的,前導(dǎo)的0不能寫,并且x是小寫。

  3、字符型和整數(shù)是近親:兩個具有很大的相似之處

  char a = 65 ;

  printf(“%c”, a);得到的輸出結(jié)果:a

  printf(“%d”, a);得到的輸出結(jié)果:65

  第九節(jié)、位運算

  1)位運算的考查:會有一到二題考試題目。

  總的處理方法:幾乎所有的位運算的題目都要按這個流程來處理(先把十進制變成二進制再變成十進制)。

  例1:char a = 6, b;

  b = a<<2;這種題目的計算是先要把a的十進制6化成二進制,再做位運算。

  例2:一定要記住,異或的位運算符號” ^ ”。0異或1得到1。

  0異或0得到0。兩個女的生不出來。

  考試記憶方法:一男(1)一女(0)才可以生個小孩(1)。

  例3:在沒有舍去數(shù)據(jù)的時候,<<左移一位表示乘以2;>>右移一位表示除以2。


C語言的函數(shù)分類(擴展4)

——關(guān)干垃圾分類的名言

1、回收廢棄電池,創(chuàng)造美好家園。

2、垃圾分類做得好,明天生活會更好。

3、舉手之勞,資源永續(xù)的源泉。

4、謝謝您的配合,我為您的風(fēng)度而贊美。

5、無論春夏和秋冬,垃圾分類在心中。

6、請不要亂扔我,我會污染環(huán)境。

7、垃圾分類,舉手之勞。

8、就算是扔垃圾,也能小窺操行之高低。

9、做好垃圾分類,讓我們一起來為地球多添一抹綠色。

10、同譜垃圾分類曲,共唱世博**歌。

11、千家萬戶垃圾分類,文明港城更加潔美。

12、眾人一條分類心,垃圾也能變成金。

13、多謝您的配合,我為您的風(fēng)度而贊美。

14、未來人類的文明,將是綠色文明。

15、垃圾處理有法寶,分門別類利環(huán)保。

16、垃圾分類,守護家園。

17、給電池一個安全的歸宿,給我們自己一個清潔的世界。

18、該出手時就出手,該分類時就分類。

19、分類讓垃圾變寶,**讓上海微笑。

20、千家萬戶垃圾分類,文明城市更加潔美。

21、我雖渺小,但意義重大。

22、垃圾要分類,資源要利用。

23、垃圾分類,人人有責(zé)。

24、為垃圾分家,給城市減負(fù)。

25、垃圾分類有講究,紅黑綠藍(lán)要分清。

26、積極參與垃圾分類,創(chuàng)建優(yōu)美社區(qū)環(huán)境。

27、循環(huán),讓地球生生不息。

28、垃圾分類從我做起,**港城因你美麗。

29、垃圾分類一小步,健康禮貌一大步。

30、細(xì)節(jié)決定成與敗,分類決定廢與寶。

31、簡單的動作,造就美好環(huán)境。

32、給電池一個安全的歸宿,給自己一個清潔的世界。

33、垃圾也有寶,分類不可少。

34、垃圾有分類,回收不浪費。

35、隨手一分,美化十分。

36、播下一個行動,你將收獲一份美麗。

37、紅藍(lán)黃綠要看清,垃圾分類。

38、人以群分,物以類聚。

39、干濕垃圾分類裝,有害垃圾定點放。

40、參與垃圾分類,保護地球家園,共創(chuàng)美好世界。

41、俯身彎腰給垃圾分類,抬頭挺胸為校園增輝。

42、廢物,寶物,一息之中;垃圾,資源,一念之間。

43、倒垃圾,先分類,環(huán)保節(jié)能共創(chuàng)造,紡服美麗共受益。

44、干濕要分類,有害單獨放,資源重復(fù)用,生活更健康。

45、垃圾分類最光榮,常人也能當(dāng)英雄。

46、適量點菜,餐后打包,倡導(dǎo)綠色消費。

47、垃圾各就各位,文明事半功倍。

48、垃圾分類一小步,低碳生活一大步。

49、禮貌餐飲,潔凈家園。

50、垃圾科學(xué)分類,文明你我同行。

51、要是垃圾變?yōu)閷,分類回收不可少?/p>

52、垃圾分分類,大家都不累。

53、垃圾要分類,生活要品位。

54、垃圾分一分,環(huán)境美一點。

55、有了垃圾分類箱,垃圾回家方便多。

56、舉手之勞,好處無限。

57、垃圾分一分,環(huán)境美十分。

58、垃圾分類靠大家,健**活你我他。

59、垃圾和人一樣,應(yīng)該各有所歸。

60、垃圾分分類,一點也不累。

61、呵護我們的環(huán)境,與萬物共享尊榮。


C語言的函數(shù)分類(擴展5)

——什么是C語言數(shù)組

什么是C語言數(shù)組

  在程序設(shè)計中,為了處理方便, 把具有相同類型的若干變量按有序的形式**起來。這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。在C語言中, 數(shù)組屬于構(gòu)造數(shù)據(jù)類型。一個數(shù)組可以分解為多個數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型。以下是小編為大家搜索整理的什么是C語言數(shù)組,希望能給大家?guī)韼椭?/p>

  本章介紹數(shù)值數(shù)組和字符數(shù)組,其余的在以后各章陸續(xù)介紹。數(shù)組類型說明 在C語言中使用數(shù)組必須先進行類型說明。 數(shù)組說明的一般形式為: 類型說明符 數(shù)組名 [常量表達(dá)式],……; 其中,類型說明符是任一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型。 數(shù)組名是用戶定義的數(shù)組標(biāo)識符。 方括號中的常量表達(dá)式表示數(shù)據(jù)元素的個數(shù),也稱為數(shù)組的長度。

  例如:

  int a[10]; 說明整型數(shù)組a,有10個元素。

  float b[10],c[20]; 說明實型數(shù)組b,有10個元素,實型數(shù)組c,有20個元素。

  char ch[20]; 說明字符數(shù)組ch,有20個元素。

  對于數(shù)組類型說明應(yīng)注意以下幾點:

  1.數(shù)組的類型實際上是指數(shù)組元素的取值類型。對于同一個數(shù)組,其所有元素的數(shù)據(jù)類型都是相同的。

  2.數(shù)組名的書寫規(guī)則應(yīng)符合標(biāo)識符的書寫規(guī)定。

  3.數(shù)組名不能與其它變量名相同,例如:

  void main()

  {

  int a;

  float a[10];

  ……

  }

  是錯誤的。

  4.方括號中常量表達(dá)式表示數(shù)組元素的個數(shù),如a[5]表示數(shù)組a有5個元素。但是其下標(biāo)從0開始計算。因此5個元素分別為a[0],a[1],a[2],a[3],a[4]。

  5.不能在方括號中用變量來表示元素的個數(shù), 但是可以是符號常數(shù)或常量表達(dá)式。例如:

  #define FD 5

  void main()

  {

  int a[3+2],b[7+FD];

  ……

  }

  是合法的。但是下述說明方式是錯誤的。

  void main()

  {

  int n=5;

  int a[n];

  ……

  }

  6.允許在同一個類型說明中,說明多個數(shù)組和多個變量。

  例如: int a,b,c,d,k1[10],k2[20];

  數(shù)組元素的表示方法

  數(shù)組元素是組成數(shù)組的基本單元。數(shù)組元素也是一種變量, 其標(biāo)識方法為數(shù)組名后跟一個下標(biāo)。 下標(biāo)表示了元素在數(shù)組中的順序號。數(shù)組元素的一般形式為: 數(shù)組名[下標(biāo)] 其中的下標(biāo)只能為整型常量或整型表達(dá)式。如為小數(shù)時,C編譯將自動取整。例如,a[5],a[i+j],a[i++]都是合法的數(shù)組元素。 數(shù)組元素通常也稱為下標(biāo)變量。必須先定義數(shù)組, 才能使用下標(biāo)變量。在C語言中只能逐個地使用下標(biāo)變量, 而不能一次引用整個數(shù)組。 例如,輸出有10 個元素的數(shù)組必須使用循環(huán)語句逐個輸出各下標(biāo)變量:

  for(i=0; i<10; i++) printf("%d",a[i]); 而不能用一個語句輸出整個數(shù)組,下面的寫法是錯誤的: printf("%d",a);

  void main()

  {

  int i,a[10];

  for(i=0;i<10;)

  a[i++]=2*i+1;

  for(i=9;i>=0;i--)

  printf("%d",a[i]);

  printf(" %d %d ",a[5.2],a[5.8]);} for(i=0;i<10;)

  a[i++]=2*i+1; for(i=9;i>=0;i--)

  printf("%d",a[i]); printf(" %d %d ",a[5.2],a[5.8]);

  本例中用一個循環(huán)語句給a數(shù)組各元素送入奇數(shù)值,然后用第二個循環(huán)語句從大到小輸出各個奇數(shù)。在第一個 for語句中,表達(dá)式3省略了。在下標(biāo)變量中使用了表達(dá)式i++,用以修改循環(huán)變量。當(dāng)然第二個for語句也可以這樣作, C語言允許用表達(dá)式表示下標(biāo)。 程序中最后一個printf語句輸出了兩次a[5]的值, 可以看出當(dāng)下標(biāo)不為整數(shù)時將自動取整。數(shù)組的賦值給數(shù)組賦值的方法除了用賦值語句對數(shù)組元素逐個賦值外, 還可采用初始化賦值和動態(tài)賦值的方法。數(shù)組初始化賦值數(shù)組初始化賦值是指在數(shù)組說明時給數(shù)組元素賦予初值。 數(shù)組初始化是在編譯階段進行的。這樣將減少運行時間,提高效率。

  初始化賦值的一般形式為: static 類型說明符 數(shù)組名[常量表達(dá)式]={值,值……值}; 其中static表示是靜態(tài)存儲類型, C語言規(guī)定只有靜態(tài)存儲數(shù)組和外部存儲數(shù)組才可作初始化賦值(有關(guān)靜態(tài)存儲,外部存儲的概念在第五章中介紹)。在{ }中的各數(shù)據(jù)值即為各元素的初值, 各值之間用逗號間隔。例如: static int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相當(dāng)于a[0]=0;a[1]=1...a[9]=9;

  C語言對數(shù)組的初始賦值還有以下幾點規(guī)定:

  1.可以只給部分元素賦初值。當(dāng){ }中值的個數(shù)少于元素個數(shù)時,只給前面部分元素賦值。例如: static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而后5個元素自動賦0值。

  2.只能給元素逐個賦值,不能給數(shù)組整體賦值。 例如給十個元素全部賦1值,只能寫為: static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為: static int a[10]=1;

  3.如不給可初始化的數(shù)組賦初值,則全部元素均為0值。

  4.如給全部元素賦值,則在數(shù)組說明中, 可以不給出數(shù)組元素的個數(shù)。例如: static int a[5]={1,2,3,4,5};可寫為: static int a[]={1,2,3,4,5};動態(tài)賦值可以在程序執(zhí)行過程中,對數(shù)組作動態(tài)賦值。 這時可用循環(huán)語句配合scanf函數(shù)逐個對數(shù)組元素賦值。

  void main()

  {

  int i,max,a[10];

  printf("input 10 numbers: ");

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

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

  max=a[0];

  for(i=1;i<10;i++)

  if(a[i]>max) max=a[i];

  printf("maxmum=%d ",max);

  }

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

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

  max=a[0];

  for(i=1;i<10;i++)

  if(a[i]>max) max=a[i];

  printf("maxmum=%d ",max);

  本例程序中第一個for語句逐個輸入10個數(shù)到數(shù)組a中。 然后把a[0]送入max中。在第二個for語句中,從a[1]到a[9]逐個與max中的內(nèi)容比較,若比max的值大,則把該下標(biāo)變量送入max中,因此max總是在已比較過的下標(biāo)變量中為最大者。比較結(jié)束,輸出max的值。

  void main()

  {

  int i,j,p,q,s,a[10];

  printf(" input 10 numbers: ");

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

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

  for(i=0;i<10;i++){

  p=i;q=a[i];

  for(j=i+1;j<10;j++)

  if(q

  if(i!=p)

  {s=a[i];

  a[i]=a[p];

  a[p]=s; }

  printf("%d",a[i]);

  }

  }

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

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

  for(i=0;i<10;i++){

  p=i;q=a[i];

  for(j=i+1;j<10;j++)

  if(q

  if(i!=p)

  { s=a[i];

  a[i]=a[p];

  a[p]=s; }

  printf("%d",a[i]);

  }

  本例程序中用了兩個并列的for循環(huán)語句,在第二個for 語句中又嵌套了一個循環(huán)語句。第一個for語句用于輸入10個元素的初值。第二個for語句用于排序。本程序的排序采用逐個比較的方法進行。在i次循環(huán)時,把第一個元素的下標(biāo)i賦于p,而把該下標(biāo)變量值a[i]賦于q。然后進入小循環(huán),從a[i+1]起到最后一個元素止逐個與a[i]作比較,有比a[i]大者則將其下標(biāo)送p,元素值送q。 一次循環(huán)結(jié)束后,p即為最大元素的下標(biāo),q則為該元素值。若此時i≠p,說明p,q值均已不是進入小循環(huán)之前所賦之值,則交換a[i]和a[p]之值。 此時a[i]為已排序完畢的元素。輸出該值之后轉(zhuǎn)入下一次循環(huán)。對i+1以后各個元素排序。

  二維數(shù)組

  前面介紹的數(shù)組只有一個下標(biāo),稱為一維數(shù)組, 其數(shù)組元素也稱為單下標(biāo)變量。在實際問題中有很多量是二維的或多維的, 因此C語言允許構(gòu)造多維數(shù)組。多維數(shù)組元素有多個下標(biāo), 以標(biāo)識它在數(shù)組中的位置,所以也稱為多下標(biāo)變量。 本小節(jié)只介紹二維數(shù)組,多維數(shù)組可由二維數(shù)組類推而得到。二維數(shù)組類型說明二維數(shù)組類型說明的一般形式是:

  類型說明符 數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]…;

  其中常量表達(dá)式1表示第一維下標(biāo)的長度,常量表達(dá)式2 表示第二維下標(biāo)的長度。例如:

  int a[3][4]; 說明了一個三行四列的數(shù)組,數(shù)組名為a,其下標(biāo)變量的類型為整型。該數(shù)組的下標(biāo)變量共有3×4個,即: a[0][0],a[0][1],a[0][2],a[0][3]

  a[1][0],a[1][1],a[1][2],a[1][3]

  a[2][0],a[2][1],a[2][2],a[2][3]

  二維數(shù)組在概念上是二維的,即是說其下標(biāo)在兩個方向上變化, 下標(biāo)變量在數(shù)組中的位置也處于一個*面之中, 而不是象一維數(shù)組只是一個向量。但是,實際的硬件存儲器卻是連續(xù)編址的, 也就是說存儲器單元是按一維線性排列的。 如何在一維存儲器中存放二維數(shù)組,可有兩種方式:一種是按行排列, 即放完一行之后順次放入第二行。另一種是按列排列, 即放完一列之后再順次放入第二列。在C語言中,二維數(shù)組是按行排列的。 在圖4.1中,按行順次存放,先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四個元素也是依次存放。由于數(shù)組a說明為

  int類型,該類型占兩個字節(jié)的內(nèi)存空間,所以每個元素均占有兩個 字節(jié)(圖中每一格為一字節(jié))。

  二維數(shù)組元素的表示方法

  二維數(shù)組的元素也稱為雙下標(biāo)變量,其表示的形式為: 數(shù)組名[下標(biāo)][下標(biāo)] 其中下標(biāo)應(yīng)為整型常量或整型表達(dá)式。例如: a[3][4] 表示a數(shù)組三行四列的元素。下標(biāo)變量和數(shù)組說明在形式中有些相似,但這兩者具有完全不同的含義。 數(shù)組說明的方括號中給出的是某一維的長度,即可取下標(biāo)的最大值; 而數(shù)組元素中的下標(biāo)是該元素在數(shù)組中的位置標(biāo)識。前者只能是常量, 后者可以是常量,變量或表達(dá)式。

  一個學(xué)習(xí)小組有5個人,每個人有三門課的考試成績。求全組分科的*均成績和各科總*均成績。

  課程 成績姓名 Math C DBASE

  張 80 75 92

  王 61 65 71

  李 59 63 70

  趙 85 87 90

  周 76 77 85

  可設(shè)一個二維數(shù)組a[5][3]存放五個人三門課的成績。再設(shè)一個一維數(shù)組v[3]存放所求得各分科*均成績,設(shè)變量l為全組各科總*均成績。編程如下:

  void main()

  {

  int i,j,s=0,l,v[3],a[5][3];

  printf("input score ");

  for(i=0;i<3;i++){

  for(j=0;j<5;j++)

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

  s=s+a[j][i];}

  v[i]=s/5;

  s=0;

  }

  l=(v[0]+v[1]+v[2])/3;

  printf("math:%d c languag:%d dbase:%d ",v[0],v[1],v[2]);

  printf("total:%d ",l);

  } for(i=0;j<3;i++)

  for(j=0;j<5;j++)

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

  s=s+a[j][i];}

  v[i]=s/5;

  s=0;

  }

  l=(v[0]+v[1]+v[2])/3;

  程序中首先用了一個雙重循環(huán)。 在內(nèi)循環(huán)中依次讀入某一門課程的各個學(xué)生的成績,并把這些成績累加起來, 退出內(nèi)循環(huán)后再把該累加成績除以5送入v[i]之中,這就是該門課程的*均成績。外循環(huán)共循環(huán)三次,分別求出三門課各自的*均成績并存放在v數(shù)組之中。退出外循環(huán)之后,把v[0],v[1],v[2]相加除以3即得到各科總*均成績。最后按題意輸出各個成績。

  二維數(shù)組的初始化

  二維數(shù)組初始化也是在類型說明時給各下標(biāo)變量賦以初值。 二維數(shù)組可按行分段賦值,也可按行連續(xù)賦值。 例如對數(shù)組a[5][3]:

  1.按行分段賦值可寫為static int a[5][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} };

  2.按行連續(xù)賦值可寫為static int a[5][3]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85 };

  這兩種賦初值的結(jié)果是完全相同的。

  void main()


C語言的函數(shù)分類(擴展6)

——關(guān)于分?jǐn)?shù)的意義和分類

關(guān)于分?jǐn)?shù)的意義和分類

  分?jǐn)?shù)原是指整體的一部分,或更一般地,任何數(shù)量相等的部分。下面是小編收集整理的關(guān)于分?jǐn)?shù)的意義和分類,希望大家喜歡。

  1、分?jǐn)?shù)的意義

  把單位“1”*均分成若干份,表示這樣的一份或者幾份的數(shù)叫做分?jǐn)?shù)。

  在分?jǐn)?shù)里,中間的橫線叫做分?jǐn)?shù)線;分?jǐn)?shù)線下面的數(shù),叫做分母,表示把單位“1”*均分成多少份;分?jǐn)?shù)線下面的數(shù)叫做分子,表示有這樣的多少份。

  把單位“1”*均分成若干份,表示其中的一份的數(shù),叫做分?jǐn)?shù)單位。

  2、分?jǐn)?shù)的分類

  真分?jǐn)?shù):分子比分母小的分?jǐn)?shù)叫做真分?jǐn)?shù)。真分?jǐn)?shù)小于1。

  假分?jǐn)?shù):分子比分母大或者分子和分母相等的分?jǐn)?shù),叫做假分?jǐn)?shù)。假分?jǐn)?shù)大于或等于1。

  帶分?jǐn)?shù):假分?jǐn)?shù)可以寫成整數(shù)與真分?jǐn)?shù)合成的數(shù),通常叫做帶分?jǐn)?shù)。

  拓展

  一、教材分析

 。ㄒ唬┙虒W(xué)內(nèi)容:

  九年義務(wù)教育小學(xué)數(shù)學(xué)教材第十冊第四單元的第一課時

 。ǘ┙虒W(xué)目標(biāo):

  1.讓學(xué)生在說一說、分一分、畫一畫、寫一寫、折一折、涂一涂等體驗活動中理解單位“1”,感受并理解分?jǐn)?shù)的意義,培養(yǎng)學(xué)生實際操作的能力和抽象概括的能力。

  2.在實踐中培養(yǎng)學(xué)生收集、處理信息的能力以及自主探究、合作學(xué)習(xí)的能力。

  3.通過創(chuàng)設(shè)互相協(xié)作,積極探索的學(xué)習(xí)情境,培養(yǎng)學(xué)生的學(xué)習(xí)興趣,并滲透數(shù)學(xué)于實際生活的思想。

 。ㄈ┙虒W(xué)重點:

  建立單位“1”的概念,理解分?jǐn)?shù)的意義。

 。ㄋ模┙虒W(xué)難點:

  理解單位“1”的概念。

  二、教學(xué)方法

  學(xué)生認(rèn)識事物是由易到難,由淺入深循序漸進的。學(xué)生雖然在前面的學(xué)習(xí)中對分?jǐn)?shù)有了初步的認(rèn)識,但要使學(xué)生理解單位“1”的概念,進一步明確分?jǐn)?shù)的意義,必須遵循他們的認(rèn)知規(guī)律。因此,本課堅持以學(xué)生為主體,教師為主導(dǎo)的原則。采用啟發(fā)誘導(dǎo)、探究等教學(xué)法,并穿插自學(xué)、練習(xí)。通過動手操作、直觀演示,讓學(xué)生充分感知,再經(jīng)過比較、歸納,突破許多物體組成的一個整體也可以看作單位“1”這一難點,層層推進、步步深入,并在此基礎(chǔ)上理解分?jǐn)?shù)的意義,培養(yǎng)了學(xué)生的多種能力。

  三、學(xué)法指導(dǎo)

  學(xué)生學(xué)習(xí)過程的始終,都離不開學(xué)法。在本課的教學(xué)中學(xué)法的指導(dǎo)寓于教學(xué)過程的始終。

  (一)教給學(xué)生探索知識的方法。

  教師為學(xué)生提供了一些動手的材料8顆棋子、2塊糖、10粒豆子、一幅熊貓圖等,讓學(xué)生用這些學(xué)具以小組合作的形式將他們分一分、畫一畫、折一折表示1/2。然后觀察、比較他們的相同點和不同點,領(lǐng)悟出單位“1”不僅僅可以是一個物體、一個計量單位、還可以是許多物體組成的一個整體。達(dá)到感性認(rèn)識到理性認(rèn)識的升華。

 。ǘ┮龑(dǎo)學(xué)生在獲取知識的同時,掌握對事物本質(zhì)進行歸納總結(jié)的方法。

  學(xué)生在在動手操作、比較之后歸納出了單位“1”也可以是許多物體組成的一個整體。讓學(xué)生進行2次操作體會由于分的份數(shù)不同,取的份數(shù)不同,產(chǎn)生的分?jǐn)?shù)也不同,在此基礎(chǔ)上進一步明確分?jǐn)?shù)的意義概括出:把單位“1”*均分成若干份,表示這樣的一份或幾份的數(shù),叫做分?jǐn)?shù)。

  四、教學(xué)程序

  (一)展示資料,了解分?jǐn)?shù)的產(chǎn)生

  通過談話自然引入,讓學(xué)生通過**、把自己知道的說給大家聽。使學(xué)生有滿足感,產(chǎn)生對學(xué)習(xí)分?jǐn)?shù)的興趣,感受到分?jǐn)?shù)產(chǎn)生的必要性。

  (二)喚醒已知、探究未知

  1.通過回顧舊知,為學(xué)習(xí)新知作準(zhǔn)備,激發(fā)學(xué)生的學(xué)習(xí)動機,調(diào)動學(xué)生的.學(xué)習(xí)積極性。

  第一次動手操作理解單位“1”的含義。

  (1)教師提出:1/2除了可以表示把一個蘋果*均分成2份,取其中的1份,還可以表示什么呢?為了便于同學(xué)們研究問題,老師為學(xué)生提供了一些動手材料(8顆圍棋子、1米長的繩子、一張圓形紙片、一幅熊貓圖等),以小組合作的形式將他們分一分、畫一畫、折一折,用這些學(xué)具試著表示1/2。

  (2)集體交流、共享成果

  各組選派**到實物投影儀前,向大家展示自己的操作方法及成果。

  (3)重點、難點問題教師利用多**技術(shù)予以突破。

  如:學(xué)生用8顆棋子、6只熊貓表示1/2這個分?jǐn)?shù)后,教師出示,通過直觀演示、使學(xué)生明確單位“1”可以是一個圓、一個計量單位、還可以是許多物體組成的一個整體。

  (4)引導(dǎo)歸納,通過比較相同與不同,讓學(xué)生親自去發(fā)現(xiàn),去學(xué)習(xí),去探究,體會、理解單位“1”并結(jié)合實際談單位“1”,體會生活中的單位“1”

  2.再次操作,領(lǐng)悟分?jǐn)?shù)意義

  (1)再次操作,讓學(xué)生用學(xué)具表示出不同的分?jǐn)?shù),在操作中讓學(xué)生體會到同樣是這些學(xué)具卻表示出了不同的分?jǐn)?shù),從而得出分的份數(shù)不同,取的份數(shù)不同,分?jǐn)?shù)也就不同,為概括分?jǐn)?shù)的意義作準(zhǔn)備。同時,在操作過程中,培養(yǎng)了學(xué)生的創(chuàng)新思維,

  (2)引導(dǎo)學(xué)生試著概括分?jǐn)?shù)的意義

  (3)閱讀課本86頁什么叫分?jǐn)?shù),自學(xué)分?jǐn)?shù)各部分所表示的'含義。

  (4)鞏固分?jǐn)?shù)的意義和分子分母的含義。

  (三)反饋練習(xí)

  這一環(huán)節(jié),教師根據(jù)學(xué)生反饋的信息及時調(diào)控教學(xué),使學(xué)生切實掌握知識,達(dá)到訓(xùn)練和提高的目的。為了能使面向全體和因材施教相結(jié)合,讓每一位學(xué)生獲得成功,我設(shè)計下列練習(xí):

  1.用分?jǐn)?shù)表示下面各圖中的涂色部分

  2.用下面的分?jǐn)?shù)表示圖中的涂色部分對嗎?為什么?

  以上兩道題是基本練習(xí)題,目的是:突出本節(jié)課的重點、難點、深化對分?jǐn)?shù)意義的理解。


C語言的函數(shù)分類(擴展7)

——C語言數(shù)組的定義及引用

C語言數(shù)組的定義及引用

  數(shù)組是在程序設(shè)計中,為了處理方便, 把具有相同類型的若干變量按有序的形式**起來的一種形式。以下是小編分享給大家的C語言數(shù)組的定義及引用相關(guān)內(nèi)容,希望大家喜歡!

  1.1 一維數(shù)組的定義、初始化和引用

  1.一維數(shù)組的定義方式為:

  類型說明符 數(shù)組名[常量表達(dá)式]

  (1)數(shù)組名的命名方法與變量名相同,遵循標(biāo)識符命名規(guī)則;

  (2)數(shù)組是用方括號括起來的常量表達(dá)式,不能用圓括號;

  (3)常量表達(dá)式表示數(shù)組元素的個數(shù),即數(shù)組的長度,數(shù)組的下標(biāo)從0開始,下標(biāo)的最大值為:常量表達(dá)式-1;

  (4)常量表達(dá)式中可以包括常量和符號常量,不能包括變量。

  可以用賦值語句或輸入語句使數(shù)組中的元素得到值,但要占用運行時間?梢允箶(shù)組在運行之前初始化,即在編譯階段使之得到初值。

  2.對數(shù)組初始化可以用以下方法實現(xiàn):

  (1)在定義數(shù)組時對數(shù)組元素賦以初值。如:

  static int a[10]={0,1,2,3,4,5,6,7,8,9};

  經(jīng)過上面的定義和初始化后,a[0]=0,a[1]=1,…,a[9]=9。

  (2)初始化時可以只對一部分元素賦初值。例如:

  static int a[10]={0,1,2,3,4};

  定義的數(shù)組有10個元素,但只對其中前5個元素賦了初值,后5個元素初值為0。

  (3)如果想使一個數(shù)組的元素值全部為0,可以用下面的方法:

  static int a[10]={0,0,0,0,0,0,0,0,0,0};

  不能用:

  static int a[10]={0*10};

  如果對static型數(shù)組不賦初值,系統(tǒng)會對定義的所有數(shù)組元素自動賦以0值。

  (4)在對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度。

  3.一維數(shù)組的引用方法是:

  C語言規(guī)定不能一次引用整個數(shù)組,引用時只能逐個元素引用,數(shù)組元素的表示形式為:

  數(shù)組名[下標(biāo)]

  下標(biāo)可以是整型常量或整型表達(dá)式。如:

  a[0]=a[5]+a[7]-a[2*3];

  1.2 二維數(shù)組的定義、初始化和引用

  1.二維數(shù)組定義的一般形式為

  類型說明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]

  C語言采用上述定義方法,我們可以把二維數(shù)組看做是一種特殊的一維數(shù)組:它的元素又是一維數(shù)組。在C語言中,二維數(shù)組中元素的排列順序是:先按行存放,再按列存放,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素。

  2.二維數(shù)組的初始化:二維數(shù)組可以用下面的方法初始化:

  (1)分行給二維數(shù)組賦初值。如:

  static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

  以上賦值把第一個花括號內(nèi)的數(shù)據(jù)賦給第一行元素,第二個花括號內(nèi)數(shù)據(jù)賦給第二元素…,即按行賦值。

  (2)可以將所有的數(shù)據(jù)寫在一個花括號內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x值。

  (3)可以對數(shù)組的部分元素賦初值。如:

  static int a[3][4]={{1},{5},{9}};

  以上賦值的結(jié)果是:數(shù)組第一列的元素分別賦了初值1,5,9,其余元素的值都是0。

  (4)如果對二維數(shù)組的全部元素都賦初值,則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省。

  3.二維數(shù)組的'引用:二維數(shù)組的元素可以表示為:

  數(shù)組[下標(biāo)][下標(biāo)]

  在引用二維數(shù)組時,必須是單個元素,不能是整個數(shù)組名。下標(biāo)可以是一個表達(dá)式,但不能是變量。如果下標(biāo)是一個表達(dá)式,注意表達(dá)式的值不能超出數(shù)組定義的上、下限。

  指針數(shù)組說明的一般形式為:

  類型說明符 *數(shù)組名[數(shù)組長度]

  其中類型說明符為指針值所指向的變量的類型。例如:

  int *pa[3]

  表示pa是一個指針數(shù)組,它有三個數(shù)組元素,每個元素值都是一個指針,指向整型變量。

  【例10-33】通?捎靡粋指針數(shù)組來指向一個二維數(shù)組。指針數(shù)組中的每個元素被賦予二維數(shù)組每一行的首地址,因此也可理解為指向一個一維數(shù)組。

  main(){

  int a[3][3]={1,2,3,4,5,6,7,8,9};

  int *pa[3]={a[0],a[1],a[2]};

  int *p=a[0];

  int i;

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

  printf("%d,%d,%d ",a[i][2-i],*a[i],*(*(a+i)+i));

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

  printf("%d,%d,%d ",*pa[i],p[i],*(p+i));

  }

  本例程序中,pa是一個指針數(shù)組,三個元素分別指向二維數(shù)組a的各行。然后用循環(huán)語句輸出指定的數(shù)組元素。其中*a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p與a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值。讀者可仔細(xì)領(lǐng)會元素值的各種不同的表示方法。

  應(yīng)該注意指針數(shù)組和二維數(shù)組指針變量的區(qū)別。這兩者雖然都可用來表示二維數(shù)組,但是其表示方法和意義是不同的。

  二維數(shù)組指針變量是單個的變量,其一般形式中"(*指針變量名)"兩邊的括號不可少。而指針數(shù)組類型表示的是多個指針(一組有序指針)在一般形式中"*指針數(shù)組名"兩邊不能有括號。例如:

  int (*p)[3];

  表示一個指向二維數(shù)組的指針變量。該二維數(shù)組的列數(shù)為3或分解為一維數(shù)組的長度為3。

  int *p[3]

  表示p是一個指針數(shù)組,有三個下標(biāo)變量p[0],p[1],p[2]均為指針變量。

  指針數(shù)組也常用來表示一組字符串,這時指針數(shù)組的每個元素被賦予一個字符串的首地址。指向字符串的指針數(shù)組的初始化更為簡單。例如在例10.32中即采用指針數(shù)組來表示一組字符串。其初始化賦值為:

  char *name[]={"Illagal day",

  "Monday",

  "Tuesday",

  "Wednesday",

  "Thursday",

  "Friday",

  "Saturday",

  "Sunday"

  };

  完成這個初始化賦值之后,name[0]即指向字符串"Illegal day",name[1]指向"Monday"......。

  指針數(shù)組也可以用作函數(shù)參數(shù)。

  【例10-34】指針數(shù)組作指針型函數(shù)的參數(shù)。在本例主函數(shù)中,定義了一個指針數(shù)組name,并對name 作了初始化賦值。其每個元素都指向一個字符串。然后又以name作為實參調(diào)用指針型函數(shù)day_name,在調(diào)用時把數(shù)組名name賦予形參變量name,輸入的整數(shù)i作為第二個實參賦予形參n。在day_ name函數(shù)中定義了兩個指針變量pp1和pp2,pp1被賦予name[0]的值(即*name),pp2被賦予name[n]的值即*(name+ n)。由條件表達(dá)式?jīng)Q定返回pp1或pp2指針給主函數(shù)中的指針變量ps。最后輸出i和ps的值。

  main(){

  static char *name[]={ "Illegal day",

  "Monday",

  "Tuesday",

  "Wednesday",

  "Thursday",

  "Friday",

  "Saturday",

  "Sunday"

  };

  char *ps;

  int i;

  char *day_name(char *name[],int n);

  printf("input Day No: ");

  scanf("%d",&i);

  if(i<0) exit(1);

  ps=day_name(name,i);

  printf("Day No:%2d-->%s ",i,ps);

  }

  char *day_name(char *name[],int n){

  char *pp1,*pp2;

  pp1=*name;

  pp2=*(name+n);

  return((n<1||n>7)? pp1:pp2);

  }

  【例10-35】輸入5個國名并按字母順序排列后輸出,F(xiàn)編程如下:

  #include"string.h"

  main(){

  void sort(char *name[],int n);

  void print(char *name[],int n);


C語言的函數(shù)分類(擴展8)

——wps常用函數(shù)介紹

wps常用函數(shù)介紹

  引導(dǎo)語:wps常用函數(shù)與excel有哪些不一樣呢?以下是小編整理的wps常用函數(shù)介紹,歡迎參考閱讀!

  1、ABS函數(shù)

  主要功能:求出相應(yīng)數(shù)字的絕對值。

  使用格式:ABS(number)

  參數(shù)說明:number**需要求絕對值的數(shù)值或引用的單元格。

  2、AVERAGE函數(shù)

  主要功能:求出所有參數(shù)的算術(shù)*均值。

  使用格式:AVERAGE(number1,number2,……)

  參數(shù)說明:number1,number2,……:需要求*均值的數(shù)值或引用單元格(區(qū)域),參數(shù)不超過30個。

  3、COUNTIF函數(shù)

  主要功能:統(tǒng)計某個單元格區(qū)域中符合指定條件的單元格數(shù)目。

  使用格式:COUNTIF(Range,Criteria)

  參數(shù)說明:Range**要統(tǒng)計的單元格區(qū)域;Criteria表示指定的條件表達(dá)式。

  4、DATEDIF函數(shù)

  主要功能:計算返回兩個日期參數(shù)的差值。

  使用格式:=DATEDIF(date1,date2,"y")、=DATEDIF(date1,date2,"m")、=DATEDIF(date1,date2,"d")

  參數(shù)說明:date1**前面一個日期,date2**后面一個日期;y(m、d)要求返回兩個日期相差的年(月、天)數(shù)。

  5、INT函數(shù)

  主要功能:將數(shù)值向下取整為最接近的整數(shù)。

  使用格式:INT(number)

  參數(shù)說明:number表示需要取整的數(shù)值或包含數(shù)值的引用單元格。

  特別提醒:在取整時,不進行四舍五入。

  6、MAX函數(shù)

  主要功能:求出一組數(shù)中的最大值。

  使用格式:MAX(number1,number2……)

  參數(shù)說明:number1,number2……**需要求最大值的數(shù)值或引用單元格(區(qū)域),參數(shù)不超過30個。

  7、MIN函數(shù)

  函數(shù)名稱:MIN

  功能:求出一組數(shù)中的最小值。

  使用格式:MIN(number1,number2……)

  參數(shù)說明:number1,number2……**需要求最小值的數(shù)值或引用單元格(區(qū)域),參數(shù)不超過30個。

  8、MOD函數(shù)

  主要功能:求出兩數(shù)相除的余數(shù)。

  使用格式:MOD(number,pisor)

  參數(shù)說明:number**被除數(shù);pisor**除數(shù)。

  9、NOW函數(shù)

  函數(shù)名稱:NOW

  主要功能:給出當(dāng)前系統(tǒng)日期和時間。

  使用格式:NOW()

  參數(shù)說明:該函數(shù)不需要參數(shù)。

  10、函數(shù)名稱:SUM

  主要功能:計算所有參數(shù)數(shù)值的和。

  使用格式:SUM(Number1,Number2……)

  參數(shù)說明:Number1、Number2……**需要計算的值,可以是具體的數(shù)值、引用的單元格(區(qū)域)、邏輯值等。

  11、SUMIF函數(shù)

  主要功能:計算符合指定條件的單元格區(qū)域內(nèi)的數(shù)值和。

  使用格式:SUMIF(Range,Criteria,Sum_Range)

  參數(shù)說明:Range**條件判斷的單元格區(qū)域;Criteria為指定條件表達(dá)式;Sum_Range**需要計算的數(shù)值所在的單元格區(qū)域。

  12、TODAY函數(shù)

  主要功能:給出系統(tǒng)日期。

  使用格式:TODAY()

  參數(shù)說明:該函數(shù)不需要參數(shù)。

  13、WEEKDAY函數(shù)

  主要功能:給出指定日期的對應(yīng)的星期數(shù)。

  使用格式:WEEKDAY(serial_number,return_type)

  參數(shù)說明:serial_number**指定的日期或引用含有日期的單元格;return_type**星期的表示方式[當(dāng)Sunday(星期日)為1、Saturday(星期六)為7時,該參數(shù)為1;當(dāng)Monday(星期一)為1、Sunday(星期日)為7時,該參數(shù)為2(這種情況符合*人的習(xí)慣);當(dāng)Monday(星期一)為0、Sunday(星期日)為6時,該參數(shù)為3]。

  AVEDEV 返回數(shù)據(jù)點與其*均值的絕對偏差的*均值

  AVERAGE 返回參數(shù)的*均值

  AVERAGEA 返回參數(shù)的*均值,包括數(shù)字、文本和邏輯值

  BETADIST 返回

  Beta 累積分布函數(shù)

  BETAINV 返回指定

  Beta 分布的累積分布函數(shù)的反函數(shù)

  BINOMDIST 返回一元二項式分布概率

  CHIDIST 返回 chi *方分布的單尾概率 CHIINV 返回

  chi *方分布的反單尾概率

  CHITEST 返回**性檢驗值

  COUNT 計算參數(shù)列表中數(shù)字的個數(shù)

  COUNTA 計算參數(shù)列表中值的個數(shù)

  COUNTBLANK 計算指定單元格區(qū)域中空白單元格的個數(shù)。

  CONFIDENCE 返回總體*均值的置信區(qū)間。

  CORREL 返回兩個數(shù)據(jù)集之間的相關(guān)系數(shù)。

  COUNTIF 計算區(qū)域中滿足給定條件的單元格的個數(shù)。

  COVAR 返回協(xié)方差,即成對偏移乘積的*均數(shù)。

  CRITBINOM 返回使累積二項式分布小于等于臨界值的最小值。

  DEVSQ 返回偏差的*方和。

  EXPONDIST 返回指數(shù)分布。

  FDIST 返回 F 概率分布。

  FINV 返回 F 概率分布的反函數(shù)。

  FISHER 返回 Fisher 變換值。

  FISHERINV 返回 Fisher 變換的反函數(shù)。

  FORECAST 根據(jù)線性趨勢返回值。

  FTEST 返回 F 檢驗的結(jié)果。

  FREQUENCY 以垂直數(shù)組的形式返回頻率分布。

  GAMMADIST 返回 γ 分布。

  GAMMAINV 返回 γ 累積分布函數(shù)的反函數(shù)。

  GAMMALN 返回 γ 函數(shù)的自然對數(shù),Γ(x)。

  GEOMEAN 返回正數(shù)數(shù)組或區(qū)域的幾何*均值

  GROWTH 根據(jù)指數(shù)趨勢返回值

  HARMEAN 返回數(shù)據(jù)集合的調(diào)和*均值

  HYPGEOMDIST 返回超幾何分布

  INTERCEPT 返回線性回歸線截距

  KURT 返回數(shù)據(jù)集的峰值

  LARGE 返回數(shù)據(jù)集中第k個最大值

  LINEST 返回線性趨勢的參數(shù)

  LOGINV 返回反對數(shù)正態(tài)分布

  LINEST 返回累積對數(shù)正態(tài)分布函數(shù)

  MAX 返回參數(shù)列表中的最大值

  MAXA 返回參數(shù)列表中的最大值,包括數(shù)字、文本和邏輯值

  MEDIAN 返回給定數(shù)字的中值

  MIN 返回參數(shù)列表中的最小值

  MINA 返回參數(shù)列表中的最小值,包括數(shù)字、文本和邏輯值

  MODE 返回數(shù)據(jù)集中出現(xiàn)最多的值間的概率

  PROB 返回區(qū)域中的數(shù)值落在指定區(qū)間內(nèi)的'對應(yīng)概率

  NEGBINOMDIST 返回負(fù)二項式分布

  NORMDIST 返回正態(tài)累積分布

  NORMINV 返回反正態(tài)累積分布

  ORMSDIST 返回標(biāo)準(zhǔn)正態(tài)累積分布

  NORMSINV 返回反標(biāo)準(zhǔn)正態(tài)累積分布

  PEARSON 返回 Pearson 乘積矩相關(guān)系數(shù)

  PERCENTILE 返回區(qū)域中的第 k 個百分位值

  PERCENTRANK 返回數(shù)據(jù)集中值的百分比排位

  PERMUT 返回從給定數(shù)目的對象集合中選取的若干對象的排列數(shù)

  POISSON 返回 Poisson 分布

  PROB 返回區(qū)域中的數(shù)值落在指定區(qū)間內(nèi)的對應(yīng)概率

  QUARTILE 返回數(shù)據(jù)集的四分位數(shù)

  RANK 返回某數(shù)在數(shù)字列表中的排位


C語言的函數(shù)分類(擴展9)

——if函數(shù)的使用方法

if函數(shù)的使用方法

  IF函數(shù)一般是指程序設(shè)計或Excel等軟件中的條件函數(shù),根據(jù)指定的條件來判斷其“真”(TRUE)、“假”(FALSE),根據(jù)邏輯計算的真假值,從而返回相應(yīng)的內(nèi)容。接下來由小編為大家整理出if函數(shù)的使用方法,僅供參考,希望能夠幫助到大家!

  if函數(shù)除了遵守一般函數(shù)的通用規(guī)則以外,還有其特有的注意事項。

  1、括號必須成對,上下對應(yīng)。

  2、if函數(shù)有N個條件則有N+1個結(jié)果,即若結(jié)果只有3種情況的,那么條件只要2個就夠了。

  3、if函數(shù)最多允許出現(xiàn)8個返回值(結(jié)果),也就意味著,最多套用7個if。

  4、多個if嵌套時,盡量使用同一種邏輯運算符。

  即:**使用大于號或者**使用小于號。

  避免出現(xiàn)不必要的錯誤。

  5、if是個好函數(shù),很管用。

  他的格式是:=if(條件1,返回值1,返回值2)。

  多個嵌套的格式:=if(條件1,返回值1,if(條件2,返回值2,if(條件3,返回值3,返回值4)))。

  這里先寫3層嵌套,4、5、6、7層同理。

  IF函數(shù)介紹

  IF函數(shù)一般是指Excel中的IF函數(shù),根據(jù)指定的條件來判斷其“真”(TRUE)、“假”(FALSE),根據(jù)邏輯計算的真假值,從而返回相應(yīng)的內(nèi)容。

  可以使用函數(shù) IF 對數(shù)值和公式進行條件檢測。

  IF函數(shù)的語法

  IF(logical_test,value_if_true,value_if_false)

  Logical_test 表示計算結(jié)果為 TRUE 或 FALSE 的任意值或表達(dá)式。

  例如,A10=100 就是一個邏輯表達(dá)式,如果單元格 A10 中的值等于 100,表達(dá)式即為 TRUE,否則為 FALSE。

  本參數(shù)可使用任何比較運算符(一個標(biāo)記或符號,指定表達(dá)式內(nèi)執(zhí)行的計算的類型。

  有數(shù)學(xué)、比較、邏輯和引用運算符等。)。

  Value_if_true logical_test 為 TRUE 時返回的值。

  例如,如果本參數(shù)為文本字符串“預(yù)算內(nèi)”而且 logical_test 參數(shù)值為 TRUE,則 IF 函數(shù)將顯示文本“預(yù)算內(nèi)”。

  如果 logical_test 為 TRUE 而 value_if_true 為空,則本參數(shù)返回 0(零)。

  如果要顯示 TRUE,則請為本參數(shù)使用邏輯值 TRUE。

  value_if_true 也可以是其他公式。

  Value_if_false logical_test 為 FALSE 時返回的值。

  例如,如果本參數(shù)為文本字符串“超出預(yù)算”而且 logical_test 參數(shù)值為 FALSE,則 IF 函數(shù)將顯示文本“超出預(yù)算”。

  如果 logical_test 為 FALSE 且忽略了 value_if_false(即 value_if_true 后沒有逗號),則會返回邏輯值 FALSE。

  如果 logical_test 為 FALSE 且 value_if_false 為空(即 value_if_true 后有逗號,并緊跟著右括號),則本參數(shù)返回 0(零)。

  VALUE_if_false 也可以是其他公式。

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 yyfangchan@163.com (舉報時請帶上具體的網(wǎng)址) 舉報,一經(jīng)查實,本站將立刻刪除