使用函数返回值

时间:2016-02-07 03:58:56

标签: c++ arrays function loops

我现在有这个代码可以运行并根据设置的条件计算帐户的利息。但是,我现在需要编写一个名为CalcInterest()的函数,该函数将参数 - 一个帐户, - 并返回计算的兴趣。

#include <iostream>

using namespace std;

int main()
{

    int AccountNumber[8] = { 1001, 7940, 4382, 2651, 3020, 7168, 6245, 9342 };

    float Balance[8] = { 4254.40, 27006.25, 123.50, 85326.92, 657.0, 7423.34, 4.99, 107864.44 };

    int DaysSinceDebited[8] = { 20, 35, 2, 14, 5, 360, 1, 45 };
    int interest = 0;

    //add your code here

    cout << "Account Number\t" << "Balance\t\t" << "Days\t" << "Interest\t" << endl;


    for (int i = 0; i < 8; i++)
    {
        if (Balance[i] > 10000 || DaysSinceDebited[i] > 30)
            interest = (Balance[i] * 0.06);
        else
            interest = (Balance[i] * 0.03);

        cout << AccountNumber[i] << "\t\t" << Balance[i] << "\t\t" << DaysSinceDebited[i] << "\t" << interest << "\t" << endl;
    }

    system("pause");
    return 0;
}

以下是我的尝试,该功能不起作用,但没有错误

   #include <iostream>

 using namespace std;


 float CalcInterest(int AccountNum);



int main()

{



cout << "Account Number\t" << "Balance\t\t" << "Days\t" << "Interest\t" << endl;

float CalcInterest(int AccountNum);

system("pause");
return 0;
};



float CalcInterest(int AccountNum) {

int interest = 0;
float Balance[8] = { 4254.40, 27006.25, 123.50, 85326.92, 657.0, 7423.34, 4.99, 107864.44 };
int DaysSinceDebited[8] = { 20, 35, 2, 14, 5, 360, 1, 45 };
int AccountNumber[8] = { 1001, 7940, 4382, 2651, 3020, 7168, 6245, 9342 };


for (int i = 0; i < 8; i++)
{
if (Balance[i] > 10000 || DaysSinceDebited[i] > 30)
return interest = (Balance[i] * 0.06);
else
return interest = (Balance[i] * 0.03);
cout << AccountNumber[i] << "\t\t" << Balance[i] << "\t\t" << DaysSinceDebited[i] << "\t" << interest << "\t" << endl;
}





}

3 个答案:

答案 0 :(得分:0)

我的编译器(GCC 4.9.2)说你的函数CalcInterest有一个名为AccountNumber的参数,在这个函数中你有一个名为AccountNumber的数组,在我重命名之后,没问题。

答案 1 :(得分:0)

AccountNumber为int,您尝试在函数中取消引用 账户号码[i]中。你需要传递int数组或int指针。

示例:

float CalcInterest(int *) 

致电:

CalcInterest(AccountNumber)

答案 2 :(得分:0)

首先,可能是由代码的复制和粘贴引起的严重语法错误:

int main()
{
    /* ... */
    float CalcInterest(int AccountNumber);
    /* ... */
};

如果你(1)打算调用函数CalcInterest(),你可以写出它的名字,然后在圆形的parens中写出实际的参数:

CalcInterest(5);

如果你想声明函数,语法本身是正确的,但函数声明不属于另一个函数(缺少完全在另一个代码块内定义的lambda。事实是,据我所知,这样编译很好,这样:声明类型为CalcInterest的变量float,并向其构造函数传递一个名为{{1}的默认构造int我是对的?应用了C ++语法的强大功能。

你的第二个错误就是:

AccountNumber

在您(重新)将float CalcInterest(int AccountNumber) { /* ... */ int AccountNumber[8] = { 1001, 7940, 4382, 2651, 3020, 7168, 6245, 9342 }; if (AccountNumber == 1001 /* ... */) { /* ... */ } 声明为长度为AccountNumber的{​​{1}}数组之后,您的int函数参数会被遮蔽,因此编译器会认为您要进行比较8到数组int AccountNumber。出现错误:

1001

第三个错误,这次是合乎逻辑的,是int AccountNumber[8]循环内的返回。想一想,在第一次循环迭代中,第一个main.cpp: In function 'float CalcInterest(int)': main.cpp:21:24: error: declaration of 'int AccountNumber [8]' shadows a parameter int AccountNumber[8] = { 1001, 7940, 4382, 2651, 3020, 7168, 6245, 9342 }; ^ main.cpp:33:30: error: ISO C++ forbids comparison between pointer and integer [-fpermissive] if (AccountNumber == 1001 || AccountNumber == 4382 || AccountNumber == 3020 || AccountNumber == 6245) ^ 将被执行,并且函数内部没有任何其他内容将被运行!那是你打算做的吗?

最后,据我所知,你想将for循环中的代码分解为函数吗?可能会这样做:

for