天天看點

學習C語言的函數

  學習函數        主要學習函數的用法。首先讨論為什麼要使用函數,然後詳細讨論内置函數和自定義函數以及函數的結構,最後讨論函數調用以及函數的傳回值。        函數可以把相對獨立的某個功能抽象出來,使之成為程式中的一個獨立實體。可以在同一個程式或其他程式中多次重複使用 函數機制的優點 Ø         使程式變得更簡短而清晰 Ø         有利于程式維護 Ø         可以提高程式開發的效率 Ø         提高了代碼的重用性 函數的兩種類型:内置函數和自定義函數        内置函數: Ø       由C語言系統提供; Ø       使用者無須定義,也不必在程式中作類型說明; Ø       隻需在程式前包含有該函數定義的頭檔案;

内置函數 頭檔案 用途
double sqrt(double x) math.h 計算x的平方根
double pow(double x, double y) 計算x的y次幂
double ceil(double x) 求不小于x的最小整數,并以double形式顯示
double floor(double x) 求不大于x的最大整數,并以double形式顯示
int toupper(int x) ctype.h 如果x為小寫字母,則傳回對應的大寫字母
int tolower(int x) 如果x為大寫字母,則傳回對應的小寫字母
int rand(void) stdlib.h 産生一個随機數
void exit(int retval) 終止程式

内置函數sqrt 和pow 示例:

學習C語言的函數

#include  < stdio.h >

學習C語言的函數

#include  < math.h >

學習C語言的函數

void  main()

學習C語言的函數
學習C語言的函數

... {

學習C語言的函數

   int x=1;

學習C語言的函數

   double squareroot,power;

學習C語言的函數

   while(x <= 10)

學習C語言的函數
學習C語言的函數

   ...{

學習C語言的函數

squareroot=sqrt(x);

學習C語言的函數

power=pow(x,3);

學習C語言的函數

printf(" %d的平方根:%3.2f %d的立方:%5.0f  ",

學習C語言的函數

                x,squareroot,x,power);

學習C語言的函數

x++;

學習C語言的函數

   }

學習C語言的函數

}  

學習C語言的函數

輸出: 1的平方根: 1.00         1的立方:     1  2的平方根: 1.41         2的立方:     8  3的平方根: 1.73         3的立方:    27  4的平方根: 2.00         4的立方:    64  5的平方根: 2.24         5的立方: 125  6的平方根: 2.45         6的立方: 216  7的平方根: 2.65         7的立方: 343  8的平方根: 2.83         8的立方: 512  9的平方根: 3.00         9的立方: 729 10的平方根: 3.16        10的立方: 1000 Press any key to continue 内置函數ceil和floor示例

學習C語言的函數

#include  < stdio.h >

學習C語言的函數

#include  < math.h >

學習C語言的函數

void  main()

學習C語言的函數
學習C語言的函數

... {       

學習C語言的函數

         printf("==============floor()=========");

學習C語言的函數

         printf("  floor(99.1) = %f  ",floor(99.1));

學習C語言的函數

         printf(" floor(-99.1) = %f ",floor(-99.1));

學習C語言的函數

         printf(" floor(99.9) = %f ",floor(99.9));

學習C語言的函數

         printf(" floor(-99.9) = %f ",floor(-99.9));

學習C語言的函數

         printf(" ==============ceil()==========");

學習C語言的函數

         printf("  ceil(99.1) = %f ",ceil(99.1));

學習C語言的函數

         printf(" ceil(-99.1) = %f ",ceil(-99.1));

學習C語言的函數

         printf(" ceil(99.9) = %f ",ceil(99.9));

學習C語言的函數

         printf(" ceil(-99.9) = %f ",ceil(-99.9));

學習C語言的函數

}

學習C語言的函數

輸出: ==============floor()=========  floor(99.1) = 99.000000  floor(-99.1) = -100.000000  floor(99.9) = 99.000000  floor(-99.9) = -100.000000   ==============ceil()==========  ceil(99.1) = 100.000000  ceil(-99.1) = -99.000000  ceil(99.9) = 100.000000  ceil(-99.9) = -99.000000 Press any key to continue toupper和tolower示例

學習C語言的函數

#include < stdio.h >

學習C語言的函數

#include < ctype.h >

學習C語言的函數

void  main()

學習C語言的函數
學習C語言的函數

... {

學習C語言的函數

char msg1,msg2,to_upper,to_lower;

學習C語言的函數

printf("請輸入一個小寫字母:");

學習C語言的函數

msg1=getchar();

學習C語言的函數

to_upper=toupper(msg1);

學習C語言的函數

printf("轉換為大寫:%c ",to_upper);

學習C語言的函數

printf("請輸入一個大寫字母:");

學習C語言的函數

fflush(stdin);

學習C語言的函數

msg2=getchar();

學習C語言的函數

to_lower=tolower(msg2);

學習C語言的函數

printf("轉換為小寫:%c ",to_lower);

學習C語言的函數

}  

學習C語言的函數

請輸入一個小寫字母:d 轉換為大寫:D 請輸入一個大寫字母:E 轉換為小寫:e Press any key to continue 内置函數rand示例

學習C語言的函數

#include < stdio.h >  

學習C語言的函數

#include < stdlib.h >  

學習C語言的函數

// #include<time.h>

學習C語言的函數

void  main() 

學習C語言的函數
學習C語言的函數

... { 

學習C語言的函數

       int i; 

學習C語言的函數

       printf("産生 10 個 0 到 99 之間的随機數序列: "); 

學習C語言的函數

       //srand((unsigned)time(NULL));

學習C語言的函數

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

學習C語言的函數

             printf("%d ", rand() % 100); 

學習C語言的函數

       printf(" ");

學習C語言的函數

}  

學習C語言的函數

産生 10 個 0 到 99 之間的随機數序列: 44 73 26 58 37 94 27 42 28 90 Press any key to continue 自定義函數: Ø       使用者在程式中根據需要而編寫的函數; Ø         函數名的命名規則和變量命名一樣。注意盡量能夠表達出正确的意義,如果說一個變量命名重在說明它“是什麼”的話,則一個函數重在說明它要“做什麼”。比如一個函數要實作兩數相加,則可以命名為AddTwoNum,這樣有助于閱讀。 Ø         函數參數。格式為:int AddTwoNum(int a,int b ) 注:兩個或多個參數類型相同時,并不能同進聲明。例如:AddTwoNum(int a, b )//是錯誤的。 Ø         在C語言中,不允許一個函數定義在另一個函數體内。如: Void A() {         Void B()         //錯誤,函數B定義在函數A體内。         {…..         } ….. } 函數原型 函數原型說明在形式上與函數頭部類似,最後加一個分号。原型說明中參數表裡的參數名可以不寫(隻寫參數類型) #include <stdio.h> float count (int, int); void main() {    . . .    . . . } float co nt(int x,int y) {  . . . } 函數調用 Ø         通過在程式中使用函數名稱,可以執行函數中包含的語句,這稱為調用函數 Ø         函數之間允許互相調用,也允許嵌套調用 Ø         函數還可以自己調用自己,稱為遞歸調用 示例:

學習C語言的函數

#include < stdio.h >

學習C語言的函數

void  AreaOfRect();

學習C語言的函數

void  AreaOfTriangle();

學習C語言的函數

void  AreaOfRound();

學習C語言的函數

void  main()

學習C語言的函數
學習C語言的函數

... {

學習C語言的函數

       int select;

學習C語言的函數
學習C語言的函數

       do ...{

學習C語言的函數

            printf(" 0、退出  1、長方形  2、三角形  3、圓形 ");

學習C語言的函數

            printf("請選擇功能:");

學習C語言的函數

            scanf("%d",&select);

學習C語言的函數

            if(select == 0)     break;

學習C語言的函數
學習C語言的函數

      switch(select) ...{

學習C語言的函數

            case 1 : AreaOfRect(); break; //長方形

學習C語言的函數

            case 2 : AreaOfTriangle(); break; //三角形

學習C語言的函數

            case 3 : AreaOfRound(); break; //圓形

學習C語言的函數

           default : printf("輸入有誤,請在 0~4 之間選擇。 ");

學習C語言的函數

          }

學習C語言的函數

      }while(1);

學習C語言的函數

}

學習C語言的函數

void  AreaOfRect() 

學習C語言的函數
學習C語言的函數

... {

學習C語言的函數

        int x,y; 

學習C語言的函數

        printf("請輸入長方形的長:"); 

學習C語言的函數

        scanf("%d",&x);

學習C語言的函數

        printf("請輸入長方形的寬:"); 

學習C語言的函數

        scanf("%d",&y);

學習C語言的函數

        printf("面積為:%d ",(x * y)); 

學習C語言的函數

}  

學習C語言的函數

void  AreaOfRound()

學習C語言的函數
學習C語言的函數

... {

學習C語言的函數

      int r; 

學習C語言的函數

      printf("請輸入圓形的半徑:"); 

學習C語言的函數

      scanf("%d",&r);

學習C語言的函數

      printf("面積為:%d ",3.14*r*r); 

學習C語言的函數

}

學習C語言的函數

void  AreaOfTriangle()

學習C語言的函數
學習C語言的函數

... {

學習C語言的函數

        int x,y; 

學習C語言的函數

        printf("請輸入三角形的底:"); 

學習C語言的函數

        scanf("%d",&x);

學習C語言的函數

        printf("請輸入三角形的高:"); 

學習C語言的函數

        scanf("%d",&y);

學習C語言的函數

        printf("面積為:%d ",(x * y)/2); 

學習C語言的函數

}     函數傳回值 C 語言中的 return 語句用于向調用函數傳回值,文法如下:              return (<表達式>); Ø       C語言中的函數至多可以傳回一個值,不能傳回多個值; Ø        傳回值的資料類型必須與函數原型中傳回值的資料類型比對; Ø        當遇到 return 語句時,函數執行将終止。程式控制流将立即傳回調用函數; 示例:

學習C語言的函數

#include  < stdio.h >

學習C語言的函數

int  get_age();

學習C語言的函數

void  main()

學習C語言的函數
學習C語言的函數

... {

學習C語言的函數

     int age1, age2, age3;

學習C語言的函數

     age1 = get_age();

學習C語言的函數

     age2 = get_age();

學習C語言的函數

     age3 = get_age();

學習C語言的函數

     if ( (age1 > age2) && (age1 > age3))

學習C語言的函數

         printf(" 年齡為 %d 的人最大 ", age1);

學習C語言的函數

     else if( (age2 > age1) && (age2 > age3))

學習C語言的函數

         printf(" 年齡為 %d 的人最大 ", age2);

學習C語言的函數

     else if( (age3 > age1) && (age3 > age2))

學習C語言的函數

         printf(" 年齡為 %d 的人最大 ", age2);

學習C語言的函數

}

學習C語言的函數

int  get_age()

學習C語言的函數
學習C語言的函數

... {

學習C語言的函數

    int age;

學習C語言的函數

    printf(" 請輸入年齡: ");

學習C語言的函數

    scanf("%d",&age);

學習C語言的函數

    return age;

學習C語言的函數

}

學習C語言的函數

函數的結構包括:傳回值類型、函數名、參數清單、函數體    

繼續閱讀