1 题目
观察以下程序,说明该程序的功能:
#include <stdio.h>
#include <stdlib.h>
struct man {
char name[20];
int age;
}
person[3] = {"li", 18, "wang", 25, "sun", 22};
int main()
{
struct man *q;
struct man *p = person;
int m = 0;
for (int i = 0; i < 3; i++) {
if (m < p->age) {
m = p->age;
q = p;
}
p++;
}
printf("%s %d\n", q->name, q->age);
return 0;
}
2 分析
该程序首先声明了一个结构体,里面包含姓名和年龄,随后创建了一个该结构体的数组并初始化了三个人的信息,在main
函数中定义了该结构体的指针p
指向结构体数组person
,再用一个for
循环判断年龄,可以发现程序每次将年龄与m
相比较,而m
初始是0
,显然是要找出最大年龄者,并每次把最大年龄暂存到m
中,以便下一轮循环比较,找出年龄大的人就把该人的首地址赋值给指针q
,循环结束后删除最大年龄者的姓名与年龄。
所以该程序的功能是输出年龄最大者的姓名与年龄。
3 运行结果
wang 25