回答

✨ ベストアンサー ✨

簡単に まとめてみました。

間違っている点は 2 つあります。

■ printf のフォーマットがおかしい

11 行目の printf に "7 + 4 = %d" を指定していますが
"%d" は『int 型の値を出力する』という意味です。

でも、実際には何も指定していないので
メモリ上にあるゴミデータが参照されて
結果 -508065232 のような変な値が出力されてます。

"%d" を削除して
printf("7 + 4 = ");
とすれば OK です。

■ scanf の引数がアドレスじゃない

scanf は変数の値を書き換える関数なので
変数そのものではなく、
変数のアドレス(ポインタ)を指定しないといけません。
(C 言語には、変数そのものを渡す機能はないからです)

なので、
scanf("%d", &a);
のようにすれば OK です。

不明な点があれば コメントください。
分かる範囲で答えますので。

lapis

できました!ありがとうございます🙇‍♀️
最後のコメントがどうしても全部痩せてるになってしまうんですけど何が原因ですかね?😭

こちらでプログラムを書き写して動かしたところ、
・(162, 58) → 痩せてる
・(162, 50) → 太っている
となりました。

判定が逆になっているような気がします。

『痩せてる』しか出力されないとのことですが、
こちらでの結果と異なるので、
(162, 50) でも本当に『痩せてる』になるか、
念の為、確認してみてください。
(僕がコードを間違って書き写した可能性もあるので)

■誤判定の原因

19, 21 行めの不等号が逆になっているのが原因だと思います。

・(x - 100) * 0.9 → 標準体重
・y → 実際の体重
を表していますよね。

例えば 19 行めの
 (x - 100) * 0.9 < y
は、
 標準体重 < 実際の体重
なので、実際の体重が標準体重より大きい、
つまり、太っていることを意味しますので。

■ちょっとした対策

この手のミスは、すごく よくあることなんですが、
変数名を工夫することで、(ある程度)減らすことができます。

今回は、x, y という変数と、(x - 100) * 0.9 という式を
直接 書いているので、何が何を意味しているのか
ぱっと見、分かりにくいですよね?

これを、もし
・身長 → height
・体重 → weight
・標準体重 → std_weight = (height - 100) * 0.9
という変数名にすると、19 行めの条件式は
 std_weight < weight
と書けます。

『実際の体重が標準体重より大きい』という意味だと
ひと目で分かりますよね。

並べてみると、読みやすさが段違いだと分かると思います。
・(x - 100) * 0.9 < y
・std_weight < weight

今回は課題とのことなので、もしかすると
変数名を指定されているのかもしれませんが、
指定がないときなら、工夫してみてください。

たかが名前、のように感じるかもしれませんが
ミス防止にもストレス軽減にも
意外と大きな効果がありますので。

lapis

返信が遅くなってすいません!
やっと出来ました!
ほんとにありがとうございます!!

この回答にコメントする
疑問は解決しましたか?

この質問を見ている人は
こちらの質問も見ています😉