C ++中没有2个操作数的数学计算器
Posted
技术标签:
【中文标题】C ++中没有2个操作数的数学计算器【英文标题】:Math Calculator without 2 operands in C++ 【发布时间】:2017-09-22 22:19:34 【问题描述】:该值从 0 开始,然后可以使用数学的任何操作数进行计算。代码编译成功,但不起作用。终端窗口显示“中止”、“重试”和“取消”。规则是您不能使用 2 个操作数,而只能将前一个数字添加到当前操作数。
#include <iostream>
#include <cmath>
using namespace std;
void Input(double input);
int main()
double sign, input;
cout << "This program calculates any given number upto 1 decimal place using the following operators:" << endl;
cout << " '+' - Addition." << endl;
cout << " '-' - Subtraction" << endl;
cout << " '*' - Multiplication." << endl;
cout << " '^' - Root." << endl;
cout << " '/' - Division." << endl;
Input(input);
return 0;
void Input(double IN)
char q;
char sign;
int Val = 0.0;
cin >> sign >> IN;
while (IN != q)
if (sign = '-')
Val -= IN;
if (sign = '+')
Val += IN;
if (sign = '*')
Val *= IN;
if (sign = '/')
Val /= IN;
cout << endl << "Result so far is " << IN;
IN++;
【问题讨论】:
强烈建议您明确指出给您带来麻烦的原因。我可以在代码中看到一个可能是问题的重复错误,但我宁愿有固定的球门柱。 程序不行,我想根据提供的操作符号来计算个数。 哪里不行?什么线条/表达?它做了什么而不是你想让它做什么? 它编译成功但不起作用。它说“运行时检查失败 #3-T” 您解决了所有编译器警告吗?编译器警告是来自编译器的重要消息,即使语法正确,您的逻辑也可能不正确。 【参考方案1】:你的主要问题是
q
未定义,因此 while(IN != q)
将变为未定义行为
在C++
中,对于任何原始数据类型=
表示赋值运算符,而不是比较运算符。要比较某些内容,请改用 ==
。
Val
是一个具有 int
数据类型的变量,但赋值为 0.0
,这是一个浮点数或双精度值。
你的程序在 if 语句中的作用是:(例如这个if
语句)
if (sign = '-')
-
程序将
-
的值45
赋给sign
变量
if
语句检查变量sign
的值0
如果值为0
,则语句被认为是false
并跳过该块
如果值不是0
,则语句考虑true
并进入块
程序运行if
块内的代码
该程序为您代码中的每个 if
语句执行所有这 3 件事,我很少在 Windows
中运行我自己的代码,所以我不太确定为什么程序会给出 Run-Time Check Failure #3-T
错误
一点建议,当您需要使用多个if
语句时使用switch
,因为它更易于阅读。
【讨论】:
值得编辑添加Val
是一个整数,它会丢弃所有计算的分数,而 IN
作为参数没有任何作用。
"Run-Time Check Failure #3-T" 几乎可以肯定,当 input
在 main
中未初始化使用或 q
在 Input
中未初始化使用时,Visual Studio 会停止程序。
@user4581301 谢谢提醒,这么简单的数据类型错误怎么可能忽略。但是Val
作为一个整数并被分配给/=
对我来说不是一个主要问题,因为我不完全理解程序的初衷是什么,我只是指出了一些容易错过的错误,并使用IN
作为没有任何真实参数的函数参数也没什么大不了的,因为它更多的是关于“如何编写正确的代码”而不是“如何编写工作代码”(因为有时我使用一次性参数来选择哪个函数用于函数重载)。
@user4581301 如果我的理解是正确的,那么Run-Time Check Failure #3-T
基本上是VS内置的未定义行为检查器吗?如果是这样,那么在未定义行为检查器中构建一个非常简洁
Visual Studio 的调试版本有各种各样的检查和调整,旨在让世界更安全,远离不良代码。他们不能得到一切,但他们工作得很好。以上是关于C ++中没有2个操作数的数学计算器的主要内容,如果未能解决你的问题,请参考以下文章