• ベストアンサー

教えてください!

初歩的な質問なのですが、c言語を勉強しています。 何度考えてもわからないので、どなたかお力を貸してください! キーボードから数値を入力して2桁の整数と十、一それぞれの位の数を表示させるプログラムを作成しているのですが、 int sei,a,b; sei=a*10+b; scanf("%d",&sei); printf("整数は%3d, 十の位=%1d, 一の位=%1d ",sei,a,b); としてみたのですが、おかしな答えになり、うまく表示しません。 どこがおかしいのか、ご指摘いただけるとうれしいです!

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

  • ベストアンサー
回答No.4

No1で回答した者です。 大変失礼しました。 関数scanf()はエンターが押されるまで複数のキー入力を一度に得られるのですね? (No2さんの回答を読んで気付きました) ならばNo2の言われる通りですね。 scanf("%d",&sei); a = sei/10; b = sei%10; printf("整数は%3d, 十の位=%1d, 一の位=%1d ",sei,a,b); 当方、組み込み専門なのでscanf()を使うことがなく勘違いしてました。 などと言い訳を・・・(^◇^;)

rarirarira
質問者

お礼

black_montblancさん、何度もご回答ありがとうございます! 専門家さんですか!すごいです! 尊敬します(>_<) 何度も挑戦して、頑張ってみたいと思います。

その他の回答 (3)

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.3

sei=a*10+b; 上記の意味がまったく分かりません。 とりあえず、 int sei,a,b; scanf("%d",&sei); a=sei/10; b=sei%10; printf("整数は%3d, 十の位=%1d, 一の位=%1d ",sei,a,b); これではどうでしょうか。

rarirarira
質問者

お礼

iiikkkさん、ご回答ありがとうございます! sei=a*10+b; では、なんの意味もないんですね。 大変参考になりました! もう一度頑張ってみたいと思います!

回答No.2

> sei=a*10+b; これによって十位がaに、一位がbに求まると思うのがマチガイ。 scanf("%d",&sei); a = seiの十位を求める式; b = seiの一位を求める式; printf("整数は%3d, 十の位=%1d, 一の位=%1d ",sei,a,b); でなくては。

rarirarira
質問者

お礼

epistemeさん、ご回答ありがとうございます! なるほど! sei=a*10+b; では、十の位がaに、一の位がbに求まらないんですね。 いろいろ参考になります! 本当に助かりました。 もう一度頑張ってみたいと思います!

回答No.1

キーボードから入力されるのは変数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);

rarirarira
質問者

お礼

black_montblancさん、ご回答ありがとうございます! 全く勘違いしていたようです・・・。 もういちどきちんと勉強しなおさなきゃだめですね! とっても助かりました! 本当にありがとうございます!

関連するQ&A