首页 > 编程语言 >2024-2025-1 20241421 《计算机基础与程序设计》第十三周学习总结

2024-2025-1 20241421 《计算机基础与程序设计》第十三周学习总结

时间:2024-12-22 20:08:26浏览次数:3  
标签:文件 数组 students struct 2024 2025 Student 20241421 结构

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十三周作业
这个作业的目标 复习知识,巩固所学
作业正文 https://www.cnblogs.com/118qa/p/18622459

教材学习内容总结

  1. 概念
    结构体是一种用户自定义的数据类型,它允许将不同类型的数据(比如整型、字符型、浮点型以及其他自定义的结构体类型等)组合在一起,形成一个有机的整体,便于对相关数据进行统一管理和操作。
  2. 定义形式
    一般形式如下(以 C 语言为例):
    c
    struct 结构体名 {
    数据类型 成员变量1;
    数据类型 成员变量2;
    //...
    };
    例如定义一个表示学生信息的结构体:
    c
    struct Student {
    char name[20];
    int age;
    float score;
    };
  3. 结构体变量的声明与初始化
    声明:可以在定义结构体类型后接着声明变量,如 struct Student stu1; ,也可以在定义结构体类型时同时声明变量,像 struct Student { char name[20]; int age; float score; } stu2;。
    初始化:例如 struct Student stu3 = {"Tom", 18, 85.5}; 按照结构体成员定义的顺序依次赋初值。
  4. 结构体成员的访问
    使用 . 操作符(对于普通结构体变量),比如 stu1.age = 20; 可以给 stu1 这个结构体变量中的 age 成员赋值;如果是指向结构体的指针,则用 -> 操作符,像 struct Student *p = &stu1; p->age = 21;。
  5. 应用场景
    在处理现实中存在多种属性关联的数据集合时很有用,比如员工信息管理(包含工号、姓名、工资等不同类型数据)、游戏角色属性管理(生命值、攻击力、防御力等)等情况。
    文件
  6. 概念
    文件是存储在外部介质(如磁盘等)上的数据集合,可以长久保存数据。计算机中的文件有文本文件(内容主要是可直接阅读的字符,按字符编码存储)和二进制文件(以二进制形式存储数据,对数据的存储更紧凑高效,但通常不可直接阅读内容)之分。
  7. 文件操作步骤(以 C 语言为例)
    打开文件:使用 fopen 函数,例如 FILE *fp = fopen("test.txt", "r"); ,第一个参数是文件名,第二个参数是打开模式(如 r 表示只读,w 表示只写,a 表示追加等),函数返回一个指向文件结构体的指针,若打开失败返回 NULL。
    读写文件:
    文本文件读写:常用 fgets 函数从文件读取一行字符串,fputs 函数向文件写入一个字符串等。例如 char buf[100]; fgets(buf, 100, fp); 就是从 fp 指向的文件中读取最多 99 个字符(留一个位置给 '\0' 结束符)到 buf 数组中。
    二进制文件读写:像 fread 函数用于从文件读取二进制数据块,fwrite 函数用于向文件写入二进制数据块。例如 fwrite(&data, sizeof(data), 1, fp); 可以把 data 这个变量的数据按其大小写入文件,一次写一个数据块。
    关闭文件:操作完文件后必须使用 fclose 函数关闭文件,如 fclose(fp); ,这样可以释放相关资源,避免数据丢失等问题。
  8. 文件指针
    文件指针是指向 FILE 类型结构体的指针,该结构体中包含了与文件相关的各种信息,比如文件当前读写位置、缓冲区信息等,通过操作文件指针来实现对文件的各种访问操作。
  9. 应用场景
    实现数据的持久化存储,比如保存程序的配置信息、记录日志(记录程序运行过程中的关键信息方便后续查看和分析)、存储大量的数据(如数据库底层部分也是基于文件存储来实现的)等。
    总之,结构体方便了复杂数据的组织,文件则提供了数据长期保存和外部交互的途径,它们在编程中都是极为重要的基础内容。
    教材学习中遇到的问题
    问题:结构体如何与数组联系?
    AI:结构体数组的定义
    结构体数组是一个数组,其每个元素都是一个结构体类型的数据。例如,定义一个表示学生信息的结构体,然后定义一个该结构体类型的数组来存储多个学生的信息。
    以 C 语言为例,假设已经定义了一个Student结构体:

c
struct Student {
char name[20];
int age;
float score;
};
struct Student students[3];//定义了一个包含3个Student结构体元素的数组

这里students数组有 3 个元素,每个元素都是Student结构体类型,分别可以用来存储 3 个学生的姓名、年龄和成绩。
结构体数组的初始化
可以在定义结构体数组时进行初始化。按照顺序为每个结构体元素的成员变量赋值。
例如:

c
struct Student students[3] = {{"Tom", 18, 85.5}, {"Jerry", 19, 90.0}, {"Alice", 20, 88.0}};

这里初始化了students数组的 3 个元素,第一个元素的name成员为"Tom",age为18,score为85.5;第二个元素和第三个元素也依次进行了初始化。
访问结构体数组元素及其成员
要访问结构体数组中的元素,可以使用数组下标。然后通过."操作符来访问结构体元素中的成员变量。
例如,要访问第二个学生(数组下标为 1)的姓名,可以使用students[1].name。如果要修改第三个学生(数组下标为 2)的成绩,可以使用students[2].score = 92.0;。
在函数中传递结构体数组
可以将结构体数组作为参数传递给函数。当传递结构体数组时,实际上传递的是数组的首地址(在 C 和 C++ 等语言中)。
例如,定义一个函数来打印学生数组中每个学生的信息:

c
void printStudents(struct Student students[], int n) {
for (int i = 0; i < n; i++) {
printf("Name: %s, Age: %d, Score: %.2f\n", students[i].name, students[i].age, students[i].score);
}
}

这里printStudents函数接收一个Student结构体数组和数组元素个数n,通过循环遍历数组,访问每个元素的成员变量并打印出来。
动态分配结构体数组内存
在一些情况下,可能需要动态地分配结构体数组的内存。例如,在 C 语言中,可以使用malloc函数来分配内存。
假设要动态分配一个包含n个Student结构体元素的数组:

c
struct Student *students = (struct Student *)malloc(n * sizeof(struct Student));

分配成功后,students是一个指向Student结构体类型的指针,它指向了一块可以存储n个Student结构体元素的内存空间。可以像访问普通结构体数组一样访问这个动态分配的数组,例如students[0].name等来访问第一个元素的成员变量。不过在使用完后,需要使用free函数释放内存,如free(students);。
基于AI的学习






标签:文件,数组,students,struct,2024,2025,Student,20241421,结构
From: https://www.cnblogs.com/118qa/p/18622459

相关文章

  • 2024-2025-1 20241327 《计算机基础与程序设计》第十三周学习总结
    作业信息|2024-2025-1-计算机基础与程序设计)||--|-|2024-2025-1计算机基础与程序设计第十三周作业)||快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题并在期末回答这些问题|作业正文|https://www.cnblogs.com/shr060414/p/18440575|......
  • # 学期(如2024-2025-1) 学号(如:20241402) 《计算机基础与程序设计》第13周学习总结
    学期(如2024-2025-1)学号(如:20241402)《计算机基础与程序设计》第13周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<写上......
  • 2024-2025-1 20241416 《计算机基础与程序设计》第十三周学习总结
    这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第十三周作业这个作业的目标复习巩固前面所学的内容作业正文https://www.cnblogs.com/rockytyh/p/18622400教材学习内容总结一、结构体结构体的定义结构体允许......
  • 视野修炼第114期 | 2024JS现状调查结果
    欢迎来到第114期的【视野修炼-技术周刊】,下面是本期的精选内容简介......
  • 【CVE-2024-56145】Craft CMS 漏洞利用工具
    ✨特点......
  • java高频面试题(2025最新)
    后续会持续更新,广告回来更精彩!如果想看原理可以看看我的另几篇文章没有过多的讲解原理,你们只要背会了,就能快乐两年半。一.java基础1.八大基础类型数字型: 字节类型(byte)、短整型short、整型int、长整型Long、单精度浮点数float、双精度浮点数double字符型: 字符类型char、......
  • 20241313 刘鸣宇 《计算机基础与程序设计》第13周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<写上具体方面>作业正文...本博客链接教材学习内容总结《C语言程序设计......
  • 2024-2025-1 20241300《计算机基础与程序设计》第十三周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第十三周作业)这个作业的目标无作业正文...本博客链接教材学习内容总结结构体(Struct)概念结构体......
  • AIGC时代算法工程师的面试秘籍(第二十八式2024.12.2-12.15) |【三年面试五年模拟】
    写在前面【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试经验,力求让读者在获得心仪offer的同时,增强技术基本面。欢迎大家关注Rocky的公众号:WeThinkIn欢迎大家关注Rocky的知乎:RockyDingAIGC算法工程师面试面经秘籍分享:WeThi......
  • NOIP2024 游记
    NOIP2024游记Day0上午去试机,复习了下如何配置VScode,可惜在纪中还剩400块饭卡钱没时间用。中午我妈让小卖部送了点咖啡、巧克力之类的零食,彬彬获得了新的补给。下午去打排球,估计是信竞最后一次集体运动了。二传跟老是传错位置,不过垫球手感找回来了。晚上教练在,不然就开你......