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

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

时间:2024-11-10 11:40:44浏览次数:4  
标签:调用 return 函数 int 2024 2025 遍历 节点 20241303

作业信息

这个作业属于哪个课程 <班级的链接>(如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;
    else
        z = 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;
    else
        return 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

标签:调用,return,函数,int,2024,2025,遍历,节点,20241303
From: https://www.cnblogs.com/dl2006/p/18537808

相关文章

  • 2024-2025-1 20241327 《计算机基础与程序设计》第七周学习总结
    作业信息|2024-2025-1-计算机基础与程序设计)||--|-|2024-2025-1计算机基础与程序设计第七周作业)||快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题并在期末回答这些问题|作业正文|https://www.cnblogs.com/shr060414/p/18440575|教......
  • Z-Library官网入口镜像网址及客户端合集 (2024持续更新)
    Z-Library(简称Z-Lib,前身为BookFinder)是一个影子图书馆网站,用户可在上面下载期刊、文章以及各类书籍,其共收录了超过1000w本书籍和8000w篇文章。它原是创世纪图书馆(LibraryGenesis)的镜像网站,并从该图书馆获得大部分馆藏,但它的一些馆藏由用户自行上传,并且不为创世纪图书馆所......
  • 2024版最新CTF —— 网络安全大赛_ctf网络安全大赛,收藏这一篇就够了
    前言随着大数据、人工智能的发展,人们步入了新的时代,逐渐走上科技的巅峰。⚔科技是一把双刃剑,网络安全不容忽视,人们的隐私在大数据面前暴露无遗,账户被盗、资金损失、网络诈骗、隐私泄露,种种迹象表明,随着互联网的发展,网络安全需要引起人们的重视。互联网安全从其本质上来讲......
  • 2024年最强网络安全学习路线,详细到直接上清华的教材!
    关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线首先咱们聊聊,学习网络安全方向通常会有哪些问题前排提示:文末有CSDN官方认证网络安全入门资料包!1、打基础时间太长学基础花费很长时间,光语言都有几门,有些人会倒在学习linux系统及命令的路上,更多的人......
  • 2024 CSP-J/S 游记
    前言暑假和开学后一直在考模拟赛,前前后后考了有四十多场,这应该比我以前三年考过的模拟赛数量加起来还多了,所以这个赛季还是希望能考好一点的(虽然模拟赛考的很烂)。印象最清晰的是一场S组模拟赛把CDQ分治加斜率优化dp放在了T1。很多大数据结构T4也是之前没有见过的码量(......
  • 2024-2025 20241308 《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 数组与链表基于数组和基于链表实现数据结构无序表与有序表树图子程序与参数作业正文......
  • 2024-2025-1 20241417 《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第七周作业这个作业的目标<数组与链表,基于数组和基于链表实现数据结构,无序表与有序表,树,图,子程序与参数>作业正文https://www.cnblogs.com/lry......
  • 十大最佳数据恢复软件——2024-2025年10款最佳数据恢复软件
    我们将数据存储在我们的计算机和其他设备上。我们可能拥有与我们工作的公司或我们的个人信息相关的机密信息。有时系统可能会得到维修,或者可能会发生一些事情。所以数据会丢失。在硬盘驱动器,硬盘等数据存储设备中可能会损坏。为了取回数据,我们有数据恢复软件。10款最佳数据恢......
  • 中文大模型基准测评2024年10月报告
    背景自2023年以来,AI大模型在全球范围内掀起了有史以来规模最大的人工智能浪潮。进入2024年,全球大模型竞争态势日益加剧,随着Sora、GPT-4o、o1的发布,国内大模型在2024年进行了波澜壮阔的大模型追逐赛。中文大模型测评基准SuperCLUE持续对国内外大模型的发展趋势和综合效果进......
  • 还在搞传统爬虫吗?2025年用人工智能轻松抓取几乎所有网站
    今天,我将介绍一种简单的方法,帮助大家从各种网站上收集数据,搭建一个能够像人在浏览器中操作的网页爬虫。这种爬虫甚至可以在Upwork等平台上独立完成一些网页抓取的自由职业任务。自2024年以来,随着AI的发展,网页抓取发生了巨大的变化。以前,大公司如亚马逊或沃尔玛为了保持价格......