用函数重载的方式编写程序,统计出一个以上述结构为基准的结构体数组中1、名字为X的出现了多少次 2、年龄为X的出现了多少次 3、班级为X的出现了多少次 4、性别的X的出现了多少次

使用范围for,通过输入为一个数组赋值 
有以下结构: 
struct student{ 
char name[32]; 
int age; 
int class; 
bool sex; 
}; 

写出函数,用函数重载的方式编写程序,统计出一个以上述结构为基准的结构体数组中: 
1、名字为X的出现了多少次 
2、年龄为X的出现了多少次 
3、班级为X的出现了多少次 
4、性别的X的出现了多少次 

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#define N 10
struct student {
	char name[32];
	int age;
	int Class;
	bool sex;
};
void Print(student* src, int size) {
	cout << "姓名" << "\t" << "年龄" << "\t" << "班级" << "\t" << "性别" << endl;
	for (int i = 0; i < size;++i) {
		cout << src[i].name << "\t" << src[i].age << "\t" << src[i].Class << "\t" << src[i].sex << endl;
	}
}
int count(student* src, int size, const char* name) {
	int count = 0;
	for (int i = 0; i < N; ++i) {
		strcmp(name,src[i].name) ? count : ++count;
	}
	return count;
}
int count(student* src, int size, bool n) {
	int count = 0;
	for (int i = 0; i < N; ++i) {
		n == src[i].sex ? ++count : count;
	}
	return count;
}
int count(student* src, int size, int n, int flag = 0) { 
	int count = 0;
	if (flag == 0) {
		for (int i = 0; i < N; ++i) {
			n == src[i].age ? ++count : count;
		}
	}
	else {
		for (int i = 0; i < N; ++i) {
			n == src[i].Class ? ++count : count;
		}
	}
	return count;
}
int main() {
	student src[N];
	char name[32];
	int Class;
	int Age;
	bool Sex;
	for (auto& i : src) {
		cout << "请输入学生的信息\n请输入姓名\n";
		scanf("%s", i.name);
		cout << "请输入年龄\n";
		cin >> i.age;
		cout << "请输入班级\n";
		cin >> i.Class;
		cout << "请输入性别,男生输入1,女生输入0\n";
		cin >> i.sex;
		system("cls");
	}
	system("cls");
	Print(src, N);
	cout << "请输入你需要统计的姓名\n";
	scanf("%s", name);
	cout << "请输入你需要统计的年龄\n";
	cin >> Age;
	cout << "请输入你需要统计的班级\n";
	cin >> Class;
	cout << "请输入你需要统计的性别, 男生1,女生0\n";
	cin >> Sex;
	cout << "张三的名字有" <<count(src, N, name)<< "个" <<endl;
	cout << Class << "班的学生有" << count(src, N, Class, 100) << "个" << endl;
	cout << Age << "岁的有学生有" << count(src, N, Age) << "个" << endl;
	Sex ? cout << "男" : cout << "女";
	cout << "性的有学生有" << count(src, N, Sex) << "个" << endl;
	system("pause");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值