函数不返回用户输入的值

时间:2012-08-07 20:20:27

标签: c++ function

我正在为这项计划工作,所以我不想要答案......只是朝着正确的方向努力。

我编写了一个程序,用户将在该程序中输入一个3位数的ID(必填)和一个月份使用的KWh。输入该标准后,它将打印出一个简短的摘要+每个用户当月的费用。并将其包含在一个循环中,询问是否还有更多ID要输入。

下面是我的开场代码和循环结构:

#include <iostream>
#include <string>
#include <iomanip>
#include <windows.h>

using namespace std;

//function prototypes
string get_user_ID();
int get_cust_kwh();
string display_cust_data();

int main()
{
string userID;
int userKWH;
char answer;

while ((answer !='N')&&(answer !='n')){
    userID = get_user_ID();
    userKWH =get_cust_kwh();

    display_cust_data();

    cout << "\n\nWould you like to add another utility ID? : (Y or N)";
    cin >> answer;

    }
}

system("pause")
return 0;

我可以让循环正常运行,但我的函数似乎没有返回用户输入的值。由于我不熟悉各种功能,我确信这是一个愚蠢的错误,但一直让我发疯。以下是功能:

**********function definitions**********
string get_user_ID(){
    string usrID;
    cout << "\n\nPlease enter in your 3-digit utility ID: ";
    cin >> usrID;
    return usrID;
}

int get_cust_kwh(){
    int usrKWHs;
    cout << "Please enter the total KWH used for the month: ";
     cin >> usrKWHs;
    return usrKWHs;
}

string display_cust_data(){
    string usrID;
    int usrKWHs;
    double userCharge;

    cout << "\n\nUSER ID        KWHours     Charge($)\n";
    cout << fixed << setprecision(2);
    cout << usrID << "            " << usrKWHs << "           " << userCharge << endl;
   }

我正在考虑使用函数中变量的方式。

感谢您提供任何推动!

3 个答案:

答案 0 :(得分:4)

问题是display_cust_data()不知道主要功能范围内的变量。你打印的只是具有垃圾值的局部变量。

string display_cust_data(){
    string usrID;  // This is a different variable and is not equivalent to the 
                   // variable in main.

为什么函数的返回类型是string

答案 1 :(得分:1)

看看你的display_cust_data。它如何获得有关显示内容的任何信息?

答案 2 :(得分:1)

您需要找到一种将用户输入变量传递给显示功能的方法。 display_cust_data()函数中的变量是在那里新创建的,与main()函数中while循环中的变量不同。您在该函数中显示的所有变量都是未初始化的,因此您不知道它们的值实际上是什么。考虑为函数添加参数,以便在调用它时可以将用户输入变量传递给它,以便显示要显示的值。

相关问题