学期:2024-2025-1 学号:20241303 《计算机基础与程序设计》第七周学习总结

news/2024/11/13 9:12:53/文章来源:https://www.cnblogs.com/dl2006/p/18537808

作业信息

这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)
这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第七周作业
这个作业的目标 <写上具体方面>计算机科学概论(第七版)第8章 并完成云班课测试,《C语言程序设计》第6章并完成云班课测试
作业正文 ... 本博客链接

教材学习内容总结

《计算机科学概论(第七版)》第8章

  1. 抽象数据类型
    • 抽象数据类型是对数据及对数据操作的封装,用户只需要关心其逻辑特性而不必了解具体的实现细节。它提供了一种更高层次的数据抽象方式,使得程序的设计和理解更加容易。
  2. 数据结构
    • :是一种具有特殊操作规则的线性表,遵循“后进先出”(LIFO)的原则。就像一个堆叠的盘子,最后放上去的盘子最先被拿走。在计算机程序中,栈常用于函数调用、表达式求值等场景,例如在程序调用函数时,函数的参数、局部变量等信息会被压入栈中,函数执行结束后再从栈中弹出。
    • 队列:也是一种线性表,但遵循“先进先出”(FIFO)的原则。类似于排队买票,先来的人先买到票。队列在计算机系统中常用于任务调度、消息传递等场景,比如操作系统中的任务队列,按照任务到达的先后顺序进行处理。
    • 列表:是一种常见的数据结构,可以分为数组实现的列表和链式实现的列表。数组实现的列表在内存中是连续存储的,访问元素的速度较快,但插入和删除元素的操作比较耗时;链式实现的列表则是通过节点之间的链接来存储数据,插入和删除元素相对较方便,但访问元素需要遍历链表。
    • :是一种分层的数据结构,具有根节点、子节点和叶节点等概念。二叉树是树的一种特殊形式,每个节点最多有两个子节点。二叉树有三种遍历方式,分别是前序遍历(先访问根节点,再遍历左子树,最后遍历右子树)、中序遍历(先遍历左子树,再访问根节点,最后遍历右子树)和后序遍历(先遍历左子树,再遍历右子树,最后访问根节点)。
    • :图是由节点(顶点)和边组成的数据结构,可以分为有向图和无向图。图在现实生活中有很多应用,比如社交网络中的人际关系图、地图导航中的道路图等。
  3. 参数传递:介绍了形参和实参的区别。形参是在函数定义时指定的参数,仅在函数内部有效,用于接收调用函数时传递的实际参数的值;实参是在调用函数时传递给函数的具体数值或变量。
  4. 子程序:子程序是一段可以被其他程序调用的代码模块,它可以提高代码的复用性和可维护性。通过将一些常用的功能封装成子程序,在程序的不同部分可以多次调用,减少了代码的重复编写。

《C 语言程序设计(第四版)》第六章:

一、函数的基本概念

函数是 C 语言程序的基本组成模块,它将一个较大的程序任务分解为若干个较小且相对独立的子任务,每个子任务由一个函数来实现。这样可以提高程序的可读性、可维护性和可复用性。一个函数由函数头和函数体两部分组成。函数头包含函数的返回类型、函数名和参数列表(形式参数);函数体则包含了在函数被调用时执行的一系列语句,用花括号括起来。

二、函数的定义

函数定义的一般形式为:
返回类型 函数名(形式参数列表)
{
声明部分
语句部分
}

例如:

int max(int x, int y)
{int z;if (x > y)z = x;elsez = y;return z;
}

这里定义了一个名为 max 的函数,它接受两个 int 类型的参数 xy,在函数体中比较这两个参数的大小,将较大的值赋给变量 z,并通过 return 语句返回 z 的值。

三、函数的声明

函数声明的作用是把函数的名字、函数类型以及形参类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。函数声明可以在主函数之前,也可以在主函数内部,但在调用函数之前。其一般形式为:
返回类型 函数名(参数类型列表);

例如:int max(int, int);

如果函数在主函数之前定义,则可以不进行声明,因为编译系统在编译主函数之前已经知道了函数的相关信息。

四、函数的参数传递

  1. 值传递
    在函数调用时,将实参的值复制一份传递给形参。形参和实参分别占用不同的内存单元,对形参的修改不会影响实参的值。例如:
#include <stdio.h>void swap(int a, int b)
{int temp;temp = a;a = b;b = temp;printf("在 swap 函数中:a = %d, b = %d\n", a, b);
}int main()
{int x = 3, y = 5;swap(x, y);printf("在 main 函数中:x = %d, y = %d\n", x, y);return 0;
}

在这个例子中,swap 函数试图交换两个参数的值,但由于是值传递,在 swap 函数中对 ab 的修改不会影响到 main 函数中的 xy

五、函数的返回值

函数可以返回一个值给调用它的函数。返回值的类型由函数定义时的返回类型指定。在函数体中使用 return 语句返回值,return 语句后面可以跟一个表达式,该表达式的值就是函数的返回值。当函数执行到 return 语句时,函数立即结束并将返回值带回调用处。如果函数不需要返回值,则将返回类型定义为 void。例如:

double average(int a, int b)
{return (double)(a + b) / 2;
}

这个函数计算两个整数的平均值并以 double 类型返回。

六、函数的嵌套调用

C 语言中函数可以嵌套调用,即一个函数在执行过程中可以调用另一个函数。例如:

#include <stdio.h>int f1(int x)
{return x * x;
}int f2(int x)
{return f1(x) + 1;
}int main()
{int a = 3;printf("结果:%d\n", f2(a));return 0;
}

在这个例子中,main 函数调用 f2 函数,f2 函数又调用 f1 函数来完成特定的计算。

七、函数的递归调用

函数直接或间接调用自身称为递归调用。递归函数通常包含两个部分:递归部分和终止条件。递归部分用于将问题不断分解为规模更小的子问题;终止条件用于在问题规模足够小时停止递归,防止无限递归。例如计算阶乘的递归函数:

int factorial(int n)
{if (n == 0 || n == 1)return 1;elsereturn n * factorial(n - 1);
}

在计算 n 的阶乘时,不断调用自身计算 n - 1 的阶乘,直到 n 为 0 或 1 时停止递归。

八、变量的作用域和生存期

  1. 作用域

    • 局部变量:在函数内部或复合语句内部定义的变量称为局部变量,其作用域仅限于定义它的函数或复合语句内部。
    • 全局变量:在函数外部定义的变量称为全局变量,其作用域从定义位置开始到源文件结束,可以被多个函数共享。但过多使用全局变量可能会导致程序的可读性和可维护性变差,并且容易引起命名冲突等问题。
  2. 生存期

    • 动态存储变量:局部变量属于动态存储变量,在函数调用时分配内存空间,函数执行结束时释放内存空间。
    • 静态存储变量:使用 static 关键字修饰的局部变量或全局变量属于静态存储变量。静态局部变量在函数第一次调用时初始化,其生存期延长至整个程序运行期间,但作用域仍局限于函数内部;静态全局变量的作用域限制在定义它的源文件内,生存期为整个程序运行期间。

通过对函数相关知识的深入理解和掌握,可以编写出结构更加清晰、功能更加强大且易于维护的 C 语言程序。

基于AI的学习

代码调试中的问题和解决过程

问题:输入1个字符,若为字母,输出"Character",若为数字,输出"Number",否则输出"Not character or number"。
解决方法:寻找AI的帮助,了解到了新的知识
调用新的函数

#include<stdio.h>#include<ctype.h>int main()
{
char a;
scanf("%c",&a);
if(isalpha(a))
printf("character");
else if(isdigit(a))
printf("number");
else
printf("not character or number");
return 0;
}

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第五周 900/1500 1/2 20/30
第六周 1100/1600 1/4 18/38
第七周 1300/1800 1/7 22/60
第八周 1300/1300 0/9 30/90

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

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

相关文章

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

作业信息 |2024-2025-1-计算机基础与程序设计)| |-- |- |2024-2025-1计算机基础与程序设计第七周作业)| |快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题并在期末回答这些问题 |作业正文|https://www.cnblogs.com/shr060414/p/18…

PbootCMS 网站转移后无法打开报错提示“No input file specified”怎么办

问题:PbootCMS 网站转移后无法打开,提示“No input file specified”。 解决方案:删除 .user.ini 文件:检查根目录中是否存在 .user.ini 文件,如有则删除。 重启 Web 服务器:重启 Apache 或 Nginx 服务。 检查 PHP 配置:确保 cgi.fix_pathinfo 设置为 1。 检查 Nginx 配…

PbootCMS网站后台图片上传提示:“上传失败:存储目录创建失败!”

后台图片上传提示:“上传失败:存储目录创建失败!”问题描述:图片上传失败,提示存储目录创建失败。 解决方案:给根目录下的 static 文件夹增加写入权限,一般设置为 755 或 777,推荐 755 权限设置。chmod -R 755 /path/to/your/project/static扫码添加技术【解决问题】专…

PbootCMS基本调用标签大全

首页、栏目页、内页的标题、关键词、描述:首页:<title>{pboot:sitetitle}</title> 栏目页:<title>{pboot:if({sort:title}==){pboot:pagetitle}{else}{sort:title}{/pboot:if}</title> 内页:<title>{content:title}-{pboot:sitetitle}</t…

HTTP 错误 500.22 - Internal Server Error

IIS程序池的.net FrameWork版本不是经典模式解决方法:将应用程序池的托管管道模式更改为“经典”模式:打开IIS管理器。 选择“应用程序池”。 选择对应的应用程序池,点击右侧的“高级设置”。 将“托管管道模式”设置为“经典”。扫码添加技术【解决问题】专注中小企业网站建…

宝塔安装ssl后站点打不开

当在宝塔面板上安装SSL证书后,如果站点无法访问,可以尝试以下几个步骤来排查和解决问题:检查SSL证书是否正确安装登录宝塔面板。 进入“网站”管理界面,选择对应的站点。 点击“设置”,进入“SSL”选项卡,确认证书已经正确安装。检查域名解析确保域名正确解析到服务器的I…

宝塔linux面板php7.0安装不上

在宝塔 Linux 面板上安装 PHP 7.0 时,可能会遇到一些问题。以下是一些常见的解决方法和步骤,帮助你成功安装 PHP 7.0。 1. 检查系统环境 确保你的服务器满足安装 PHP 7.0 的要求。登录宝塔面板:打开浏览器,访问你的宝塔面板地址,例如 http://your_server_ip:8888。 使用管…

五子棋软件简介及其用法

本文按照 五子棋对弈平台、 五子棋单机版软件、五子棋界面+引擎 三种模式的顺序介绍。 五子棋对弈平台 人机对弈 http://wap.lltskb.com/shfw/game/wzq/index.html?eqid=a0cd9efb0000c3ca00000006645b4932 天天象棋里的欢乐五子棋 五子棋单机版软件 gomocalc网页版五子棋 …

CAMixerSR:只有细节需要更多关注

CAMixerSR:只有细节需要更多关注为了满足对大图像(2K-8K)超分辨率(SR)快速增长的需求,主流方法遵循两条独立的轨道:①通过内容感知路由加速现有网络;②通过令牌混合器重构设计更好的超分辨率网络。尽管直接,但它们遇到了不可避免的缺陷(例如,不灵活的路由或非歧视性…

VMware ESXi 6.7U3u macOS Unlocker OEM BIOS 2.7 集成 Realtek 网卡驱动和 NVMe 驱动 (集成驱动版)

VMware ESXi 6.7 Update 3 Unlocker & OEM BIOS 集成 REALTEK 网卡驱动、USB 网卡驱动和 NVMe 驱动 (集成驱动版)VMware ESXi 6.7U3u macOS Unlocker & OEM BIOS 2.7 集成 Realtek 网卡驱动和 NVMe 驱动 (集成驱动版) 此版本解决的问题:VMware Host Client 无法将现有…

通过渐进式混合语境扩散完成Amodal

通过渐进式混合语境扩散完成Amodal即使部分隐藏在视线之外,大脑也能毫不费力地识别物体。看到隐藏的可见物被称为amodal完成;然而,尽管进展迅速,但这项任务对生成式人工智能来说仍然是一个挑战。建议避开现有方法的许多困难,这些方法通常涉及预测amodal掩模然后生成像素的…

深度学习工程实践:PyTorch Lightning与Ignite框架的技术特性对比分析

在深度学习框架的选择上,PyTorch Lightning和Ignite代表了两种不同的技术路线。本文将从技术实现的角度,深入分析这两个框架在实际应用中的差异,为开发者提供客观的技术参考。 核心技术差异 PyTorch Lightning和Ignite在架构设计上采用了不同的方法论。Lightning通过提供高层…