2301_80454947 2023-10-28 19:34 采纳率: 16.7%
浏览 6

这段简易计算器代码哪里错了呢(语言-c++)

#include<stdio.h> 
int main() 
{
 int a, b; 
char d;
 printf("qinsghurulianggeshuz "); 
scanf("%d,%d", &a, &b);
 scanf("%c", &d);
 switch(d)
{ 
case '+': printf("jieguoshi%d", a + b); 
break; 
case '-': printf("jieguoshi%d", a - b); 
break;
 case '*': printf("jieguoshi%d", a * b); 
break; 
case '/': printf("jieguoshi%f",  a / b);
 break;
 default: printf("nidexuanzebudui, qingxuanze+-*/zhineine");
 break; 
} 
return 0;
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-28 22:29
    关注

    【以下回答由 GPT 生成】

    问题回答:

    这段C++代码中存在一些错误,以下是错误的解决方案:

    1. 问题:没有包含 <iostream> 头文件。 解决方案:在代码的开头包含 <iostream> 头文件。
    #include <iostream>
    
    1. 问题:使用错误的输入格式。 解决方案:在 scanf 函数中,将逗号 , 替换为空格,使得用户可以输入空格分隔的两个数字。
    scanf("%d %d", &a, &b);
    
    1. 问题:使用 %c 格式读取字符时,会读取到上一个 scanf 语句输入的换行符。 解决方案:在读取字符之前增加一个额外的 getchar 语句,用于消耗掉前一个 scanf 语句输入的换行符。
    getchar();
    scanf("%c", &d);
    
    1. 问题:浮点数除法时,输出格式不正确。 解决方案:在除法运算时,将结果强制转换为浮点数,使用 %f 格式进行输出。
    printf("计算结果为%f", static_cast<float>(a) / b);
    

    综上所述,修改后的代码如下所示:

    #include <iostream> 
    
    int main() 
    {
        int a, b; 
        char d;
        std::cout << "请输入两个数字 ";
        std::cin >> a >> b;
        std::cin.ignore(); // 忽略上一个输入语句留下的换行符
        std::cin.get(d);
    
        switch(d)
        { 
            case '+': 
                std::cout << "计算结果为" << a + b;
                break;
            case '-': 
                std::cout << "计算结果为" << a - b;
                break;
            case '*': 
                std::cout << "计算结果为" << a * b;
                break;
            case '/': 
                std::cout << "计算结果为" << static_cast<float>(a) / b;
                break;
            default: 
                std::cout << "选择不正确,请选择+ - * /";
                break; 
        } 
    
        return 0;
    }
    

    现在这段代码已经修复了之前提到的错误,并且使用了更标准的C++输入输出方式。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月28日