• 締切済み

課題で悩んでます

nclude <stdio.h> void main(){ int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if( okane >=700&&kion>=30.0 ){ printf("冷やし中華を食べよう\n"); } if( okane >=700&&kion<30.0 ){ printf("ラーメンを食べよう\n"); } if( okane <=700){ printf("バイトしろ"); } } この文で論理演算子を抜いてifelse文に書き換えろという課題が出たのですが分からないので全文教えて下さい

みんなの回答

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.8

(このまま、閉められたらマズイ・・?) >もっと詳しく教えて下さい(#1 さんへの「お礼」)  例えば、   699円で気温が30℃のときは、     バイトしろ   700円で気温が30℃のときは、     冷やし中華を食べよう     バイトしろ   700円で気温が25℃のときは、     ラーメンを食べよう     バイトしろ   701円で気温が30℃のときは、     冷やし中華を食べよう  ですよね。  整理すると、700円の時は、「・・食べよう」と「バイトしろ」と表示します。  >= 700 <= 700 双方に = があるので、金額での分岐に else は使えません。  気温については、>= 30.0 と < 30.0 で、2つに分岐できるので else を使えます。 if( okane >= 700 ){   if( kion >= 30.0 ) printf( "冷やし中華を食べよう\n" );   else printf( "ラーメンを食べよう\n" ); } if( okane <= 700 ) printf( "バイトしろ" );

回答No.7

あなたの回答↓は、if~else 文の使い方がまったくなっていません。初歩的なプログラミング以前の問題です。 #include <stdio.h> void main(){ int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if( okane >=700) }elseif{( kion>30.0) //←if()文書式が間違ってます printf("冷やし中華を食べよう\n"); if( okane >=700) }elseif{(kion<30.0 ) //←if()文書式が間違ってます printf("ラーメンを食べよう\n"); }else{( okane <=700) //←if()文書式が間違ってます printf("バイトしろ"); } 出題は、if()文の流れを把握しているかどうかを問うものです。 回答は、例題プログラムを良く読み、どのような状況においてバイトしなくてはならないのか、どのような状況のときにラーメン等を食べることが出来るのかを把握することが求められています。 結論は、お金700円を持ち合わせていないならバイトしなければなりませんが、700円以上を持ち合わせていたならばラーメン等を食べることになります。それゆえ、プログラムは所持金700円が最初に来て、気温はその次となります。 /* 回答プログラム */ #include <stdio.h> int main(void) { int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if(okane<700) { //出題があいまいです printf("バイトしろ\n"); } else if(kion>=30.0 ){ printf("冷やし中華を食べよう\n"); } else { printf("ラーメンを食べよう\n"); } return 0; }

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.6

ふむふむ、700円ちょうどの時に挙動が異なってしまうわけですね。>#2さんのプログラム そこがこのプログラムの引っ掛けだったのか。。。 質問者さんは、#2さんのプログラムを参考に、700円ちょうどの時に気をつけて、課題、頑張って下さい。 それでもわからなければ、 if(yaruki == 0) { printf("諦めろ\n"); } ということで。

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

ダウト>#2. そのプログラムは, 与えられたプログラムとは異なる挙動を示します. つまり「書き換えた」結果とは言えません.

回答No.4

書いてみたら、こうなったということですが。 まず、構文的にむちゃくちゃです。 > if( okane >=700) > }elseif{( kion>30.0) > printf("冷やし中華を食べよう\n"); > if( okane >=700) > }elseif{(kion<30.0 ) > printf("ラーメンを食べよう\n"); > }else{( okane <=700) > printf("バイトしろ"); if (式) 文; else 文; という形になっていますか? どうも、ただ単に、 && を elseif という文字に(括弧も付け足して)変換してみただけのようですが、そもそも if(a && b) …… → a も b も両方満足したときに…… if(a) else if(b) …… → a じゃ「なくて」、かつ、b のときに…… なので、(正しい構文になるように)単純に置き換えたとしても、同じ意味にはなりません。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3
  • anubs
  • ベストアンサー率72% (8/11)
回答No.2

・・・・せめてどうしてこうなるかよ~く考えるように(現役PGより) include <stdio.h> void main(){  int okane;  float kion;  printf("今日のお金は?\n");  scanf("%d",&okane);  printf("今日の気温は?\n");  scanf("%f",&kion);  if( okane >=700){   if(kion >= 30.0)    printf("冷やし中華を食べよう\n");   else    printf("ラーメンを食べよう\n");  }  else{   printf("バイトしろ"); } }

  • anubs
  • ベストアンサー率72% (8/11)
回答No.1

>> if( okane >=700&&kion<30.0 ){ >>  printf("ラーメンを食べよう\n"); >> } >> if( okane <=700){ >>  printf("バイトしろ"); >> } okaneに入力された数字が700以上で かつkionが30.0以上なら「ラーメンを食べる」 ということは 上記に『当てはまらなければ』 すべて『バイトしろ』なんです。 あとはif-elase文の開設を調べれば おのずと答えは出るはずですよ。

e100013re
質問者

お礼

もっと詳しく教えて下さい

e100013re
質問者

補足

#include <stdio.h> void main(){ int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if( okane >=700) }elseif{( kion>30.0) printf("冷やし中華を食べよう\n"); if( okane >=700) }elseif{(kion<30.0 ) printf("ラーメンを食べよう\n"); }else{( okane <=700) printf("バイトしろ"); } このようにやってみたのですがエラーがでたので訂正してください