计算器程序输入+不起作用
//小计算器#include <bits/stdc++.h>
using namespace std;
int main(){
float num1, num2;
char op;
scanf("%f%f%c", &num1,&num2,&op);
switch(op){
case'+':printf("%f", num1 + num2); break;
case'-':printf("%f", num1 - num2); break;
case'*':printf("%f", num1 * num2); break;
case'/':if(num2 == 0){
printf("除数不为零!");
}
else{
printf("%f", num1 / num2);
}break;
default:printf("INVALID OP");
}
return 0;
}
如上 , 是一个基本的计算器 , 但是我输入加号时它返回 INVALID OP , 不知道怎么回事 , 求解 op 读取到空格? 傻眼貓咪 发表于 2022-1-17 16:15
op 读取到空格?
唔 , 我是一个参数一个空格输入的 , 但是scanf不是用空格分割参数嘛 试试改成 scanf("%f%f %c", &num1,&num2,&op);
%f%f空格%c 傻眼貓咪 发表于 2022-1-17 16:20
试试改成 scanf("%f%f %c", &num1,&num2,&op);
%f%f空格%c
哇 , 可以了!
这是为什么呢 因为%c读取到的是所有ASCII字符,包括换行、空格等。你输入 123 456 + 这里前面两个 %f 读取 123 和 456 后,紧接着还有空格和字符 +,所以%c会先取空格。 傻眼貓咪 发表于 2022-1-17 16:29
因为%c读取到的是所有ASCII字符,包括换行、空格等。你输入 123 456 + 这里前面两个 %f 读取 123 和 456 后 ...
所以读取字符类型时要空一格
明白了
谢谢~
页:
[1]