22级计算机一班有40名同学,身份证表中记录了该班全体同学的身份证号码。小明的生日是2002年5月1日,请编写函数 统计一班有多少同学比小明的年龄大 假设用一个二维字符数组idno来存储身份证表,该数组的大小为40行、19列。 函数原型如下:int count(char (*idno)[19]); 参数说明: idno是身份证表中第一行的地址,每一个学生的身份证是18位的字符串。 函数返回值:返回比小明年龄大的学生人数。 主程序如下: int main() { char idno[40][19]; int num; init(idno); //初始化学生身份证表 num = count(idno); //请编写count函数,无需编写其他函数 printf("比小明年龄大的学生数为:",num); return 0; }
时间: 2023-02-07 14:52:47 浏览: 102
级计算机一班吴伟鹏调查研究报告.docx
这是一个在 C 语言中编写的程序,主要的任务是统计有多少同学的年龄大于小明的年龄。下面是统计的函数:
int count(char (*idno)[19]) {
int num = 0;
int year = 2002;
int month = 5;
int day = 1;
// 遍历所有学生的身份证
for (int i = 0; i < 40; i++) {
// 解析出学生出生年月日
int student_year = (idno[i][6] - '0') * 1000 + (idno[i][7] - '0') * 100 + (idno[i][8] - '0') * 10 + (idno[i][9] - '0');
int student_month = (idno[i][10] - '0') * 10 + (idno[i][11] - '0');
int student_day = (idno[i][12] - '0') * 10 + (idno[i][13] - '0');
// 比较学生和小明的年龄
if (student_year > year || (student_year == year && student_month > month) || (student_year == year && student_month == month && student_day >= day)) {
num++;
}
}
return num;
}
需要注意的是,身份证的年月日是从身份证的第 6-13 位获取的。
阅读全文