関数を書く練習がまだの人は、それをやりましょう。 教科書 1.9, 1.10 のプログラム例はやや難しすぎると思うので、 それらに深入りすることはお勧めしません。
次のプログラムは、教科書の関数 power() を、 配列を使って計算するように書き換えてみたものです。 gcc でコンパイルでき、“正しく”動作しますが、 ANSI C の規格には合っていません。 関数 power() 内の配列 a[ ] の宣言が n のような変数を含んでいるからです。
=============================================================================== #include <stdio.h> int power(int base, int n); main() { int i; for (i = 0; i < 10; i++) { printf("%d %d %d\n", i, power(2,i), power(-3,i)); } } int power(int base, int n) { int i; int a[n+1]; /* この宣言が問題 */ a[0] = 1; for (i = 1; i <= n; ++i) a[i] = a[i-1] * base; return a[n]; } ===============================================================================int a[101]; と宣言しておけば 100 乗まで OK なので、 このスタイルでプログラムを書きたいならそれがいいでしょう。
scanf() は標準ライブラリにある関数で、数などの入力に使う。 次のサンプルで使い方を学べ。
== scanf.c ==================================================================== #include <stdio.h> main() { int n; double x; printf("整数 n の値を入力してください.\n"); scanf("%d", &n); printf("浮動小数点数 x の値を入力してください.\n"); scanf("%lf", &x); printf("n は %d, x は %f です.\n", n, x); printf("整数 n, 浮動小数点数 x の値を、スペースで区切って入力してください.\n"); scanf("%d %lf", &n, &x); printf("n は %d, x は %f です.\n", n, x); } ===============================================================================scanf("%d", &n); で int 型変数 n に、 scanf("%lf", &x); で double 型変数 x に、 キーボードから値を入力できる、と(とりあえずは)覚えてほしい。 変数の前にある & については、いまは説明しない。 double 型変数は printf() では %f だったが scanf() では %lf であることにも注意。
教科書 1.9, 1.10 のアイディアを参考にして、 テストの最高点・最低点を出力するプログラムを書け。 得点は 0 点以上 100 点以下とし、 マイナスの数が入力されたら終わるようにせよ。 たとえば次のように動けばよい。
次の生徒の得点を入力してください。 36 いままでの最高点は 36 点、最低点は 36 点です。 次の生徒の得点を入力してください。 72 いままでの最高点は 72 点、最低点は 36 点です。 次の生徒の得点を入力してください。 50 いままでの最高点は 72 点、最低点は 36 点です。 次の生徒の得点を入力してください。 -1これはあくまでも一例なので、細部は自分で考えて設計せよ。
教科書 205 ページ、315 ページに、数学(に出てくる)関数がまとめられている。 これらを使うには #include <math.h> が必要である。 また、授業で使っている gcc の約束として、 「gcc sqrt.c -lm」のように -lm (マイナス、エル、エム) をつけてコンパイルする必要がある。
== sqrt.c ===================================================================== #include <stdio.h> #include <math.h> main() { double x; x = 2; printf("%f\n", sqrt(x)); } ===============================================================================円周率πの値が必要なら、
#define PI 3.14159265358979323846をコピーして利用するとよい。
ここまで準備をすると、数学に関連したプログラムが (書こうと思えば)かなり書ける。
0 (0 次の項) (0 次の項までの和) 1 (1 次の項) (1 次の項までの和) 2 (2 次の項) (2 次の項までの和) 3 (3 次の項) (3 次の項までの和) :のように適当なところまで出力させるプログラムを書いてみよ。