任务是:居住在定居点的N个人,姓氏、年龄和性别都知道。输入有关该点居民的信息并计算男女人数。显示有关男性和女性平均年龄的信息。打印年龄高于/低于平均水平的男性/女性的姓名。
一定要使用结构。
代码说明:变量 f-女性人数 m-男性人数 age_m-男性平均年龄 age_f-女性平均年龄
这是代码:
#include <iostream>
using namespace std;
struct Vilage
{
char gen;
char sename;
int age;
};
int main()
{
setlocale(LC_ALL, "ru");
int i, f = 0, m = 0;
double age_m = 0, age_f = 0;
Vilage N[10];
for (i = 0; i < 10; i++) {
cout << "Введите Пол проживающего (m-мужчина, f-женщина): " << endl;
cin>>N[i].gen;
cout << "Введите Фамилию проживающего: " << endl;
cin >> N[i].sename;
cout << "Введите Возвраст проживающего: " << endl;
cin >> N[i].age;
}
for (i = 0; i < 10; i++) {
if (N[i].gen == 'm') {
m++;
age_m += N[i].age;
}
if (N[i].gen == 'f') {
f++;
age_f += N[i].age;
}
}
age_m /= m;
age_f /= f;
cout << "--------------------------------------------------------------------------------------" << endl;
cout << "Средний возвраст мужчин составляет: " << age_m << " лет" << endl;
cout << "Фамилии мужчин, чей возвраст выше среднего: " << endl;
for (i = 0; i < 10; i++) {
if (N[i].gen == 'm') {
if (N[i].age > age_m)
cout << N[i].sename;
}
}
cout << "--------------------------------------------------------------------------------------" << endl;
cout << "Средний возвраст женщин составляет: " << age_f << " лет" << endl;
cout << "Фамилии женщин, чей возвраст ниже среднего: " << endl;
for (i = 0; i < 10; i++) {
if (N[i].gen == 'm') {
if (N[i].age < age_m)
cout << N[i].sename;
}
}
system("pause");
return 0;
}
和
您正在将 1 个(用文字表示:一个)字符读入
sename
,并尝试将其他所有内容读Petrov
入int age
。而且由于这不是一个数字,因此很明显出现了一个大错误-您没有写“傻瓜保护”(针对不正确的输入)...