• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【C初心者】+,-,*./について【電卓】)

C初心者のための四則演算【電卓】

このQ&Aのポイント
  • C言語の初心者が四則演算について学ぶためのプログラムです。
  • プログラムは実行可能ですが、見た目がややこしくなっています。
  • また、printf文の使用回数を減らすための改良案が提案されています。

質問者が選んだベストアンサー

  • ベストアンサー
  • neko1963
  • ベストアンサー率49% (127/258)
回答No.2

"+"、"-"、"*"、"/" 等の「演算子」を変数signに入れて演算させることはできません。 変数に代入できるのは「被演算子」です。 四則演算部分を関数に移動すればmain中で計算結果を出力するprintf を1行にすることはできますが、その関数のなかで switch~case文により分岐することは変わらないですが。 ※本質的な違いは無いですが、main中で計算結果を出力するprintfが1行でスッキリ書けるという違いです。 int main{void) {   : double result;   : if(error = calc(ope, n2, n3, &result) != 0) printf(計算すると%fになります.\n",result); : : } int calc(int w_ope, double w_n2, double w_n3, double *res) { int status = 0; switch (w_ope) case 0 : res = w_n2 + w_n3); break; case 1 : res = w_n2 - w_n3); break; case 2 : res = w_n2 * w_n3); break; case 3 : res = w_n2 / w_n3); break; default: status = -1; } return status; }

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

「関数へのポインタの配列」を使えば switch も不要になるけど, どこからどう見ても「初心者」には向かない.

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

そういう事はできません。 以下のようにする事ならできます。 double ans; case 0: ans = n2 + n3; break; case 1: ans = n2 - n3; break; ... printf("計算すると%lfになります\n", ans);

関連するQ&A