Menu
CoddyTech

项目:定义联系人结构体

本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 50 课,共 63 课。

challenge icon

挑战

简单

你将构建一个简单的联系人录入工具,了解结构体如何在实际应用中组织相关数据。

编写一个 C 程序,定义一个 Contact 结构体来存储联系人信息。程序需要:

  1. 定义一个名为 Contact 的 struct,包含以下成员:
    • 一个大小为 50 的字符数组 name,用于存储联系人的姓名
    • 一个大小为 20 的字符数组 phone,用于存储联系人的电话号码
    • 一个大小为 40 的字符数组 email,用于存储联系人的电子邮件地址
    • 一个整数 age,用于存储联系人的年龄
  2. 在 main 函数中:
    • 创建一个名为 person 的 Contact 变量
    • 读取以下输入值,并使用点运算符将它们赋给结构体成员:
      • 读取姓名字符串,并将其赋给 person.name
      • 读取电话号码字符串,并将其赋给 person.phone
      • 读取电子邮件字符串,并将其赋给 person.email
      • 读取年龄整数,并将其赋给 person.age
    • 读取所有值后,执行以下验证:
      • 如果年龄小于 0 或大于 120,打印 Invalid age 并退出程序
      • 如果电话号码长度小于 10 个字符,打印 Invalid phone number 并退出程序
    • 如果所有验证都通过,按以下确切格式打印联系人信息:
      • Contact Information:
      • Name: [name]
      • Phone: [phone]
      • Email: [email]
      • Age: [age]
    • 计算并打印其他信息:
      • 使用 strlen() 打印姓名长度,格式为:Name length: [length]
      • 确定年龄类别并打印:
        • 如果年龄在 0 到 17 之间:Category: Minor
        • 如果年龄在 18 到 64 之间:Category: Adult
        • 如果年龄为 65 或以上:Category: Senior

这个挑战将测试你对结构体定义、使用合适的数据类型和大小声明成员、使用点运算符访问结构体成员、输入验证,以及在结构体成员上使用 strlen() 等字符串函数的理解。你将练习创建一个实用的数据结构,它可以作为联系人管理系统的基础。

亲手试试

#include <stdio.h>
#include <string.h>

// TODO: 在这里定义 Contact 结构体

int main() {
    // TODO: 创建一个名为 person 的 Contact 变量
    
    // 读取输入值
    scanf("%s", /* TODO: 赋值给 person.name */);
    scanf("%s", /* TODO: 赋值给 person.phone */);
    scanf("%s", /* TODO: 赋值给 person.email */);
    scanf("%d", /* TODO: 赋值给 person.age */);
    
    // TODO: 在下方编写验证和输出代码
    
    return 0;
}

逻辑与流程中的所有课

自己练习: C 在线编译器