《C语言》结构体和联合体练习题--1

发布于:2025-08-13 ⋅ 阅读:(13) ⋅ 点赞:(0)

《C语言》结构体和联合体练习题–1

1. 定义和初始化结构体

题目描述:
编写一个C程序,定义一个名为Person的结构体,包含成员name(字符串)、age(整数)和height(浮点数)。然后,初始化一个Person类型的变量,并输出其成员的值。

解题思路:
首先,定义一个结构体Person,包含所需的成员。然后,在主函数中声明一个Person变量,并使用初始化列表为其成员赋值。最后,使用printf函数输出各成员的值。

详细代码:

#include <stdio.h>

// 定义结构体Person
struct Person {
   
   
    char name[50];
    int age;
    float height;
};

int main() {
   
   
    // 初始化结构体变量
    struct Person person = {
   
   "Alice", 30, 5.6f};
    
    // 输出结构体成员的值
    printf("姓名: %s\n", person.name);
    printf("年龄: %d\n", person.age);
    printf("身高: %.1f 英尺\n", person.height);
    
    return 0;
}

代码注释:

  • struct Person:定义一个结构体类型Person,包含nameageheight三个成员。
  • char name[50];:声明一个字符数组用于存储姓名,最大长度为49个字符(留出一个字符用于字符串结束符\0)。
  • struct Person person = {"Alice", 30, 5.6f};:使用初始化列表为结构体变量person的成员赋值。
  • printf:分别输出结构体成员的值。

2. 访问结构体成员

题目描述:
编写一个C程序,定义一个结构体Rectangle,包含成员lengthwidth(均为浮点数)。输入一个Rectanglelengthwidth,计算并输出其面积和周长。

解题思路:
定义结构体Rectangle,包含lengthwidth。在主函数中声明一个Rectangle变量,使用scanf函数读取用户输入的长度和宽度。然后,计算面积(length × width)和周长(2 × (length + width)),并输出结果。

详细代码:

#include <stdio.h>

// 定义结构体Rectangle
struct Rectangle {
   
   
    float length;
    float width;
};

int main() {
   
   
    struct Rectangle rect;
    float area, perimeter;
    
    // 输入长度和宽度
    printf("请输入矩形的长度: ");
    scanf("%f", &rect.length);
    printf("请输入矩形的宽度: ");
    scanf("%f", &rect.width);
    
    // 计算面积和周长
    area = rect.length * rect.width;
    perimeter = 2 * (rect.length + rect.width);
    
    // 输出结果
    printf("矩形的面积是: %.2f\n", area);
    printf("矩形的周长是: %.2f\n", perimeter);
    
    return 0;
}

代码注释:

  • struct Rectangle:定义一个结构体类型Rectangle,包含lengthwidth两个浮点数成员。
  • scanf:读取用户输入的长度和宽度,并存储到结构体变量rect的相应成员中。
  • areaperimeter:计算并存储面积和周长。
  • printf:输出计算结果。

3. 嵌套结构体

题目描述:
编写一个C程序,定义两个结构体DateEmployeeDate包含成员daymonthyearEmployee包含成员name(字符串)、id(整数)和birthdate(类型为Date的结构体)。输入一个员工的详细信息,并输出。

解题思路:
首先,定义结构体DateEmployee,其中Employee包含一个Date类型的成员birthdate。在主函数中声明一个Employee变量,使用嵌套的scanf函数读取员工的姓名、ID和生日。最后,使用printf函数输出员工的详细信息。

详细代码:

#include <stdio.h>

// 定义结构体Date
struct Date {
   
   
    int day;
    int month;
    int year;
};

// 定义结构体Employee,包含Date类型的成员birthdate
struct Employee {
   
   
    char name[50];
    int id;
    struct Date birthdate;
};

int main() {
   
   
    struct Employee emp;
    
    // 输入员工姓名
    printf("请输入员工姓名: ");
    fgets(emp.name, sizeof(emp.name), stdin);
    
    // 去除换行符
    int i = 0;
    while(emp.name[i] != '\0') {
   
   
        if(emp.name[i] == '\n') {
   
   
            emp.name[i] = '\0';
            break;
        }
        i++;
    }
    
    // 输入员工ID
    printf("请输入员工ID: ");
    scanf("%d", &emp.id);
    
    // 输入员工生日
    printf("请输入员工生日(格式: 日 月 年): ");
    scanf("%d %d %d", &emp.birthdate.day, 

网站公告

今日签到

点亮在社区的每一天
去签到