dポイントプレゼントキャンペーン実施中!

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

A 回答 (2件)

>最後のscanfのところの"%1s"とはどういう意味ですか。

%cとはどう違うのですか?

%cにするとうまく動作しない事を経験で知っているからです。
恐らく、その前のscanfのデータを確定する際の<Enter>が、標準入力バッファに残っていて、次の%cを確定されてしまうんでしょうね。

>scanf("%1s",&key);の部分をgetchar()を使うと無視されて、終了してしまうのはなぜですか。

これも前の質問の回答と同じ事ですね。
key = getchar();
にすると、keyには'Y'や'y'以外の値、恐らく0x0aか0x0dが入っているので、whileループから抜けてしまうんです。
    • good
    • 0

#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 ;
}

この回答への補足

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

補足日時:2004/06/30 00:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!