将小尺寸的盒子放在更大的盒子里

时间:2014-09-23 20:01:33

标签: c

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

此代码在程序结束时要求额外输入,然后显示输出。但是,它从不考虑我给出的最后一个输入,也不需要最后输入。我可以在这做什么改变,所以它不会要求额外的输入。

1 个答案:

答案 0 :(得分:0)

您的\n格式字符串末尾不需要scanf。只需在"%d\n"次来电中将"%d"更改为scanf

scanf在格式字符串中遇到空白字符(包括'\n')时,它会跳过所有空格,直到它遇到非空白字符。如果您尚未输入另一个非空格字符,它将等待您输入一个字符。所以,如果你这样做scanf

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

...然后您在键盘上输入5<Enter>,scanf将x设置为5,然后等待,以便您输入另一个非空白character,因为你告诉它将数值读入x然后跳过任何/所有空格,直到它遇到下一个非空格字符。