0

在使用 MATLAB 工作 2 年多之后,我刚刚开始自学 C++,并且想要一些更强大的东西。我目前正在将 code::blocks 与 MinGW 一起使用,我正试图掌握使用intand的窍门double,但由于某种原因,我的小测试程序无法正常工作。

该程序是我练习使用函数的一种方式。该程序从用户那里获取数字,并在插入负数时停止。然后,它会输出输入数字的总和、输入数字的乘积以及已处理数字的计数。

当我只使用 时int,程序按预期工作,但无法处理任何扔给它的“十进制”数字 - 它吓坏了。

#include <cstdio>
#include <iostream>
#include <cstdlib>

using namespace std;

int X;
int sum;
int product;

int SUM()
{
    int A = sum+X;
    sum = A;
}

int PRODUCT()
{
    int B=product*X;
    product = B;
}

int main()
{
    cout<<"Welcome to my counting program! "<<endl;
    sum = 0;
    product = 1;
    int counter = 0;

    for (;;)
    {
        cout<<"Give me a number: ";
        cin>>X;
        if (X<0)
        {
            break;
        }
        sum = SUM();
        product = PRODUCT();
        counter = counter+1;
    }

    cout<<"SUM: ";
    cout<< sum <<endl;
    cout<<"PRODUCT: ";
    cout<< product <<endl;
    cout<<"NUMBERS INPUT: ";
    cout<< counter <<endl;

    system ("PAUSE");
}

但是,当我在适用的情况下使用 double 时,程序只会给我的乘积和总和为零。

#include <cstdio>
#include <iostream>
#include <cstdlib>

using namespace std;

double X;
double sum;
double product;

int SUM()
{
    double A = sum+X;
    sum = A;
}

int PRODUCT()
{
    double B=product*X;
    product = B;
}

int main()
{
    cout<<"Welcome to my counting program! "<<endl;
    sum = 0.0;
    product = 1.0;
    double counter = 0.0;

    for (;;)
    {
        cout<<"Give me a number: ";
        cin>>X;
        if (X<0)
        {
            break;
        }
        sum = SUM();
        product = PRODUCT();
        counter = counter+1;
    }

    cout<<"SUM: ";
    cout<< sum <<endl;
    cout<<"PRODUCT: ";
    cout<< product <<endl;
    cout<<"NUMBERS INPUT: ";
    cout<< counter <<endl;

    system ("PAUSE");
}

我究竟做错了什么?我需要改变什么才能让它工作?

另外,我认为我错误地调用了我的函数并试图在它们之间错误地传递值-正确的方法是什么?

4

1 回答 1

1

您仍在从函数中返回 int 。此外,由于您正在分配结果,因此您需要返回一个适当的值 ( sum = SUM();)。

尝试以下更改:

double /*int*/ SUM()
{
    double A = sum+X;
    sum = A;
    return sum; // Return a value!
}

double /*int*/ PRODUCT()
{
    double B=product*X;
    product = B;
    return product; // Return a value!
}

我还建议避免使用sum/ product/的全局变量X,而是将它们声明为函数的本地变量,并将它们作为参数传递给您的方法。

于 2013-06-03T23:17:23.400 回答