注册 登录
编程论坛 C语言论坛

scanf里面%c前面什么时候加空格,为什么有时候加有时候不加

黑暗骑士5D 发布于 2019-11-17 11:50, 3594 次点击
输入一个四则运算表达式,输出运算结果,要求对除数为0的情况作特别处理。题目保证输入与输出均在双精度范围内。

输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间没有空格,操作数的数据类型为实型。

输出格式:
在一行中输出表达式的运算结果,保留两位小数。
比如这道题
如果除法分母为0,则输出错误信息“Divisor can not be 0!”;如果输入了除加减乘除以外的非法运算符,则输出错误信息“Unknown operator!”。

输入样例1:
3.1+4.8
输出样例1:
7.90
输入样例2:
98/0
输出样例2:
Divisor can not be 0!
输入样例1:
123%3
输出样例1:
Unknown operator!


int main()
{
   double a,b,d;
   char c;
   scanf("%lf%c%lf",&a,&c,&b);
   switch(c)
  {case'+':printf("%.2lf",a+b);break;
   case'-':printf("%.2lf",a-b);break;
   case'*':printf("%.2lf",a*b);break;
   case'/':
    {if(b==0)
    printf("Divisor can not be 0!");
    else if(b!=0)
    printf("%.2lf",a/b);break;
    }break;
   default:printf("Unknown operator!");break;
  }
  return 0;
}
为什么这个里面%c前面不加
3 回复
#2
rjsp2019-11-18 09:27
为什么这个里面%c前面不加
因为
其间没有空格

#3
黑暗骑士5D2019-11-19 12:25
回复 2楼 rjsp
为什么有时候要加
#4
rjsp2019-11-19 13:21
以下是引用黑暗骑士5D在2019-11-19 12:25:54的发言:

为什么有时候要加

你问的东西怎么如此奇怪?
scanf 的格式化字符串中,空白字符 表示略过连续的所有空白字符。你需要略过空白字符,你就加;你不需要略过空白字符,你就不加。

就像吃法,饿了想吃就吃,饱了不想吃就不吃。为什么老是问“为什么有时吃饭有时不吃饭”
1