C语言一个小小的问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 05:05:18
#include <stdio.h>

void main()
{
int num1,num2;
char op;
printf("请输入两个数:");
scanf("%d%d",&num1,&num2);
printf("请输入一个运算符");
scanf(" %c",&op);
if(op=='-')
{
printf("num1-num2=%d",num1-num2);

}
if(op=='+')
{
printf("num1+num2=%d",num1+num2);
}
if(op=='*')
{
printf("num1*num2=%d",num1*num2);

}
if(op=='/')
{
printf("num1/num2=%d",num1/num2);

}
if(op=='%')
{
printf("num1%+num2=%d",num1%num2);

}
}

这里为什麽scanf(" %c"&op);里的%c前面为什麽要加个空格?

上面不对.这跟scanf的工作原理有关系.因为scanf工作是从缓冲区抓数据的.如果不加空格,运行到scanf(" %c",&op); 的时候它就会把你输入数字后输入的回车当一个字符抓出来赋给变量op.而不再让你输入数据...所以一定要加空格.如果不加的话则要清空缓存区

一般用scanf输入字符的时候都要清空缓存区.否则很容易出现错误.
fflush(stdin); //清空缓存区

如果你输入两个数后 在输运算符之前想加个空格,那么%c之前一定要加个空格的,要不无法识别

如果你输入两个数后 想直接在后面输入运算符,则%c前加不加空格都没关系,不影响运算

这个可加可不加,没什么影响的