#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;
}
这段简易计算器代码哪里错了呢(语言-c++)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注【以下回答由 GPT 生成】
问题回答:
这段C++代码中存在一些错误,以下是错误的解决方案:
- 问题:没有包含
<iostream>头文件。 解决方案:在代码的开头包含<iostream>头文件。
#include <iostream>- 问题:使用错误的输入格式。
解决方案:在
scanf函数中,将逗号,替换为空格,使得用户可以输入空格分隔的两个数字。
scanf("%d %d", &a, &b);- 问题:使用
%c格式读取字符时,会读取到上一个scanf语句输入的换行符。 解决方案:在读取字符之前增加一个额外的getchar语句,用于消耗掉前一个scanf语句输入的换行符。
getchar(); scanf("%c", &d);- 问题:浮点数除法时,输出格式不正确。
解决方案:在除法运算时,将结果强制转换为浮点数,使用
%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++输入输出方式。
【相关推荐】
- 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7634936
- 这篇博客你也可以参考下:插入排序原理及其代码实现(c/c++)
- 您还可以看一下 黄强老师的轻松掌握C++数据库编程课程中的 C++数据库编程简介小节, 巩固相关知识点
- 除此之外, 这篇博客: 数据结构线性顺序栈中的 C++语言实现代码 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报- 问题:没有包含