0

这是我的代码。我尝试修复它,但总是得到相同的错误:“int”之前的预期主表达式。

在第 47、55、63、80、86 行。

而且我之前已经小部分尝试过这个程序并且它有效。它没有标记该错误。

` #包括

using namespace std;


int add (int a, int b)
{
int r;
r=a+b;
return (r);
}


int ssub (int a, int b)
{
int r;
r=a-b;
return (r);
}


int mult(int a, int b)
{
int r;
r=a*b;
return (r);
}


int menu(int a, int b){

int r;
char x;
cout <<"What do you want to do: \na.Adding \n s. Substract \n m. Multiply. \n. e. Exit"<<endl;
cin>>x;

switch (x){
case 'a':
cout << "Give a value for a"<<endl;
cin>>a;
cout <<"Give a value for b"<<endl;
cin>>b;
add (int a, int b); //aquí y en otras líneas me sale: expected primary expression before int.
break;

case 's':
cout << "Give a value for a"<<endl;
cin>>a;
cout <<"Give a value for b"<<endl;
cin>>b;
ssub (int a, int b);
break;

case 'm':
cout << "Give a value for a"<<endl;
cin>>a;
cout <<"Give a value for b"<<endl;
cin>>b;
mult (int a, int b);
break;

case 'e':
x='e';
break;

default:
cout<<"Wrong choice. Run the program again and choose another letter"<<endl;
break;
}

return r;

}

cout<<"The result is  " << menu (int a, int b)<<endl;


int main()
{

menu (int a, int b);

return 0;
}

`

4

3 回答 3

0

将 main 更改为如下所示:

int main()
{
    menu();

    return 0;
}

更改menu为如下所示:

void menu() {
    int a;
    int b;
    // remove int r; and return r; from menu function
    // then everything else stays the same

在你的switch声明中,改变这个:

add (int a, int b);

对此:

add(a,b);

int并在您包含在函数调用中的所有其他地方执行相同的操作。

于 2013-11-10T03:53:02.737 回答
0
add (int a, int b);

您不能在int此处使用标记 - 您想使用现有变量的值,ab不是声明它们。它们已经在函数介绍中声明int menu(int a, int b)

你只需要:

add(a, b);
于 2013-11-10T03:54:03.203 回答
0

当你调用你的函数时,你应该只使用你传递给它的变量名,而不是在它之前添加它的类型:

...

cout <<"Give a value for b"<<endl;
cin>>b;
add (int a, int b); //aquí y en otras líneas me sale: expected primary expression before int.
break;

...

应该: ...

cout <<"Give a value for b"<<endl;
cin>>b;
add (a, b); //aquí y en otras líneas me sale: expected primary expression before int.
break;

...

通过在 a 和 b 之前添加 int 关键字,我认为您可能会重新声明这些变量。

于 2013-11-10T03:56:09.310 回答