2つの数値の加減乗除をする電卓のようなプログラムを作ります。
簡単なようですが、多くの話題(データ型の選択、入力、判断や繰り返しなど)を含んでおり、学習に役立つ例題です。
今回は、プログラムをつくる流れも分かるように、どんなプログラムにするか検討するところから始めます。
それを処理手順に書き、C言語のコードに直します。
【 電卓プログラムの処理手順 】
指定の書式を示すメッセージを表示する
<繰り返し>
| 「数値1 演算記号 数値2」の指定を受け取る --> 変数 a, op, b へ
| 指定の書式でなかったとき) 繰り返しを抜ける
| 演算記号 op に応じた計算をする --> ans へ結果を入れる
| + のとき) a + b を求める
| - のとき) a - b を求める
| * のとき) a * b を求める
| / のとき) b がゼロでないかチェックする
| ゼロのとき) エラー・メッセージを表示して繰り返しの先頭に戻る
| a / b を求める
| それ以外) エラー・メッセージを表示して繰り返しの先頭に戻る
- 答え ans を表示する
電源OFF のメッセージを表示する
上記の手順を素直にC言語で書きます。
【 電卓プログラムの書き方例 】#include <stdio.h> main() { double a, b, ans; char op; printf( "加減乗除(+,-,*,/)ができます。指定例:2+5、終了時はq\n" ); while( 1 ) { printf( "ready : " ); if( scanf( "%lf %c %lf", &a, &op, &b ) != 3 ) break; switch( op ) { case '+': ans = a + b; break; case '-': ans = a - b; break; case '*': ans = a * b; break; case '/': if( b == 0.0 ) { printf( "Error!(ゼロでの割算はできません)\n" ); continue; } ans = a / b; break; default: printf( "Error!(演算記号の指定が誤りです)\n" ); continue; } printf( "--> %g\n", ans ); } printf( ".... Power OFF\n" ); }
加減乗除(+,-,*,/)ができます。指定例:2+5、終了時はq ready : 6.5 * 3 --> 19.5 ready : 7 % 4 Error!(演算記号の指定が誤りです) ready : 123 / 2 --> 61.5 ready : 7 + 16 --> 23 ready : q .... Power OFF
(今回のクイズはありません)
[ 関連記事 ] scanf の使い方, break と continue, switch の default
(1) scanf( "%s", msg ) または最大入力文字数を指定して scanf( "%23s", msg ) (2) scanf( "%c", &moji ) (3) scanf( "%d/%d/%d", &yy, &mm, &dd )(1) で文字配列 msg を渡すときは、& は不要です。配列名を書くと、その先頭のアドレスが渡るためです。