未被驯化的甲鱼 发表于 2022-10-20 16:03:40

同学们! -1.#R 是什么意思?以及为什么会输出这个?

以下代码目的:输入一个形式如“操作数 运算符 操作数”的表达式,对2个整数进行乘、除或求余运算。

出问题行在:case '/':printf("%f/%f=%.2f\n",a,b,(float)a/b);

我想知道:-1.#R 是什么意思?以及为什么会输出这个?

#include <stdio.h>
int main()
{
        char ch;
        int a,b;
        printf("操作数 运算符 操作数: ");
        scanf("%d%c%d",&a,&ch,&b);
       
        switch(ch){
                case '*':printf("%d*%d=%d",a,b,a*b);break;
                case '/':printf("%f/%f=%.2f\n",a,b,(float)a/b);
                                 printf("%.2f",(float)a/b);break;
                case '%':printf("%d%%%d=%d",a,b,a%b);break;
        }
}

jackz007 发表于 2022-10-20 16:20:15

本帖最后由 jackz007 于 2022-10-20 16:21 编辑

         没别的,一切的原因是,你用 %f 显示了一个整型数
#include <stdio.h>
int main()
{
      char ch   ;
      int a,b   ;
      printf("操作数 运算符 操作数: ");
      scanf("%d%c%d",&a,&ch,&b);
      
      switch(ch){
                case '*':printf("%d*%d=%d",a,b,a*b);break;
                case '/':printf("%d/%d=%.2f\n",a,b,(float)a/b);   // 这里有修改,把 "%f/%f=%.2f" 改为 "%d/%d=%.2f"世界就太平了
                                 printf("%.2f", (float)a/b) ; break;
                case '%':printf("%d%%%d=%d",a,b,a%b);break;
      }
}

未被驯化的甲鱼 发表于 2022-10-20 18:27:03

jackz007 发表于 2022-10-20 16:20
没别的,一切的原因是,你用 %f 显示了一个整型数

%.2f 对应的不是(float)a/b?
为什么这一项不能正常输出?

jackz007 发表于 2022-10-20 18:33:08

未被驯化的甲鱼 发表于 2022-10-20 18:27
%.2f 对应的不是(float)a/b?
为什么这一项不能正常输出?

         编译、运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
操作数 运算符 操作数: 1/2
1/2=0.50
0.50
D:\\C>
         难道这个结果还没有正常输出?

zhangjinxuan 发表于 2022-10-21 06:51:12

会不会是读入的原因?

未被驯化的甲鱼 发表于 2022-10-22 15:16:04

jackz007 发表于 2022-10-20 18:33
编译、运行实况:

         难道这个结果还没有正常输出?

不是,我输出的是 -1.#R
你直接复制我的代码运行试试?

jackz007 发表于 2022-10-22 15:19:16

未被驯化的甲鱼 发表于 2022-10-22 15:16
不是,我输出的是 -1.#R
你直接复制我的代码运行试试?

      我贴了一份修改过的代码在 2 楼,我让你编译运行的是它!

未被驯化的甲鱼 发表于 2022-10-22 15:19:21

jackz007 发表于 2022-10-20 18:33
编译、运行实况:

         难道这个结果还没有正常输出?

c-free5输出不行
我用vs code又可以了
不知道为什么
页: [1]
查看完整版本: 同学们! -1.#R 是什么意思?以及为什么会输出这个?