2017-02-12 1 views
1

私は、選択した日数(3〜10日)の間ハイとローを入力するようにユーザーに促すコードを書いています。これまでのところ、全てが正しく出てきていますが、scanf関数の例外として、高温と低温を入力する必要があります。たとえばDay 1 HighとLowが出力されますが、ユーザーの入力はDay 1 Lowから開始されるため、Highの入力はLowの次に、Lowの入力は次の空白行に入力されます。Scanfがラインをスキップする

printfがscanfが有効になる前にhighとlowの両方を出力する機能が終了している可能性があります。 scanfが発生するような方法はありますか?高い値と低い値を相互に入力できるようにする方法はありますか?ここに私のコードです:

#include <stdio.h> 

int main (void) 
{ 
    int i; 
    int limit; 
    int day[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
    int high[10],low[10]; 

    printf("---===IPC Temperature Analyzer V2.0===---\n"); 

    printf("Please enter the number of days between 3 and 10, inclusive: "); 
    scanf("%d", &limit); 
    while (limit <= 2 || limit >= 11) { 
      printf("Invalid"); 
      scanf("%d", &limit); 
    } 

    for(i = 0;i < limit; i++) { 
      printf("Day %d - High:\n Day %d - Low: ",day[i],day[i]); 
      scanf("%d%d", &high[i], &low[i]); 
    } 

    return 0; 
} 
+0

画面上のカーソル:

for(i = 0;i < limit; i++) { printf("Day %d - High: ", day[i]); scanf("%d", &high[i]); printf("Day %d - Low: ", day[i]); scanf("%d", &low[i]); } 

これがその結果。 scanf( "%d"、&high [i]); printf( "日%d - 日")などのように、 Low: "、day [i]); scanf("%d "、&low [i]); – Shiping

+0

プロンプトの '\ n'は次の行に移動しました。どのようにしてシステムは、カーソルがラインの上に移動することを魔法のように期待することができますか?最初のエントリのプロンプトを表示し、その入力を取得し、次に2番目のエントリのプロンプトを表示し、その入力を取得します。 –

+0

私はあなたの提案をWasiに適用しました。私はこのメソッドを最初に試してみましたが、私のコードにはその時に他のエラーがあったと考えられ、すべての高値を出力してからすべて低値を出力しました。 – Jinto

答えて

2

あなたはこのようなものをお探しですか?あなたが見たもの、それがどのように動作するかで、最後のプリントアウトの最後になります

Please enter the number of days between 3 and 10, inclusive: 4 
Day 1 - High: 5 
Day 1 - Low: 3 
Day 2 - High: 4 
Day 2 - Low: 2 
Day 3 - High: 2 
Day 3 - Low: 1 
Day 4 - High: 5 
Day 4 - Low: 9 
関連する問題