C 练习实例78
题目:找到年龄最大的人,并输出。请找出程序中有什么问题。
程序分析:无。
实例
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鸟教程. All rights reserved.
#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 = NULL; // 用于指向年龄最大的人员
struct man *p = person; // 指向数组的起始地址
int i;
int max_age = 0; // 存储最大年龄
// 遍历数组,找到年龄最大的人员
for (i = 0; i < 3; i++) {
if (p->age > max_age) { // 如果当前年龄大于 max_age
max_age = p->age; // 更新 max_age
q = p; // 将 q 指向当前人员
}
p++; // 移动到下一个人员
}
// 输出年龄最大的人员的姓名和年龄
if (q != NULL) {
printf("%s %d\n", q->name, q->age);
} else {
printf("没有找到人员信息。\n");
}
return 0;
}
以上实例运行输出结果为:
wang 25
裴运章
961***686@qq.com
三个年龄都是 0 的时候不行 q 没赋初值,下面加了个 q=p=person,再就是年龄相等且为最大值的时候应同时输出,改进之后程序如下。
裴运章
961***686@qq.com
HIT_CCC
117***2963@qq.com
参考方法:
HIT_CCC
117***2963@qq.com
周浩航
zhh***best@qq.com
只需要把 q 初始化一下就可以:
周浩航
zhh***best@qq.com