- ベストアンサー
C言語、成績は4194432?いつも大変お世話になり誠にありがとうございます。標記の件。おかしな実行結果になりました。どうしてでしょうか?ご回答の程宜しくお願い申し上げます。
- C言語の成績に4194432というおかしな実行結果が出る問題が発生しています。
- 成績を入力しても、結果が4194432という値になってしまう現象が発生しています。
- 問題の原因は何で、どのように解決すればいいのか教えていただきたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
scanfの使い方もそうですが… case文で値が1~5であるのに対し、入力値はアルファベットです。scanfの%指定子が%cであるならアルファベットの入力も問題ありません。しかしcase文の値が数字ですのでどのみちどれにも引っかかりません。 まずscanfで数値を入力するのか文字を入力するのかをはっきりさせ、%指定子を指定して下さい。 【C言語入門】scanfで数値、文字列の入力(sscanfの使い方も解説) https://www.sejuku.net/blog/24965 そして入力文字属性が決まったらcase文の値を指定してください。 【C言語入門】switch-case文の使い方(数値、文字列で複数条件分岐 https://www.sejuku.net/blog/25267 上記プログラムであれば、1~5を入力すれば動きそうですが…。
その他の回答 (3)
- wormhole
- ベストアンサー率28% (1626/5665)
>本来なら、「1~5を入力してください。」 >と入れたほうがいいですね。 その方が親切ですけど、 更に1~5以外が入力された場合の事も考えませんか?
- wormhole
- ベストアンサー率28% (1626/5665)
>どうしてでしょうか? scanfは、そういう仕様だからとしかいえません。 "%d"は、数値として認識できる文字(数字)でなければ何もしません。 あなたの入力された文字は、それに該当しますか? scanfの仕様をよく確認してください。
お礼
ご回答誠にありがとうございます。 本来なら、「1~5を入力してください。」 と入れたほうがいいですね。
- asuncion
- ベストアンサー率33% (2127/6289)
>int res; >scanf("%d", &res); 整数値の入力を求めているのに >成績を入力してください。 >A 何でこんなことするんですか?
お礼
ご回答誠にありがとうございます。 大変失礼致しました。 今後気を付けます。 今後とも宜しくお願い致します。
お礼
ご回答誠にありがとうございます。 本来なら、「1~5を入力してください。」 と入れたほうがいいですね。 4194432という数字はどこから来たのでしょうか?