c语言编码实现并注释:为了生活联系的方便,某班级需要建立一个同学通讯录。通讯录中包含:姓名、性别、出生日期、手机号这几项。现需要根据通讯录统计2000年后(包括2000年)出生的男生人数,请编程实现这个通讯并完成人数统计要求。
时间: 2024-03-02 08:53:55 浏览: 58
以下是C语言编码实现并注释:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个结构体类型,用于存储每个同学的信息
struct Student {
char name[20]; // 姓名
char sex[5]; // 性别
char birth[11]; // 出生日期
char phone[12]; // 手机号
};
int main() {
struct Student arr[100]; // 定义一个存储同学信息的数组
int count = 0; // 定义一个计数器,用于记录符合条件的男生人数
// 读取文件中的同学信息
FILE *fp = fopen("student.txt", "r");
if(fp == NULL) {
printf("文件打开错误!\n");
exit(1);
}
// 逐行读取文件内容,并将信息存储到结构体数组中
while(!feof(fp)) {
fscanf(fp, "%s %s %s %s", arr[count].name, arr[count].sex, arr[count].birth, arr[count].phone);
count++;
}
fclose(fp); // 关闭文件
// 统计2000年后出生的男生人数
for(int i = 0; i < count; i++) {
if(strcmp(arr[i].sex, "男") == 0 && atoi(strtok(arr[i].birth, "-")) >= 2000) {
count++;
}
}
printf("2000年后出生的男生人数为:%d\n", count);
return 0;
}
```
注释解析:
1. 首先定义了一个结构体类型 `struct Student`,用于存储每个同学的信息,包括姓名、性别、出生日期、手机号。
2. 在 `main` 函数中,定义了一个 `struct Student` 类型的结构体数组 `arr`,用于存储所有同学的信息。同时,定义了一个计数器 `count`,用于记录符合条件的男生人数。
3. 通过调用 `fopen` 函数打开文件,读取文件中的同学信息,并将信息存储到结构体数组中。
4. 通过 `for` 循环遍历结构体数组,统计2000年后出生的男生人数。通过 `strcmp` 函数判断性别是否为男,通过 `strtok` 函数将出生日期按照“-”分割,取得年份并转换成整型,再与2000进行比较。
5. 最后输出符合条件的男生人数。
阅读全文