• ベストアンサー

C言語

距離と平均速度を入力させ、所要時間を計算して表示せよ。なお次のような表示を出力して、yかnを入力させ、yの時にはうえの処理を繰り返すようにせよ。という問題を考えてもyを入力したあと繰り返すようにすることができません。 できれば、プログラムを書いて教えてください。

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

  • ベストアンサー
  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.2

>最後のscanfのところの"%1s"とはどういう意味ですか。%cとはどう違うのですか? %cにするとうまく動作しない事を経験で知っているからです。 恐らく、その前のscanfのデータを確定する際の<Enter>が、標準入力バッファに残っていて、次の%cを確定されてしまうんでしょうね。 >scanf("%1s",&key);の部分をgetchar()を使うと無視されて、終了してしまうのはなぜですか。 これも前の質問の回答と同じ事ですね。 key = getchar(); にすると、keyには'Y'や'y'以外の値、恐らく0x0aか0x0dが入っているので、whileループから抜けてしまうんです。

その他の回答 (1)

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

#include <stdio.h> int main() { int m,s ; char key ; do { printf("距離 (km)\t: "); scanf("%d",&m); printf("速度 (km/h)\t: "); scanf("%d",&s); printf("時間 (h:mm:ss)\t: %d:%02d:%02d\n",m/s,(60*m/s)%60,(3600*m/s)%60); printf("続行 (Y/N)\t: "); scanf("%1s",&key); } while ( key == 'Y' || key == 'y' ); return 0 ; }

rankle
質問者

補足

最後のscanfのところの"%1s"とはどういう意味ですか。%cとはどう違うのですか? scanf("%1s",&key);の部分をgetchar()を使うと無視されて、終了してしまうのはなぜですか。

関連するQ&A