鱼C论坛

 找回密码
 立即注册
查看: 1905|回复: 5

[已解决]简单四则计算器问题

[复制链接]
发表于 2020-9-29 10:31:26 | 显示全部楼层 |阅读模式

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

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

x
  1. #include <stdio.h>
  2. #include <stdbool.h>

  3. int main()
  4. {
  5.     float Num1, Num2;
  6.     char ch;
  7.     float result;
  8.     bool invalid = true;

  9.     printf("Please enter the formula:");
  10.     scanf("%f %c %f", &Num1, ch, Num2);

  11.     switch (ch)
  12.     {
  13.         case '-': Num2 = -Num2; //No Break!!!
  14.         case '+': Num1 + Num2; break;
  15.         case '*': Num1 * Num2; break;
  16.         case '/':
  17.             if (Num2 != 0)
  18.             {
  19.              result = Num1 / Num2; break;
  20.             }
  21.             else
  22.             {
  23.                 invalid = false; break;
  24.             }
  25.     }
  26.    
  27.     if (invalid)
  28.     {
  29.         printf("Divisor cannot be zero!\n");
  30.     }
  31.     else
  32.     {
  33.         printf("result is : %.2f\n", result);
  34.     }
  35.    
  36.     return 0;
  37. }
复制代码

上面是仿造小甲鱼的代码写的


下面是小甲鱼的
  1. #include <stdio.h>
  2. #include <stdbool.h>

  3. int main()
  4. {
  5.         float op1, op2;
  6.         char ch;
  7.         float result;
  8.         bool invalid = false;

  9.         printf("请输入式子:");
  10.         scanf("%f %c %f", &op1, &ch, &op2);

  11.         switch (ch)
  12.         {
  13.                 case '-': op2 = -op2; // no break
  14.                 case '+': result = op1 + op2; break;
  15.                 case '*': result = op1 * op2; break;
  16.                 case '/':
  17.                         if (op2 != 0)
  18.                         {
  19.                                 result = op1 / op2;
  20.                                 break;
  21.                         }
  22.                         else
  23.                         {
  24.                                 invalid = true;
  25.                                 break;
  26.                         }
  27.         }

  28.         if (invalid)
  29.         {
  30.                 printf("除数不能为零!\n");
  31.         }
  32.         else
  33.         {
  34.                 printf("结果是:%.2f\n", result);
  35.         }

  36.         return 0;
  37. }
复制代码




自己的运行后总是出错 找不出错误 请各位指点指点
最佳答案
2020-9-29 13:12:57
四处错误,帮你修改并注释了
  1. #include <stdio.h>
  2. #include <stdbool.h>

  3. int main()
  4. {
  5.     float Num1, Num2;
  6.     char ch;
  7.     float result;
  8.     bool invalid = true;

  9.     printf("Please enter the formula:");
  10.     scanf("%f %c %f", &Num1, &ch, &Num2);//错误1、这里后两个变量没有加取地址符

  11.     switch (ch)
  12.     {
  13.         case '-': Num2 = -Num2; //No Break!!!
  14.         case '+': result = Num1 + Num2; break;//错误2、计算结果没有赋值给result
  15.         case '*': result = Num1 * Num2; break;//错误3、计算结果没有赋值给result
  16.         case '/':
  17.             if (Num2 != 0)
  18.             {
  19.              result = Num1 / Num2; break;
  20.             }
  21.             else
  22.             {
  23.                 invalid = false; break;
  24.             }
  25.     }
  26.    
  27.     if (!invalid)//错误4、你的invalid是当除数为0的时候设为false,那么这里应该是除数为0的时候进入else
  28.     {
  29.         printf("Divisor cannot be zero!\n");
  30.     }
  31.     else
  32.     {
  33.         printf("result is : %.2f\n", result);
  34.     }
  35.    
  36.     return 0;
  37. }
复制代码
截屏2020-09-29 10.25.59.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-29 11:37:25 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdbool.h>

  3. int main()
  4. {
  5.     float Num1, Num2;
  6.     char ch;
  7.     float result;
  8.     bool invalid = true;

  9.     printf("Please enter the formula:");
  10.     scanf("%f %c %f", &Num1, &ch, &Num2); // 后面少了两个&

  11.     switch (ch)
  12.     {
  13.         case '-': Num2 = -Num2; //No Break!!!
  14.         case '+': Num1 + Num2; break;
  15.         case '*': Num1 * Num2; break;
  16.         case '/':
  17.             if (Num2 != 0)
  18.             {
  19.              result = Num1 / Num2; break;
  20.             }
  21.             else
  22.             {
  23.                 invalid = false; break;
  24.             }
  25.     }
  26.    
  27.     if (invalid == flase) //注意你invalid的变量怎么设的,什么时候改变
  28.     {
  29.         printf("Divisor cannot be zero!\n");
  30.     }
  31.     else
  32.     {
  33.         printf("result is : %.2f\n", result);
  34.     }
  35.    
  36.     return 0;
  37. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-9-29 13:12:57 | 显示全部楼层    本楼为最佳答案   
四处错误,帮你修改并注释了
  1. #include <stdio.h>
  2. #include <stdbool.h>

  3. int main()
  4. {
  5.     float Num1, Num2;
  6.     char ch;
  7.     float result;
  8.     bool invalid = true;

  9.     printf("Please enter the formula:");
  10.     scanf("%f %c %f", &Num1, &ch, &Num2);//错误1、这里后两个变量没有加取地址符

  11.     switch (ch)
  12.     {
  13.         case '-': Num2 = -Num2; //No Break!!!
  14.         case '+': result = Num1 + Num2; break;//错误2、计算结果没有赋值给result
  15.         case '*': result = Num1 * Num2; break;//错误3、计算结果没有赋值给result
  16.         case '/':
  17.             if (Num2 != 0)
  18.             {
  19.              result = Num1 / Num2; break;
  20.             }
  21.             else
  22.             {
  23.                 invalid = false; break;
  24.             }
  25.     }
  26.    
  27.     if (!invalid)//错误4、你的invalid是当除数为0的时候设为false,那么这里应该是除数为0的时候进入else
  28.     {
  29.         printf("Divisor cannot be zero!\n");
  30.     }
  31.     else
  32.     {
  33.         printf("result is : %.2f\n", result);
  34.     }
  35.    
  36.     return 0;
  37. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

头像被屏蔽
发表于 2020-9-30 06:58:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-1 13:50:34 | 显示全部楼层
我的系统里竟然没有 stdbool.h,下载了一个,小甲鱼的程序才运行正常

你的问题还没解决?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-9 11:11:27 | 显示全部楼层
乐乐学编程 发表于 2020-10-1 13:50
我的系统里竟然没有 stdbool.h,下载了一个,小甲鱼的程序才运行正常

你的问题还没解决?

我是用 VS code
很方便 可以自定义很多插件
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 20:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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