c++编程代码他说我没定义初始值,那该怎么做,或者还有哪些错误,麻烦大家指正?

2025-05-11 09:50:40
推荐回答(2个)
回答1:

在这个执行计算的函数中,只定义了三个形参的类型,但是却没有定义接收实参值的实际变量。而在下面定义的两个整型变量和一个字符变量都没有能够获得值,(原本它们应该是从形式参数表中接受初始值的)另外,这个函数在执行的过程中直接输出计算的结果,但是最后的返回值却是写了返回0,那么这个返回的0就会在主函数中调用时被直接输出,也就是说输出一个0。

下面已经把这个程序做了修改,请查阅修改后的源代码和运行的结果。

另外,这个程序没有对除数为零做出检测,除非要能够确保输入的除数是不等于0的。

#include

using namespace std;

int evaluate(int n1,int n2,char oper)

{ if(oper='+')

return n1+n2;

else if(oper='-')

return n1-n2;

else if(oper='*')

return n1*n2;

else if(oper='/')

return n1/n2;

else if(oper='%')

return n1%n2;

}

int main()

{ int num1,num2;

char oper;

cin>>num1>>num2>>oper;

cout<

return 0;


}

回答2:

#include  

using namespace std; 

int evaluate(int n1,int n2,char oper) { int b; //不要急于在函数中输出,应当返回结果值

if ( oper=='+' ) b=n1+n2; //两个等号是逻辑判断,一个是赋值

else if ( oper=='-' ) b=n1-n2;

else if ( oper=='*' ) b=n1*n2;

else if ( oper=='/' ) b=( n2==0 )?(0):(n1/n2);

else if ( oper=='%' ) b=n1%n2;

return b;

}
int main(){ int num1,num2; char oper,s[20]; 

cin>>num1>>num2>>s; oper=s[0]; 

cout<

return 0; 

}