[英]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.