鱼C论坛

 找回密码
 立即注册
查看: 844|回复: 6

[已解决]计算器程序输入+不起作用

[复制链接]
发表于 2022-1-17 16:11:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. //小计算器
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. int main(){
  5.         float num1, num2;
  6.         char op;
  7.        
  8.         scanf("%f%f%c", &num1,&num2,&op);
  9.        
  10.         switch(op){
  11.                 case'+':printf("%f", num1 + num2); break;
  12.                 case'-':printf("%f", num1 - num2); break;
  13.                 case'*':printf("%f", num1 * num2); break;
  14.                 case'/':if(num2 == 0){
  15.                                         printf("除数不为零!");
  16.                                 }
  17.                                 else{
  18.                                         printf("%f", num1 / num2);
  19.                                 }break;
  20.                 default:printf("INVALID OP");
  21.         }
  22.        
  23.         return 0;
  24. }
复制代码

如上 , 是一个基本的计算器 , 但是我输入加号时它返回 INVALID OP , 不知道怎么回事 , 求解
最佳答案
2022-1-17 16:29:55
因为%c读取到的是所有ASCII字符,包括换行、空格等。你输入 123 456 + 这里前面两个 %f 读取 123 和 456 后,紧接着还有空格和字符 +,所以%c会先取空格。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-17 16:15:03 From FishC Mobile | 显示全部楼层
op 读取到空格?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-17 16:18:49 | 显示全部楼层

唔 , 我是一个参数一个空格输入的 , 但是scanf不是用空格分割参数嘛
屏幕截图 2022-01-17 161757.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-17 16:20:45 From FishC Mobile | 显示全部楼层
试试改成 scanf("%f%f %c", &num1,&num2,&op);
%f%f空格%c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-17 16:23:50 | 显示全部楼层
傻眼貓咪 发表于 2022-1-17 16:20
试试改成 scanf("%f%f %c", &num1,&num2,&op);
%f%f空格%c

哇 , 可以了!
这是为什么呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-17 16:29:55 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
因为%c读取到的是所有ASCII字符,包括换行、空格等。你输入 123 456 + 这里前面两个 %f 读取 123 和 456 后,紧接着还有空格和字符 +,所以%c会先取空格。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-17 16:38:54 | 显示全部楼层
傻眼貓咪 发表于 2022-1-17 16:29
因为%c读取到的是所有ASCII字符,包括换行、空格等。你输入 123 456 + 这里前面两个 %f 读取 123 和 456 后 ...

所以读取字符类型时要空一格
明白了
谢谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-2 21:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表