![](/img/trans.png)
[英]The below code is supposed to print 120.000000 for an input of 4 & 0. But it shows only 120. Why? and how to get desired output?
[英]This code that is supposed to get the largest and average of input numbers is not giving me the desired output, what did I get wrong?
當我輸入“15 20 0 3 -1”時,我一直試圖讓這個代碼給我一個“20 9.50”的output,但它一直給我output“20 0.55”。 這是我制作的代碼:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int largest = 0;
int number = 0;
int count = 0;
double avg = 0;
while (number >= 0) {
cin >> number;
if (number >= 0) {
if (number > largest) {
largest = number;
}
avg += number; ++count;
}
if (count > 0) {
avg /= count;
}
}
cout << largest << " " << fixed << setprecision(2) << avg << endl;
return 0;
}
誰能指出我怎么弄錯了 output? 我在 C++ 的 class 中,但我還是新手。 希望我沒有受到太嚴厲的對待,任何幫助表示贊賞。
我不確定您是否應該“即時”保持平均值。
更好、更不容易出錯的方法是在循環的整個生命周期內保持一個總數。 然后,在while
循環之后,您應該通過將total
除以count
來平均。
僅供參考,對於其他所有人: -1 結束了while
循環,並且total
& count
不應在每個輸入的結尾包含 -1。
下面的代碼給出了 output 為20 9.50
,輸入為15 20 0 3 -1
。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int largest = 0;
int number = 0;
int count = 0;
double avg = 0;
double total = 0;
while (number >= 0) {
cin >> number;
if (number >= 0) {
if (number > largest) {
largest = number;
}
//avg += number; ++count;
total += number; ++count;
}
//if (count > 0) {
// avg /= count;
}
avg = total / count;
cout << largest << " " << fixed << setprecision(2) << avg << endl;
return 0;
}
您將 avg 除以 count 幾次。 但是你必須在循環之后再做一次
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int largest = 0;
int number = 0;
int count = 0;
double avg = 0;
while (number >= 0) {
cin >> number;
if (number >= 0) {
if (number > largest) {
largest = number;
}
avg += number; ++count;
}
}
if (count > 0) {
avg /= count;
}
cout << largest << " " << fixed << setprecision(2) << avg << endl;
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.