簡體   English   中英

為什么我卻得到零?

[英]Why Am I getting a zero instead?

我對C ++有點陌生,我正在制作這個小程序來計算電影票的總數。

#include<iostream>
#include<string>
#include<iomanip>
#include<cmath>

using namespace std;

int adultTick, childTick;
const int aPrice = 14;
const int cPrice = 10;
float rate() {
    const double RATE = .20;
    return RATE;
}

double grossTotal = (aPrice * adultTick) + (cPrice * childTick);
int main() {

    cout << "Box Office Earnings Calculator ....\n" << endl;
    cout << "Please Enter the Name of the Movie: ";
    string movie_name;

    getline(cin, movie_name);


    cout << endl << "   \"   \"   " << "adult tickets sold: ";
    cin >> adultTick;

    cout << "   \"   \"   " << "child tickets sold: ";
    cin >> childTick;

    cout << endl << setw(10) << left << "Movie Title: " << setw(20) << right << " \" " << movie_name << " \" " << endl;
    cout << setw(10) << left << "Adult Tickets Sold: " << setw(20) << right << adultTick << endl;
    cout << setw(10) << left << "Child Tickets Sold: " << setw(20) << right << childTick << endl;
    cout << setw(10) << left << "Gross Box Office Profit: " << setw(20) << right << "$ " << grossTotal;


}

最后,該程序應該在哪里顯示總計? 我以為算術是正確的,但是我不明白為什么它持續顯示零? 我可能做錯了什么? 如果我不為算術“ grossTotal”創建變量,則它可以工作,但是我必須使用“ setprecision”和“ fixed”函數進行進一步的格式化。

main中的代碼不會更改grossTotal

報關單

double grossTotal = (aPrice * adultTick) + (cPrice * childTick);

…創建具有指定初始值的變量grossTotal 它沒有聲明這些變量的值之間的關系。

在初始化器表達式( =右邊)被評估時, adultTickchildTick為零,因為作為命名空間范圍變量,它們已被零初始化。

int adultTick, childTick;

所示代碼在全局范圍內聲明了這些變量,並且這些變量被零初始化。

double grossTotal = (aPrice * adultTick) + (cPrice * childTick);

所示代碼還在全局范圍內聲明了此變量,並且計算出的公式計算為0,因此該變量將設置為0。

cout << setw(10) << left << "Gross Box Office Profit: " << setw(20) << right << "$ " << grossTotal;

並且main()這一行顯示了grossTotal變量的值,當然它是0。

的確,在此行之前, main()的先前代碼設置了adultTickchildTick grossTotal沒有任何區別,因為已經對grossTotal的值進行了初始化。

您需要更改代碼,以便在設置了這些其他變量之后, main()計算grossTotal的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM