- ベストアンサー
if~else文の中にまたif~else文をいれるには。
このプログラムを思うように実行したいのですが、できません。 コンパイルはできるのですが、警告が4つほど出て、結果も自分が思ってるのとは違います。 プログラムのどこを改善すべきか教えてください。 OSはWindows XPで、コンパイラはボーランドのフリーコンパイラを使用しています。 #include<stdio.h> int main(){ int a,b,c,d; printf("1か0を入力してください。\n"); scanf("%d",&a); if(a=0) { printf("2か3を入力してください。\n"); scanf("%d",&b); if(b=2){ printf("今まで合計は%dです。\n",a+b); } if(b=3){ printf("今まで合計は%dです。\n",a+b); } else { printf("指定した数字を入力して下さい。\n"); } } else if(a=1) { printf("あなたは%dを入力しました。\n",a); } else { printf("指定した数字を入力してください。\n"); } return 0; }
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
No1に追加です。No6のかたが回答されていますが、せっかく途中まで書いたので参考までに回答させていただきます。矢印のある行が変更したところです。(矢印は入力しないでください)今は試せないんですけど多分これでできると思います。うまくいかなかったらすいません。あと字下げしても投稿する際に左寄せになってしまうようなので見づらいかもしれませんが許してください。もっといいやり方があると思いますけど参考にしてみてください。 #include<stdio.h> int main(){ int a,b,c,d; printf("1か0を入力してください。\n"); scanf("%d",&a); if(a==0) ← { printf("2か3を入力してください。\n"); scanf("%d",&b); if(b==2) ← { printf("今まで合計は%dです。\n",a+b); } else ← { if(b==3) ← { printf("今まで合計は%dです。\n",a+b); } else { printf("指定した数字を入力して下さい。\n"); } ←この } は20行目のelseを終了する意味 } ←この } は14行目のelseを終了する意味 } ←この } は7行目のifを終了する意味 if(a==1) ←初めのifが当てはまらなかったり、初めのifの処理を終えるとここへ来る。 { printf("あなたは%dを入力しました。\n",a); } else ← { printf("指定した数字を入力してください。\n"); } return 0; }
その他の回答 (6)
- kitoomo
- ベストアンサー率50% (2/4)
#include<stdio.h> int main() { int a,b,c,d; printf("1か0を入力してください。\n"); scanf("%d",&a); if(a == 0){ printf("2か3を入力してください。\n"); scanf("%d",&b); if(b == 2){ printf("今まで合計は%dです。\n",a+b); } if(b == 3){ printf("今まで合計は%dです。\n",a+b); } else { printf("指定した数字を入力して下さい。\n"); } } else if(a == 1){ printf("あなたは%dを入力しました。\n",a); } else { printf("指定した数字を入力してください。\n"); } return 0; } こんなかんじで! あれ?スペースで字下げしても省かれるようですね。
- trajaa
- ベストアンサー率22% (2662/11921)
余計なお世話かもしれませんが。 質問文では、字下げが全く行われていませんが これは、此処に掲示する際にそうなってしまったのでしょうか? それとも、元々「字下げ」していないのかな? 字下げしないと、どっからどこまでが、どのifに対応するのか視認性が悪くなり、うっかりミスの見落としに繋がります。 参考まで。
- nagare
- ベストアンサー率33% (280/831)
if分の比較ですが = ではなく == ですよ
お礼
そうでした。 ありがとうございました。
- trajaa
- ベストアンサー率22% (2662/11921)
ネストがずれてるのかな? と調べてみたが合っていそう。 と思ったら if文なか 「a=1」なんですか? 「a==1」なら分かるけど。 「a=1」だと、aに代入する->代入は出来るので成功する->成功はtrue ってことで、何してもelseは側には行きませんね。
お礼
ごもっともな意見です。 そうでした「==」にするのを忘れてました。 ありがとうございました。
Cは詳しくは無いのですが・・・{}の数が合ってないような気がします。 18行目の‘}’を削除するとよいのでは?
if(a=0) のところを if(a==0) にすればできるかもしれませんよ。(4箇所)
お礼
できました! ありがとうございました。
お礼
実行できました。 どうもありがとうございました。