簡體   English   中英

如何在cout語句中調用void函數?

[英]How can I call a void function in a cout statement?

我正在嘗試在同一行上打印標記和字母等級,但是我無法在cout語句中調用void函數,有沒有辦法做到這一點? 我也知道我可以在cout語句后的下一行調用它,但是我需要它們在同一行上打印。

void printLetterGrade(float mark)
{
    float grade = mark;

    if (grade >= 90)
        cout << "Your Letter Grade is A+" << endl;

    else if ((grade >= 85) && (grade <= 89))
        cout << "Your Letter Grade is A" << endl;

    else 
        cout << "fail" << endl;

}

float calculateClassStats(float marks[], int length)
{
    const int arrayCount = length;
    for (int x = 0; x < arrayCount; x++){
        char letter = printLetterGrade(marks[x]);
        cout << marks[x] << letter << endl;
    }
    return 0;
}

您需要更改printLetterGrade ,使其確實返回某些內容。 例如

const char *printLetterGrade(float mark)
{
   if ( ... )
      return "A+";
   if ( ... )
      return "A";
   ...
}

(當然,在這一點上,您可能還想調用該函數)

以相同功能打印

void printLetterGrade(float mark)
{
    float grade = mark;

    if (grade >= 90)
        cout <<mark<< "Your Letter Grade is A+" << endl;

    else if ((grade >= 85) && (grade <= 89))
        cout <<mark<< "Your Letter Grade is A" << endl;

    else 
        cout << "fail" << endl;

}

float calculateClassStats(float marks[], int length)
{
    const int arrayCount = length;
    for (int x = 0; x < arrayCount; x++){
        printLetterGrade(marks[x]);            
    }
    return 0;
}

如果要在同一行上打印某些內容,請不要打印endl

void printLetterGrade(float mark)
{
    float grade = mark;

    if (grade >= 90)
        cout << "Your Letter Grade is A+" << endl;

    else if ((grade >= 85) && (grade <= 89))
        cout << "Your Letter Grade is A" << endl;

    else 
        cout << "fail" << endl;

}

float calculateClassStats(float marks[], int length)
{
    const int arrayCount = length;
    for(int x = 0; x < arrayCount; x++) {

        cout << marks[x] << " "; // don't print endl, just a space
        printLetterGrade(marks[x]); // goes on same line
    }
    return 0;
}

您無法cout void函數的結果,也不能將void void轉換為要在cout上使用的東西,因為沒有返回任何內容。

如果您只需要函數printLetterGrade的副作用,並且副作用恰好發生在cout序列中的某個點,則可以將其返回值更改為不打印的瑣碎內容,

例如,您可以將返回類型從void更改為char *string並在有return;地方返回空字符串"" return; 聲明(如果有)。

float calculateClassStats(float marks[], int length)
{
    const int arrayCount = length;
    for (int x = 0; x < arrayCount; x++)
    {

        cout << marks[x] << printLetterGrade(marks[x]) << endl;
    }
    return 0;
}

只需將return-type更改為string ,然后將cout <<更改為return

string printLetterGrade(float mark)
{
    float grade = mark;

    if (grade >= 90)
        return " Your Letter Grade is A+";

    else if ((grade >= 85) && (grade <= 89))
        return " Your Letter Grade is A";

    else 
        return " Fail";

}

輸出量

95 Your Letter Grade is A+
88 Your Letter Grade is A
50 Fail

修改您的cout語句為

 cout<<printLetterGrade(marks[x])<<marks[x];

同時刪除char letter = printLetterGrade(marks[x]); 行,似乎沒有必要。

編輯:修改后的代碼將是:

void printLetterGrade(float mark)
{
float grade = mark;

if (grade >= 90)
    cout << "Your Letter Grade is A+" << endl;

else if ((grade >= 85) && (grade <= 89))
    cout << "Your Letter Grade is A" << endl;

else 
    cout << "fail" << endl;

}

float calculateClassStats(float marks[], int length)
{
const int arrayCount = length;
for (int x = 0; x < arrayCount; x++){
    cout<<marks[x];
    printLetterGrade(marks[x]); 
}
return 0;
}

暫無
暫無

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

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