在进行多次scanf时,printf输出错误

时间:2023-11-10 19:05:32

随便一处代码,经过改正后,输出正确的

'''

#include <stdio.h>

int main()
{
    int T;
    scanf("%d",&T);
    getchar();
    while(T--)
    {
        char p;int y;
        scanf("%c%d",&p,&y);
        getchar();
        int num;
        if(p>='a'&&p<='z')
            num=-(p-'a'+1)+y;
        if(p>='A'&&p<='Z')
            num=(p-'A'+1)+y;
        printf("%d\n",num);
    }
}

'''

出现printf输出错误的原因,因为我们的输入输出是在缓冲区进行读写的,scanf完后会有换行符,读入缓冲区,然后如果这时有scanf就会把换行符读入进去,造成还没有输入就输出了。解决方法是在scanf后面,加上getchar()将换行符从缓冲区读出来