漆雕古代 发表于 2016-2-22 09:00:00

关于S1E12作业动动手0

题目我就不再赘述了,小甲鱼的答案如下,我的代码也差不多。#include <stdio.h>

int main()
{
      int op1, op2;
      char ch;
      float result;

      printf("请输入式子:");
      scanf("%d %c %d", &op1, &ch, &op2);

      switch (ch)
      {
                case '-': op2 = -op2; // no break
                case '+': result = op1 + op2; break;
                case '*': result = op1 * op2; break;
                case '/': result = (float)op1 / op2; break;
      }

      printf("结果是:%.2f\n", result);

      return 0;

}

我的问题是,当我输入 op1 是浮点数时, op2如果是整型,那么这个时候减法就会出现0.00的结果,原因我是明白的,但是有什么好的解决方案吗?

人造人 发表于 2016-2-22 14:20:32

你用 %d 接收 当然要输入整数了
为什么要输入浮点数?
要输入浮点数 用 %f 啊

漆雕古代 发表于 2016-2-22 15:53:20

人造人 发表于 2016-2-22 14:20
你用 %d 接收 当然要输入整数了
为什么要输入浮点数?
要输入浮点数 用 %f 啊

但是如果用了%f如果我输入的是一个整型会有影响吗?

人造人 发表于 2016-2-22 18:27:26

漆雕古代 发表于 2016-2-22 15:53
但是如果用了%f如果我输入的是一个整型会有影响吗?

int ret;
float tmp;

scanf ("%f", &tmp);
ret = (int)tmp;
这样也许可以,不过为什么要这样做哪?
需要整数就用 %d
需要浮点数就用 %f
不行吗?

漆雕古代 发表于 2016-2-22 18:49:25

人造人 发表于 2016-2-22 18:27
int ret;
float tmp;



恩,谢谢啦,我只是想让程序更智能一点,不用在改变输入类型的时候去修改源代码{:5_110:}
页: [1]
查看完整版本: 关于S1E12作业动动手0