-1
#include <iostream>
#include <iomanip>
using namespace std;

int main () // print to console: 3.0*5.0=15.00
{
double a;
double b;
a =(3.0);
b =(5.0);
cout << "  " << fixed << setprecision (1) << a << "\n" << endl;
cout << "* " << b << "\n" << endl;
cout << "------" << endl;
cout << fixed << setprecision (2) << a*b << "\n" << endl;

return 0;
}

int calculate (int a, int b, int c) // print to console: (7.1*8.3)-2.2=56.73
{
double a;
    double b;
    double c;
    a = (7.1);
    b = (8.3);
    c = (2.2);
    cout << "  " << fixed << setprecision (1) << a << "\n" << endl;
    cout << "* " << b << "\n" << endl;
    cout << "- " << c << "\n" << endl;
    cout << "------" << endl;
    cout << setprecision(2) << (a*b)-c << "\n" << endl;
}
int calculation (int a, int b, int c) // print to console: 3.2/(6.1*5.0)=0.10
{
double a;
double b;
double c;
a=(3.2);
b=(6.1);
c=(5.0);
cout << "  " << fixed << setprecision (1) << a << "\n" << endl;
    cout << " /(6.1*5.0)" << endl; //how can I use variables instead of using quotes?
cout << "------" << endl;
cout << setprecision(2) << a/(b*c) << "\n" << endl;

system("PAUSE");

return 0;
}

我使用了一个重复的布局,我希望它可以垂直打印 3 个函数,以便小数点全部对齐。我似乎无法在没有错误的情况下进行打印,并且认为我对错误输出的理解不足以进行必要的更改。我不知道我是否正确地重新定义了变量,或者我是否正确地将它们组合在一起(使用 {})。

感谢任何可以帮助我完成这项工作的人。

这是输出:

(7): error C2082: redefinition of formal parameter 'a'
(8): error C2082: redefinition of formal parameter 'b'
(9): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data
(10): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data
(21): error C2082: redefinition of formal parameter 'a'
(22): error C2082: redefinition of formal parameter 'b'
(23): error C2082: redefinition of formal parameter 'c'
(24): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data
(25): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data
(26): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data
(34): error C2601: 'calculation' : local function definitions are illegal
(20): this line contains a '{' which has not yet been matched
(51): fatal error C1075: end of file found before the left brace '{'

我将如何解决这些错误?

4

3 回答 3

2

在以下情况下您错过了右括号:

int calculate (int a, int b, int c) // print to console: (7.1*8.3)-2.2=56.73
{
    ....
    ....
    cout << setprecision(2) << (a*b)-c << "\n" << endl;
}

^^^^

由于您在两个函数中都有相同的命名符号,因此缺少大括号会导致符号名称被多次使用,从而违反了单一定义规则,从而导致重新定义错误。

另外,请注意@Ed.S 在评论中正确指出的内容。

此外,请注意您可能需要在程序逻辑中考虑的类型转换警告。

于 2012-09-22T06:04:37.880 回答
0

你错过了}after 你的int calculate功能。虽然不相关,但您也不必多次调用fixed和。setprecision

于 2012-09-22T06:06:56.677 回答
0

首先:

int main(int, int) - 非常非标准的程序入口点

下一个 :

int main (int a, int b) // print to console: 3.0*5.0=15.00
{
double a;
double b;

您正在重新定义形式参数 a 和 b

就是这样,这就是你的编译器所说的:

(7): error C2082: redefinition of formal parameter 'a'
(8): error C2082: redefinition of formal parameter 'b'

.

int calculate (int a, int b, int c) // print to console: (7.1*8.3)-2.2=56.73
{
double a;
    double b;
    double c;

您有相同的局部变量和形式参数名称,我认为这不是您所期望的。

最后一个:

您在计算函数末尾缺少右括号“}” 。

#include <iostream>
#include <iomanip>
using namespace std;

int main () // print to console: 3.0*5.0=15.00
{
double a;
double b;
a =(3.0);
b =(5.0);
cout << "  " << fixed << setprecision (1) << a << "\n" << endl;
cout << "* " << b << "\n" << endl;
cout << "------" << endl;
cout << fixed << setprecision (2) << a*b << "\n" << endl;

return 0;
}

int calculate () // print to console: (7.1*8.3)-2.2=56.73
{
    double a;
    double b;
    double c;
    a = (7.1);
    b = (8.3);
    c = (2.2);
    cout << "  " << fixed << setprecision (1) << a << "\n" << endl;
    cout << "* " << b << "\n" << endl;
    cout << "- " << c << "\n" << endl;
    cout << "------" << endl;
    cout << setprecision(2) << (a*b)-c << "\n" << endl;
}
int calculation () // print to console: 3.2/(6.1*5.0)=0.10
{
    double a;
    double b;
    double c;
    a=(3.2);
    b=(6.1);
    c=(5.0);
    cout << "  " << fixed << setprecision (1) << a << "\n" << endl;
    cout << b << "*" << c << endl; //how can I use variables instead of using quotes?
    cout << "------" << endl;
    cout << setprecision(2) << a/(b*c) << "\n" << endl;

    system("PAUSE");

    return 0;
}
于 2012-09-22T06:07:09.087 回答