2014-09-23 78 views
-1
#include<stdlib.h> 
#include <stdio.h> 
int main() 
{ 
    int T,N,a; 
    scanf("%d\n",&T); //test cases 
    int A[T]; 

    for(int i=0;i<T;i++) {  
     scanf("%d\n",&N); //number of box in a test case 
     int X[N]; 
     for(int j=0;j<=N-1;j++)  
      scanf("%d\n",&X[j]); 

     a=N; 
     for(int k=0,l=0;l<(a-1);l++) { 
      if(X[k]<X[++k]) 
       N=N-1; 
     } 
     A[i]=N; 
    } 

    for(int i=0;i<T;i++) 
     printf("%d\n",A[i]); 

    system("pause"); 
    return 0; 
} 

該代碼在程序結束時要求額外的輸入,然後顯示輸出。但是,它從不考慮我給出的最後輸入,也不需要最後的輸入。我可以做些什麼改變,所以它不會要求額外的輸入。將小尺寸盒子放在較大的盒子中

回答

0

scanf格式字符串的末尾不需要\n。只需在scanf調用中將"%d\n"更改爲"%d"即可。

scanf在格式字符串中遇到空格字符(包括'\n')時,它會跳過所有空白字符,直到它遇到非空白字符。如果你還沒有輸入另一個非空白字符,它將等待你輸入一個。所以,如果你這樣做scanf

int x; 
scanf("%d\n", &x); 

...然後你在鍵盤上輸入5<Enter>,scanf函數設置x5然後等待你進入另一種非空白字符,因爲你有告訴它將數值讀入x,然後跳過任何/所有空白字符,直到遇到下一個非空白字符。