简单的计算器程序有什么问题?

时间:2012-09-18 04:57:23

标签: c++ visual-studio-2010

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

int calculate ()
{
double a;
double b;
a =(3.0);
b =(5.0);
cout << "  " << fixed << setprecision (1) << a << "\n" << endl;
cout << "* " << fixed << setprecision (1) << b << "\n" << endl;
cout << "------" << endl;
cout << fixed << setprecision (2) << a*b << "\n" << endl;
system("PAUSE");

return 0;
}
int calculate(int a, int b, int c)
{
double a;
double b;
double c;
a =(7.1);
b =(8.3);
c =(2.2);
cout << "  " << fixed << setprecision (1) << a << "\n" << endl;
cout << "* " << fixed << setprecision (1) << b << "\n" << endl;
cout << "- " << fixed << setprecision (1) << c << "\n" << endl;
cout << "------" << endl;
cout << fixed << setprecision (2) << (a*b)-c << "\n" << endl;
system("PAUSE");

return 0;
}

问题:为什么我必须改变双打---&gt;整数?有什么突出的错误吗?

这是输出: 1&gt; ------ Build build:项目:HW1-2,配置:调试Win32 ------ 1 GT; HW1-2.cpp 1&gt; c:\ users \ asus \ desktop \ hw1-2 \ hw1-2 \ hw1-2.cpp(21):错误C2082:重新定义形式参数&#39; a&#39; 1&gt; c:\ users \ asus \ desktop \ hw1-2 \ hw1-2 \ hw1-2.cpp(22):错误C2082:重新定义形式参数&#39; b&#39; 1&gt; c:\ users \ asus \ desktop \ hw1-2 \ hw1-2 \ hw1-2.cpp(23):错误C2082:重新定义形式参数&#39; c&#39; 1&gt; c:\ users \ asus \ desktop \ hw1-2 \ hw1-2 \ hw1-2.cpp(24):警告C4244:&#39; =&#39; :转换为&#39; double&#39;到&#39; int&#39;,可能会丢失数据 1&gt; c:\ users \ asus \ desktop \ hw1-2 \ hw1-2 \ hw1-2.cpp(25):警告C4244:&#39; =&#39; :转换为&#39; double&#39;到&#39; int&#39;,可能会丢失数据 1&gt; c:\ users \ asus \ desktop \ hw1-2 \ hw1-2 \ hw1-2.cpp(26):警告C4244:&#39; =&#39; :转换为&#39; double&#39;到&#39; int&#39;,可能会丢失数据 ==========构建:0成功,1个失败,0个最新,0个跳过==========

5 个答案:

答案 0 :(得分:2)

你有两个名为main()的函数。我不确定你要完成什么,但函数必须在命名空间中具有唯一的名称。

您可以随意命名您的功能。 main()是特殊的,但它是程序的入口点,程序运行时会被调用。如果你有另一个功能,你需要在main()内部自己调用它,如果你想要它被执行:

int foo(int c)
{
    return c + 2;
}

int main()
{
    int a = 1;
    int b = foo(a);
    return b;
}

答案 1 :(得分:0)

你最有可能出现问题:

(a*b)c

你想在这里完成什么?您的编译器应该抱怨缺少分号。它不是有效的c ++。您需要在(a*b)c

之间指定另一个操作数(+, - ,* etc)

答案 2 :(得分:0)

(a*b)c&lt; - 错误

如果你想要乘以,它应该是(a*b)*c

编辑 - 好像你想要这样做(a*b) - c,也可以写成a*b - c

答案 3 :(得分:0)

我同意caleb:

您有两个main个功能。 由于你的错误消息指向行21,这恰好是第二个definition主要开始的地方,我会说这是第一个错误。在那之后你有乘法错误,你按照其他人的说法省略了操作符。

Explanation of the difference of definition and declaration

只是一个风格提示: 我个人认为编写function(param1, param2, ...)而不是function (param1, param2, ...)(注意缺少的空间)很方便,因为myDefinedSomething(variableaccess)和myDefinedSomething()(functioncall)之间存在差异。 (你也可以访问功能指针,在这种情况下你省略了paranthese,但在你应该关心它之前你会有一些问题)。

正如评论中所述,尝试缩进代码使其更具可读性,请考虑:

for(int i=1,i<10; i++){
if(i%3) {
if(flag){
cout<<"a";
}else{
cout<<"b";
}
}

for(int i=1,i<10; i++){
    if(i%3) {
        if(flag){
            cout<<"a";
        }else{
            cout<<"b";
        }
}

您在哪一个中首先注意到丢失的}

答案 4 :(得分:0)

像Caleb所说,你有两个main()声明。没有第二个main函数的代码编译得很好:

#include <iostream>
#include <iomanip>

int main()
{
    double a;
    double b;
    double c;
    a = (7.1);
    b = (8.3);
    c = (2.2);
    std::cout << std::fixed << std::setprecision(1) << std::endl;
    std::cout << "  " << a << "\n" << std::endl;
    std::cout << "* " << b << "\n" << std::endl;
    std::cout << "- " << c << "\n" << std::endl;
    std::cout << "------" << std::endl;
    std::cout << std::setprecision(2) << (a * b) - c << "\n" << std::endl;

    return 0;
}

如果您希望将其作为单独的函数,则可以将其重命名为其他内容,例如int calculator()

相关问题