该值从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++;
}
}
答案 0 :(得分:0)
您的主要问题是
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
中运行自己的代码,因此我无法确定为什么程序会给{{1} 1}}错误
一点建议,每当需要使用多个Run-Time Check Failure #3-T
语句时使用switch
,因为它更容易阅读。