为了生活联系的方便,某班级需要建立一个同学通讯录。通讯录中包含:姓名、性别、出生日期、 手机号这几项。现需要根据通讯录统计 2000 年后(包括 2000 年)出生你的男生人数,请编程实现 这个通讯并完成人数统计要求。用c语言
时间: 2024-03-08 08:45:30 浏览: 70
好的,我可以帮你完成这个任务。以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100 // 定义通讯录最大容量
typedef struct {
char name[20]; // 姓名
char sex; // 性别
char birth[20]; // 出生日期
char phone[20]; // 手机号码
} Student;
int main() {
Student contacts[MAX_SIZE];
int count = 0; // 统计符合条件的人数
int i;
// 读取通讯录信息
FILE *fp = fopen("contacts.txt", "r");
if (fp == NULL) {
printf("无法打开通讯录文件!\n");
exit(1);
}
while (fscanf(fp, "%s %c %s %s", contacts[count].name, &contacts[count].sex, contacts[count].birth, contacts[count].phone) != EOF) {
// 判断是否符合条件,如果符合则统计人数
if (strstr(contacts[count].birth, "200") != NULL && contacts[count].sex == 'M') {
count++;
}
// 如果通讯录已满,则退出循环
if (++count == MAX_SIZE) {
break;
}
}
fclose(fp);
// 输出符合条件的人数
printf("2000年后出生的男生人数为:%d\n", count);
return 0;
}
```
这段代码会读取名为 `contacts.txt` 的通讯录文件,统计出生日期为 2000 年后且性别为男的人数,并输出结果。你可以将通讯录信息按照以下格式存储到 `contacts.txt` 文件中:
```
张三 M 2001-01-01 13888888888
李四 F 1999-12-31 13999999999
王五 M 2000-06-15 13666666666
...
```
每一行代表一个人的信息,以空格分隔,依次为姓名、性别、出生日期、手机号码。注意,出生日期需要按照 `yyyy-mm-dd` 的格式存储。
希望这个代码能够帮到你!
阅读全文