学期(如2024-2025-1) 20241406刘书含)《计算机基础与程序设计》第六周学习总结
教材学习内容总结
《计算机科学概论》第七章
计算机硬件基础:
计算机硬件是计算机系统的物质基础,包括中央处理器(CPU)、内存、存储设备、输入输出设备等。
中央处理器(CPU):
CPU是计算机的大脑
内存:
内存(RAM)是计算机的短期记忆,用于存储当前正在处理的数据和程序。
包括随机访问存储器(RAM)和只读存储器(ROM)。
内存的类型、速度和容量对计算机性能有直接影响。
存储设备:
Eg.硬盘驱动器(HDD)、固态驱动器(SSD)和光盘。
存储设备的读写速度、容量和可靠性是选择时的重要考虑因素。
主板和扩展卡:
主板是连接所有硬件组件的平台。
扩展卡如图形处理单元(GPU)、声卡、网络卡等增强计算机的功能。
掌握递归算法的原理:
- 递归概念
递归算法是指一个函数在执行过程中,通过调用自身解决更小规模的相同问题。它通常将一个复杂的问题分解为较小的子问题,直到这些子问题的规模足够小,能够直接解决1. - 递归的执行原理
递归算法的执行可以通过以下几个步骤来理解2:
基本情况(Base Case): 每个递归函数必须有至少一个基本情况,以避免无限递归。当满足基本情况时,函数将停止调用自身并返回结果。
递归调用(Recursive Call): 在基本情况之外,函数需要调用自身,并在每次调用时使用较小规模的参数以解决子问题3.
减少问题规模(Reduce Problem Size): 每次递归调用都会减少问题的规模,这是确保最終返回到基本情况并结束递归的关键部分4.
合并结果(Merge Results): 一旦所有的子问题都得到解决,结果通常需要重新组合,以形成原问题的解 - 递归的优势与挑战
优势:
代码简洁:递归通常比迭代更易于理解和实现,尤其是在解决结构复杂的问题(如树和图的遍历)时7.
直接反映问题的性质:许多自然问题如分治和组合问题具有递归性质,递归使得这些问题的解决方案更直观。
挑战:
性能问题:递归可能导致大量的函数调用,尤其在子问题重叠时,可能造成效率低下8.
栈溢出:深度递归可能导致栈溢出错误,特别是在处理大规模问题时,需要谨慎设计基本情况和递归调用
《C语言程序设计》第五六章
控制结构:
讨论了C语言中的三种基本控制结构:顺序结构、选择结构和循环结构。
顺序结构是按照代码的书写顺序执行。
选择结构包括if、else if、else和switch语句,用于根据不同条件执行不同代码块。
循环结构包括for、while和do-while循环,用于重复执行代码块。
重点:循环:一、for语句
用法:
语法形式为for(初始化表达式; 条件表达式; 更新表达式) {循环体}。
int find=0;(标志变量)
for(;!find;)
{
printf("请输入正确的数字");
scanf("%d%d",&a,&b);
if(a>EPS&&b>EPS)
find=1;
}
二、while语句
含义:
while语句用于在条件为真时重复执行一段代码。
语法形式while(初始化表达式; 条件表达式; ) 。
三、do-while语句(直到)
含义:
do-while语句与while语句类似,但它保证循环体至少执行一次。
函数
函数的声明与定义
在 C 语言中,函数在使用前一般需要声明,声明告知编译器函数的名称、返回类型和参数类型。定义则是函数的具体实现。
例如 int add(int a, int b); 是声明
函数调用
可以在主函数或其他函数中调用函数。如 main() 函数中可以通过 result = add(3, 5); 调用 add 函数,并获取返回值。函数参数传递
值传递:将实际参数的值复制给形式参数,函数内对形参的修改不影响实参,如基本数据类型作为参数时。
指针传递:传递变量的地址,可在函数内修改原变量的值,常用于数组、字符串等操作。
函数的返回值
函数可以返回一个值(除 void 类型函数外),返回值类型要与函数声明的类型一致。 return 语句用于结束函数执行并返回值。
函数的作用
代码复用:避免重复编写相似的代码,提高编程效率。
模块化编程:将程序分割成多个功能独立的模块,便于理解、调试和维护。
教材学习中的问题与解决过程
一.画流程图(课堂知识的遗漏)
AI回答:
一、理解程序逻辑
在开始绘制流程图之前,首先需要对程序的逻辑进行深入理解。这包括:
确认输入与输出:明确程序所需的输入数据和预期输出结果。这有助于决定流程图的开始和结束点。
分析控制流程:识别程序中的各种控制结构,比如顺序结构、选择结构(if-else、switch语句)和循环结构(for、while语句)1。
识别功能模块:理解程序中的各个功能模块及其关系,以便在流程图中准确表现它们之间的交互2。
二、应用标准流程图符号
使用标准符号绘制流程图是确保图示整洁和易于理解的关键。常用的流程图符号有:
椭圆形:表示流程的开始和结束。
平行四边形:表示输入和输出。
矩形:表示处理过程或操作。
菱形:表示条件判断。
箭头:表示数据流向或流程的方向4。
三、绘制流程图的具体步骤
绘图的基本步骤通常包括:
确定起点和终点:绘制流程图时,首先确定程序的起始点和结束点。
标记输入和输出:使用平行四边形表示程序的输入和输出操作。
标记处理过程:使用矩形便于处理逻辑的步骤,如计算和赋值。
标记决策点:使用菱形表示条件判断的节点,比如何时进行循环或进行分支判断。
确保流程逻辑顺畅:用箭头连接各个步骤,确保从开始到结束逻辑流畅5。
四、验证和修改流程图
绘制完成后,确保仔细检查流程图的逻辑,验证每个步骤是否符合程序的逻辑结构,并在必要时进行修改:
二.如何正确的使用返回函数
AI
返回值的类型:每个函数在定义时都有指定的返回类型,常见的包括int、float、char等。如果返回类型为void,则函数在结尾可以简单使用return来结束函数,而不返回任何值
返回指针:
C语言允许函数返回指针类型的数据。返回指针需要格外小心,以确保指向有效内存,避免悬挂指针或内存泄漏。这通常用于动态内存分配的情况。
处理多个返回值:
尽管一个函数只能返回一个值,但可以通过参数传递或使用结构体来处理多个返回值。(1.通过指针传递;2.返回结构体)
注意
确保每条路径都有返回值:对于非void类型的函数,所有可能的执行路径都应返回一个值。缺失返回语句可能导致未定义行为6。
main函数的返回值:main函数的返回类型必须是int,通常使用return 0;结束,表示程序正常终止。不同的返回值可以用来指示错误状态7。
避免悬空指针:确保返回的指针指向有效的内存,避免返回指向局部变量的指针,这样在函数结束后局部变量会被销毁