• ベストアンサー

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; }

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

  • ベストアンサー
noname#14496
noname#14496
回答No.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)
回答No.6

#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; } こんなかんじで! あれ?スペースで字下げしても省かれるようですね。

eku6fexdd
質問者

お礼

実行できました。 どうもありがとうございました。

  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.5

余計なお世話かもしれませんが。 質問文では、字下げが全く行われていませんが これは、此処に掲示する際にそうなってしまったのでしょうか? それとも、元々「字下げ」していないのかな? 字下げしないと、どっからどこまでが、どのifに対応するのか視認性が悪くなり、うっかりミスの見落としに繋がります。 参考まで。

  • nagare
  • ベストアンサー率33% (280/831)
回答No.4

if分の比較ですが = ではなく == ですよ

eku6fexdd
質問者

お礼

そうでした。 ありがとうございました。

  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.3

ネストがずれてるのかな? と調べてみたが合っていそう。 と思ったら if文なか 「a=1」なんですか? 「a==1」なら分かるけど。 「a=1」だと、aに代入する->代入は出来るので成功する->成功はtrue ってことで、何してもelseは側には行きませんね。

eku6fexdd
質問者

お礼

ごもっともな意見です。 そうでした「==」にするのを忘れてました。 ありがとうございました。

noname#17649
noname#17649
回答No.2

Cは詳しくは無いのですが・・・{}の数が合ってないような気がします。 18行目の‘}’を削除するとよいのでは?

noname#14496
noname#14496
回答No.1

if(a=0) のところを if(a==0) にすればできるかもしれませんよ。(4箇所)

eku6fexdd
質問者

お礼

できました! ありがとうございました。