我尝试制作一个具有正确Divide功能的程序。 我的代码是:
#include <iostream>
using namespace std;
double x,y,z,a;
double divide(x,y) {
if (x >= y) {
x=z;
z=y;
y=x;
return(x/y);
}
else
return(y/x);
}
int main()
{
double x,y,z ;
cout << "Enter x " <<endl;
cin >> x;
cout << "Enter y " <<endl;
cin >> y;
a = divide (x,y);
cout << a <<endl;
system("pause");
return 0;
}
我有2个错误:
expected `,' or `;' before '{' token
在{
行上。正好位于双重划分(x, y)
行
另一个错误
divide cannot be used as a function
在a = divide (x, y);
行上。 我正在使用Code:Blocks
答案 0 :(得分:13)
您需要为函数divide
指定正确的函数签名。具体来说,该函数的参数缺少其类型:
double divide(double x, double y)
{
...
}
您还需要在if语句中为每个块创建一个范围:
if (x > y)
{
...
}
else
{
...
}
答案 1 :(得分:3)
if语句中的大括号不会绕过else块。你需要一对单独的支架。尝试:
if (x >= y){
x=z ;
z=y ;
y=x ;
return(x/y);
}
else {
return(y/x);
}
第二组大括号(在'else'之后的代码的一行周围不是绝对必要的;如果块只有一行,你可以将大括号从if或else中删除。但是当你“你可能不应该这么做,因为这样很容易犯错误。”
此外,您还没有为除法函数中的x
和y
变量提供类型。您必须为它们指定类型,就像对任何其他变量一样。你写过了
double x,y,z,a ;
......在功能之外,但这没有帮助;它定义了名为x
,y
,z
和a
的 new 双变量,完全独立于函数中的变量。
答案 2 :(得分:0)
更正了if ... else中的大括号。还需要在函数的参数中定义一个类型。
using namespace std;
double x,y,z,a ;
double divide (double x, double y)
{
if (x >= y){
x=z ;
z=y ;
y=x ;
return(x/y);
}
else
{
return(y/x);
}
}
int main()
{
double x,y,z ;
cout << "Enter x " <<endl;
cin >> x ;
cout << "Enter y " <<endl;
cin >> y ;
a = divide (x,y);
cout << a <<endl;
system("pause");
return 0;
}
答案 3 :(得分:0)
#include <iostream>
using namespace std;
// divides x/y
double divide (x,y)
{
if(y != 0)
{
/*{} <- this is called a scope.
it is important to keep track of scopes.
each function has it's own scope
each loop or an if instruction can have it's own scope
in case it does - all the instructions from the scope will be executed
in case it doesn't - only the 1st instruction after the if/else/for/while etc. will be executed
Here's another funny thing about scopes :
{
double x; // this variable exists ONLY within this scope
}
{
// y doesn't exist here
{
double y; // y exists here. it's local
}
// y doesn't exist here
}
*/
return x / y;
}
else
return 0;
}
int main()
{
double x,y;
cout << "Enter x " <<endl;
cin >> x ;
cout << "Enter y " <<endl;
cin >> y ;
double a = divide (x,y);
cout << a <<endl;
cin;
return 0;
}