プログラミング入門II
2019.04.22

Back to index page



  1. 本日の作業内容

  2. 前回の宿題について

    残念ながらコンパイルエラーが見られました.行末のセミコロン抜けなので,事前にきちんとコンパイルして確認することで防げます.次回以降気をつけてください.

    コンパイルエラー: b1846
    インデントの不備: b1863 b1864

    以下は気になったプログラムの例ですが,このような処理では関数側には戻り値は不要ですので, return で値を返す必要はありません. void 型の関数を作りましょう.ということで,今週の演習ではその辺りを重点的に学習します.

    int divisor(int x)
    {       
            int i;
            
            for(i = 1; i <= x; i++)
            {
                    if(x % i == 0)
                    {
                            printf("%d ", i);
                    }
            }
            
            return 0;
    }                       
    

    int divisor(int num1)
    {
            int i;
            
            for(i=1; i<=num1; i++)
            {
                    if(num1%i==0)
                    {
                            printf("%d ",i);
                    }
            }
            
            return num1;
    }
    

  3. 前回の復習

    前回は関数についてのプログラミングを行いましたが,さんざんな状況でした.なかなか難しいものですね.

    演習問題のiについて以下に少し解説します.まずはソースですが,解答例にあるように以下のようになります.

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    double reciprocal(int x);	//プロトタイプ宣言(戻り値は実数)
    
    int main(void)
    {
    	srand((unsigned) time(NULL));
    	
    	int x = rand() % 90 + 10;
    	
    	printf("The reciprocal of %d is %.3f.\n", x, reciprocal(x));	//関数の参照(逆数の値が戻る)
    	
    	return 0;
    }
    
    double reciprocal(int x)	//実際の関数の中身を記述
    {
    	return (double) 1 / x;	//引数xの逆数1/xを呼び出した場所に返す
    }
    

    逆数を返す関数ということですので,数学的に記述するとすごく単純です.

    f ( x ) = 1 / x

    ですね.なので,引数として与えられた数の逆数を返すだけです.

    ということで,今回もまた関数に関する演習を行いますが,関数の宣言や定義の部分について,きちんと教科書を読んでからプログラミングを始めましょう.

  4. 演習

    演習問題はこちらです.

  5. 宿題

    宿題の公開は4月23日以降です.よろしくお願いします.

  6. 次回の予習範囲

    教科書のp.70からp.78の範囲を予習してください.


目次ページに戻る