如何评估操作,然后打印消息



从用户w、x、y、z中获取4个变量。如果w'x'y=z打印"你是对的",否则,打印"错误

下面是我为这个问题创建的代码,但似乎有问题。

#include<iostream>
using namespace std;
void calculate(int w, char x, int y, int z)
{
if (x == '+') {
int z = w + y ;
cout << "You are right" <<endl;
}
else if (x == '-') {
int z = w - y ;
cout << "You are right" << endl;
}
else if (x == '*') {
int z = x * y;
cout << "You are right" << endl;
}
else
cout << "Error!" << endl;
}

int main()
{
int w, y, z;
char x;
cout << "Enter values for w, x, y, and z: " << endl;
cin >> w >> x >> y >> z;
cout << endl;
calculate(w, y, x, z);
return 0;
}
void calculate(int w, char x, int y, int z)
{
if (x == '+') {
int z = w + y ;
cout << "You are right" <<endl;
}
else if (x == '-') {
int z = w - y ;
cout << "You are right" << endl;
}
else if (x == '*') {
int z = x * y;
cout << "You are right" << endl;
}
else
cout << "Error!" << endl;
}

如果仔细观察,int z = w + y是错误的,因为您已经将z作为函数参数
然而,正确的语句应该是z = w + y

第二件事,您需要从函数参数中删除int z,但要在函数体中声明和定义它。这是因为当您从main()传递z时,实际上并不是在传递变量z。而仅仅是它的值,它将在calculate中被复制到int z中。

传递z作为参考

如果您希望主目录中的z更新,则应通过引用传递该值。

void calculate(int w,char x,int y,int& z)
{
//updating z
}

现在,如果您在calculate()中对z进行任何更改,它也将显示为您的main()

另一种解决方案是从函数返回int,并将其分配给main()中的变量z

#include <iostream>
int calculate(int w,int y,char x)
{
switch(x)
{
case '+': 
std::cout << "You are right!n";
return w+y;
case '-':
std::cout << "You are right!n";
return w-y;
case '*':
std::cout << "You are right!n";
return w*y;

default:
std::cout << "You are wrong!n";
break;
}
}
int main()
{
int w = 5;
int y = 10;
char x = '+';
int z = calculate(w,y,x);
std::cout << z;
return 0;
}

最新更新