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

news/2024/12/22 20:06:15/文章来源:https://www.cnblogs.com/118qa/p/18622459

这个作业属于哪个课程 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的学习






本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/856924.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shell脚本编程题(八道)

Linux操作系统期末编程题——Shell脚本编程题(八道) 第一题 1.编程实现从键盘获取一个整数,按下列情况输出对应结果: (1)当该数值为 6 或 7 时,输出“休息日(Rest Day)”。 (2)当该数值为 1 至 5 时,输出“工作日(Working Day)”。 (3)其他情况输出“输入错误(E…

构建全方位大健康零售帮助中心:提升服务与体验

在当今社会,随着人们健康意识的不断提升,大健康零售市场迎来了前所未有的发展机遇。然而,面对琳琅满目的健康产品、复杂的健康理念以及日益增长的消费者需求,如何提供一个高效、便捷、全面的帮助中心,成为了大健康零售企业亟待解决的问题。在此背景下,引入Helplook工具,…

高新技术企业知识管理新篇章:高效内部知识库建设

高新技术行业作为经济发展的重要引擎,其创新能力和发展速度直接关乎国家的整体竞争力。然而,在快速发展的背后,高新技术企业面临着知识管理不善、信息共享不畅等挑战。为了应对这些挑战,高效搭建内部知识库显得尤为重要。本文将以Helplook工具为例,探讨如何高效构建高新技…

C# winform自定义图片空间 缩放、拖拽、绘画

首先简单介绍一下图片自定义的功能 1、滑动鼠标滚轮缩放图片; 2、按住鼠标左键拖拽图片; 3、可选绘画矩形、圆、直线、画笔; 4、可选连续绘画、单次绘画; 5、每次绘画通过事件返回起点坐标、终点坐标; 6、右击可重置图片大小(适应窗口)、原始尺寸(100%)、另存当前图片、清…

实验

任务41 #include <stdio.h>2 #define N 103 4 typedef struct {5 char isbn[20]; 6 char name[80]; 7 char author[80]; 8 double sales_price; 9 int sales_count; 10 } Book; 11 12 void output(Book x[], i…

T网站景点评论爬虫分享

由于学校作业需要对景点评论做一个汇总和分析,这里以T程网站为例,进行爬虫分析,爬取景点评论。开干! 景点评论页面 首先找到我们要爬取的评论页面:F12打开开发者工具,点击Network,Fetch/XHR:这里遇到个问题,页面被添加了无限断点,Fetch/XHR中没有任何数据,推荐用以下…

【每日一题】20241222

记住,只有软弱的人才从他人身上寻求回报。我们的回报是我们自己。【每日一题】某流水线上生产的一批零件,其规格指标 \(X\) 可以看作一个随机变量,且 \(X\sim N(98,\sigma^2)\), 对于 \(x\geq100\) 的零件即为不合格,不合格零件出现的概率为 \(0.05\).现从这批零件中随机抽…

【每日一题】2024

记住,只有软弱的人才从他人身上寻求回报。我们的回报是我们自己。【每日一题】某流水线上生产的一批零件,其规格指标 \(X\) 可以看作一个随机变量,且 \(X\sim N(98,\sigma^2)\), 对于 \(x\geq100\) 的零件即为不合格,不合格零件出现的概率为 \(0.05\).现从这批零件中随机抽…

Git-第一次提交

第一次提交 配置用户名和邮箱 git config --global user.name <username> git config --global user.email <email>目录结构first-steps就是一个示例项目 创建版本库 版本库是用来存储项目本身及其历史的 进入到first-steps目录中 cd first-steps git init提交 git…

一种隐藏VBA代码模块和恢复可见的方法

为了保护自己写的VBA程序代码不被他人抄袭,你可能想到给程序添加查看密码。然而这种密码是很容易被破解的,其中的一种破解方法详见我之前写的一篇文章:如何把Excel的VBA程序封装成DLL并分发给他人使用。其实还有很多种破解方法,包括下面即将介绍的这种隐藏代码模块的方法也…

渗透测试-前后端加密分析之AES加密下的SQL注入

本文是高级前端加解密与验签实战的第9篇文章,也是最后一篇文章。本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过前后端加密进行SQL注入。本文是高级前端加解密与验签实战的第9篇文章,也是最后一篇文章。本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本…

Transformers 框架 Pipeline 任务详解(五):表格问答(table-question-answering)

本文全面介绍了 Transformers 框架中的 table-question-answering 任务,从基础概念到实际应用,再到如何构建和部署一个交互式的表格问答系统。无论是在商业智能、教育辅导还是金融分析等领域,Transformers 框架都能为我们提供强有力的支持,助力我们快速实现高效的表格问答解…