这个c ++程序缺少什么?印刷计算

时间:2012-09-22 06:01:29

标签: c++ visual-studio-2010

#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 '{'

我该如何解决这些错误?

3 个答案:

答案 0 :(得分: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在评论中正确指出的内容。

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

答案 1 :(得分:0)

}功能之后,您错过了int calculate。虽然不相关,但您也不必多次拨打fixedsetprecision

答案 2 :(得分: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;
}