- ベストアンサー
教えてください!
初歩的な質問なのですが、c言語を勉強しています。 何度考えてもわからないので、どなたかお力を貸してください! キーボードから数値を入力して2桁の整数と十、一それぞれの位の数を表示させるプログラムを作成しているのですが、 int sei,a,b; sei=a*10+b; scanf("%d",&sei); printf("整数は%3d, 十の位=%1d, 一の位=%1d ",sei,a,b); としてみたのですが、おかしな答えになり、うまく表示しません。 どこがおかしいのか、ご指摘いただけるとうれしいです!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No1で回答した者です。 大変失礼しました。 関数scanf()はエンターが押されるまで複数のキー入力を一度に得られるのですね? (No2さんの回答を読んで気付きました) ならばNo2の言われる通りですね。 scanf("%d",&sei); a = sei/10; b = sei%10; printf("整数は%3d, 十の位=%1d, 一の位=%1d ",sei,a,b); 当方、組み込み専門なのでscanf()を使うことがなく勘違いしてました。 などと言い訳を・・・(^◇^;)
その他の回答 (3)
- iiikkk
- ベストアンサー率37% (92/247)
sei=a*10+b; 上記の意味がまったく分かりません。 とりあえず、 int sei,a,b; scanf("%d",&sei); a=sei/10; b=sei%10; printf("整数は%3d, 十の位=%1d, 一の位=%1d ",sei,a,b); これではどうでしょうか。
お礼
iiikkkさん、ご回答ありがとうございます! sei=a*10+b; では、なんの意味もないんですね。 大変参考になりました! もう一度頑張ってみたいと思います!
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> sei=a*10+b; これによって十位がaに、一位がbに求まると思うのがマチガイ。 scanf("%d",&sei); a = seiの十位を求める式; b = seiの一位を求める式; printf("整数は%3d, 十の位=%1d, 一の位=%1d ",sei,a,b); でなくては。
お礼
epistemeさん、ご回答ありがとうございます! なるほど! sei=a*10+b; では、十の位がaに、一の位がbに求まらないんですね。 いろいろ参考になります! 本当に助かりました。 もう一度頑張ってみたいと思います!
- black_montblanc
- ベストアンサー率20% (11/55)
キーボードから入力されるのは変数seiではなく、変数a,bです。 あなたのプログラミングでは変数seiにaが代入されていることになります。 以下に一例を・・・ int sei,a,b; scanf("%d",&a);←十の位の入力値を得る scanf("%d",&b);←一の位の入力値を得る sei=a*10+b;←解を求める printf("整数は%3d, 十の位=%1d, 一の位=%1d ",sei,a,b);
お礼
black_montblancさん、ご回答ありがとうございます! 全く勘違いしていたようです・・・。 もういちどきちんと勉強しなおさなきゃだめですね! とっても助かりました! 本当にありがとうございます!
お礼
black_montblancさん、何度もご回答ありがとうございます! 専門家さんですか!すごいです! 尊敬します(>_<) 何度も挑戦して、頑張ってみたいと思います。