从用户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;
}