gpt4 book ai didi

c++ - 需要帮助 do-while 循环程序吗? (C++)

转载 作者:行者123 更新时间:2023-11-28 08:15:08 24 4
gpt4 key购买 nike

我正在尝试创建一个程序,它将接受用户输入(标记)并将这些标记的平均值输出为字母等级。我相信我已经成功地让程序成功计算了平均分,但是它不会输出正确的字母等级?

有什么建议吗?编辑:也许这是计算中的一些东西,因为我的输出总是给出百分比作为“F”等级....

// Used iomanip to display averages for possible three digit or greater answers.
#include <iostream>
#include <iomanip>
using namespace std;

// Set up my program using only main()
int main()
{
//Created the variable 'mark' so the user input can be stored and tested in the do-while condition.
//Variable 'sum' and 'average' to calculate mark and then be tested against letter grades.
//'counter' used to keep track of number of terms being averaged.
double mark=0, sum=0, average=0;
int counter=-1;

// Do-while statement to test the loop. Gets input from user, and tests whether it is a a valid letter grade.
// Marks below 0 or above 100 will test true and loop back re-promting the user for another mark.
// If tested condition is false, then if statements then test the mark and output the letter grade.

cout << "Please enter marks to calculate average, and enter -1 to stop and find letter equivalence. " << endl;

do
{
if ( mark < 0 || mark > 100 )
{
cout << "Entered mark is invalid. Please try again, or enter -1 to stop and find letter equivalence. " << endl;
break;
}

sum = sum + mark;
counter++;
cin >> mark;

}
while ( mark != -1 );

average = sum / counter ;

//What happens when above statement is false...
if (mark >= 90)
{
cout << "The average of "<<setprecision(2)<<average<<"% is equivalent to a letter grade of A+ ";
}
else if (mark >=80)
{
cout << "The average of "<<setprecision(2)<<average<<"% is equivalent to a letter grade of A ";
}
else if (mark >=70)
{
cout << "The average of "<<setprecision(2)<<average<<"% is equivalent to a letter grade of B ";
}
else if (mark >=60)
{
cout << "The average of "<<setprecision(2)<<average<<"% is equivalent to a letter grade of C ";
}
else if (mark >=50)
{
cout << "The average of "<<setprecision(2)<<average<<"% is equivalent to a letter grade of D ";
}
else
{
cout << "The average of "<<setprecision(2)<<average<<"% is equivalent to a letter grade of F ";
}
return 0;
}

最佳答案

需要考虑的几件事:

  1. 您的成绩分配应考虑 average而不是 marks .如果您使用标记,则最后输入的值为 -1退出你的 do while 循环将用于评分,这将始终导致 F 级。

  2. 添加endl给你所有的cout do-while 之后的语句环形。输出流可能已被缓冲,这可能导致 cout 语句不出现在您的监视器上。 endl将刷新输出流。

例如.
cout << "The average of "<<setprecision(2)<<average<<"% is equivalent to a letter grade of A+ " << endl;

关于c++ - 需要帮助 do-while 循环程序吗? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7924694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com