为了生活联系的方便,某班级需要建立一个同学通讯录。通讯录中包含:姓名、性别、出 生日期、手机号这几项。现需要根据通讯录统计 2000 年后(包括 2000 年)出生的男生人数, 请使用c语言编程实现这个通讯并完成人数统计要求
时间: 2024-03-02 14:53:42 浏览: 127
好的,根据您的要求,我来为您编写一份C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100 // 通讯录最大人数
// 定义联系人结构体
struct contact {
char name[20]; // 姓名
char sex[5]; // 性别
char birth[20]; // 出生日期
char phone[20]; // 手机号
};
// 计算年份
int getYear(char* birth) {
char year[5];
strncpy(year, birth, 4);
year[4] = '\0';
return atoi(year);
}
int main() {
struct contact contacts[MAX_SIZE]; // 定义通讯录数组
int count = 0; // 记录通讯录中联系人数
// 读取通讯录信息
FILE* fp = fopen("contacts.txt", "r");
if (fp == NULL) {
printf("无法打开通讯录文件\n");
return 0;
}
while (!feof(fp)) {
fscanf(fp, "%s %s %s %s", contacts[count].name, contacts[count].sex, contacts[count].birth, contacts[count].phone);
count++;
}
fclose(fp);
// 统计2000年后出生的男生人数
int maleCount = 0;
for (int i = 0; i < count; i++) {
int year = getYear(contacts[i].birth);
if (strcmp(contacts[i].sex, "男") == 0 && year >= 2000) {
maleCount++;
}
}
printf("2000年后出生的男生人数为:%d\n", maleCount);
return 0;
}
```
上述代码中,我们定义了一个联系人结构体,包含姓名、性别、出生日期和手机号四个属性。我们通过文件读取的方式,将所有联系人信息存储到一个通讯录数组中。然后,我们遍历通讯录数组,统计2000年后出生的男生人数,最后将结果输出。
阅读全文