プログラミング入門II
2019.04.22
残念ながらコンパイルエラーが見られました.行末のセミコロン抜けなので,事前にきちんとコンパイルして確認することで防げます.次回以降気をつけてください.
コンパイルエラー: b1846
以下は気になったプログラムの例ですが,このような処理では関数側には戻り値は不要ですので, return で値を返す必要はありません. void 型の関数を作りましょう.ということで,今週の演習ではその辺りを重点的に学習します.
前回は関数についてのプログラミングを行いましたが,さんざんな状況でした.なかなか難しいものですね.
演習問題のiについて以下に少し解説します.まずはソースですが,解答例にあるように以下のようになります.
逆数を返す関数ということですので,数学的に記述するとすごく単純です.
f ( x ) = 1 / x
ですね.なので,引数として与えられた数の逆数を返すだけです.
ということで,今回もまた関数に関する演習を行いますが,関数の宣言や定義の部分について,きちんと教科書を読んでからプログラミングを始めましょう.
演習問題はこちらです.
インデントの不備: b1863 b1864
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;
}
#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を呼び出した場所に返す
}
目次ページに戻る