我应该编写一个程序,以获取5个年龄段,计算平均值,然后显示有多少年龄段高于平均年龄,有多少年龄段低于平均年龄。容易,我想。 但是,由于某种原因,无论我做什么,检查当前ages []元素是否小于平均值的if语句始终成立,而检查当前ages []元素是否大于平均值的if语句始终成立。总是假,我无法为自己的生活弄清楚原因。 也许是因为这是凌晨3:30,我的脑袋变得沉闷了。
我尝试为每次迭代添加一个名为age = ages [j]的变量。 我还尝试过在上下左右的if语句之间进行交换,但这也不会改变任何内容。
#include <iostream>
using namespace std;
void main() {
int ages[5];
int total = 0;
int average = 0;
int above = 0;
int below = 0;
for (int i = 0; i < 5; i++) {
cout << "Enter an age.";
cin >> ages[i];
cout << ages[i];
total += ages[i];
}
average = total / 5;
for (int j = 0; j < 5; j++) {
if (ages[j] >> average) {
cout << ages[j];
above++;
}
else if (ages[j] << average) {
cout << average;
cout << ages[j];
below++;
}
}
cout << "The average age is " << average << "." << endl;
cout << above << " ages are above the average age." << endl;
cout << below << " ages are below the average age." << endl;
}
我希望输出 “平均年龄是(平均)” “ x年龄高于平均年龄。” “ y个年龄段高于平均年龄”
相反,我得到: “平均年龄是(平均)” “ 0岁以上是平均年龄。” “ 5岁以下是平均年龄。”
答案 0 :(得分:2)
您使用的是移位而不是大于/小于
if (ages[j] > average)