《あなたを連れてCを学んであなたを連れて飛んでノートを学びます》——SE 28関数の初体験


  • 指定文の実行順序(A->B->C->Dなど)
  • を順番に表示してください.
    #include 
    
    void a();
    void b();
    void c();
    
    void a()
    {
            ; // A
    }
    
    int main()
    {
            b(); // B
            a(); // C
            c(); // D
    
            return 0;
    }
    
    void c()
    {
            ; // E
    }
    
    void b()
    {
            ; // F
    }
    

    A:実行順B->F->C->A->D->E.
  • 次の定義でエラーが発生した箇所(エラーが5件ある):
  • #include 
    
    void func()
    
    int main()
    {       
            func();
    
            return O;
    }
    
    void func()
    {
            print("I love FishC.com!
    "); return 0; };

    答え:関数宣言void func()return 0;printf;関数定義にreturn 0は必要ありません.関数定義は最後にセミコロンを打つ必要はありません.
  • 関数の宣言は何の役に立ちますか?答:関数宣言時にこの関数が関数を呼び出すことをプログラムに知らせる.
  • 関数は使用するために宣言する必要がありますか?答え:宣言しなければなりません.答え:関数には「定義してから呼び出す」必要があります.ただし、宣言は必須ではありません.「呼び出された関数」の定義が「呼び出された関数」の前にある限りです.しかし、良いプログラミング習慣として、どうしても関数の宣言を書くのが適切であることをお勧めします.
  • 標準ライブラリ関数と重複する関数を定義した場合、どうなりますか?答え:間違い答え:間違いを報告します.再定義された同じ名前の関数は、標準ライブラリ関数を上書きします(戻り値とパラメータタイプ、個数が一致することを含む両方の宣言が一致していることを前提とします).

  • 手を動かす
    #include 
    #include 
    
    #define HEIGHT 7  //       ,        7 
    
    const char *letters[] = {
    "\
    \########@\
    \##      @\
    \##      @\
    \######  @\
    \##      @\
    \##      @\
    \##      @\
    ",
    "\
    \####@\
    \ ## @\
    \ ## @\
    \ ## @\
    \ ## @\
    \ ## @\
    \####@\
    ",
    "\
    \ ###### @\
    \##    ##@\
    \##      @\
    \ ###### @\
    \      ##@\
    \##    ##@\
    \ ###### @\
    ",
    "\
    \##     ##@\
    \##     ##@\
    \##     ##@\
    \#########@\
    \##     ##@\
    \##     ##@\
    \##     ##@\
    ",
    "\
    \ ###### @\
    \##    ##@\
    \##      @\
    \##      @\
    \##      @\
    \##    ##@\
    \ ###### @\
    "
    };
    
    int main()
    {
            int i, j;
            int gap;
    
            printf("        (   ):");
            scanf("%d", &gap);
    
            //       
            for (i = 0; i < HEIGHT; i++)
            {
                    //           
                    for (j = 0; j < 5; j++)
                    {
                            // k         ‘#’  
                            int k = 0;
                            //                
                            int len = strlen(letters[j]) / HEIGHT;
                            //          
                            int line = i * len;
    
                            // @       
                            while (letters[j][line+k] != '@')
                            {
                                    putchar(letters[j][line+k]);
                                    k++;
                            }
    
                            //         (  )
                            int temp = gap;
                            while (temp--)
                            {
                                    putchar(' ');
                            }
                    }
                    putchar('
    '); } return 0; }