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

发布时间 2023-11-12 20:23:32作者: 20231301周子昂

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

作业信息

作业 链接
作业课程 <班级>(2023-2024-1-计算机基础与程序设计
作业要求 <作业>(2023-2024-1计算机基础与程序设计第七周学习总结)
作业目标 <《计算机基础与程序设计》预习第八章>《计算机基础与程序设计》英 《计算机基础与程序设计》中 <《C语言程序设计》预习第六章> 《C语言程序设计》
作业正文 <博客>(第七周学习总结

学习内容总结

《计算机科学概论》第八章

从应用层、逻辑层、实现层三个方面观察数据。
数据结构:栈、队列
栈:LIFO(后进先出)
插入(push) 删除(pop)
栈没有长度属性。是否为空(IsEmpty)

队列:FIFO(先进先出

列表三个属性特征:
项目是同构的,项目是线性的,列表是变长的。

数组是内嵌结构,列表是抽象结构。列表应用与数组中。

二叉树:每个节点最多又两个子节点的树。
后继节点(子女);起始点(根);没有子女的节点(树叶)

无向图、有向图
深度优先搜素:沿着一条路径尽可能深地访问各个节点。
广度优先搜素:优先检查所有与起点相邻的顶点。
单源最短路搜索:最短路径

参数:形参、实参、值参、引用参数

《C语言程序设计》第六章

计数控制的循环:重复处理的次数已知
条件控制的循环:重复处理的次数未知,由给定条件控制

结构化程序设计;顺序、选择、循环

循环结构:
当型循环结构:P成立,再执行A
直到型循环结构:先执行A,再判断P是否成立

while:当型
如果忘记加上花括号,那么仅while后面的第一条语句会被当做循环体中的语句来处理。

do-while:直到型
循环体内的语句将至少被执行一次

for:当型
for(初始化表达式;循环控制表达式;增值表达式)
for语句可用while语句来等价实现

逗号运算符(顺序求值运算符):实现对各个表达式的顺序求值
优先级最低、具有左结合性
主要用在for语句中需要同时为多个变量赋初值等情况。

空语句:仅由一个分号构成的语句,常用于编写延时程序
如果while后面被意外地加上分号,可能产生死循环。

当第一次测试循环条件就为假时,while语句和do-while语句时不等价的。

计数控制的循环:for
嵌套循环:先由外层循环进入内层循环,并在内层循环终止之后接着执行外层循环,由外层循环进入内层循环中,当外层循环全部终止时,程序结束。

用单重循环实现的程序执行效率更高。
嵌套循环的内层和外层的循环控制变量不应同名。

条件控制的循环:while do-while
可用随机函数rand()生成计算机“想”的数。由于只允许用户猜一次,因此采用多分支选择结构即可实现。
magic=rand();
符号常量RAND_MAX是在头文件stdlib.h中定义的。
(1)利用求余运算rand()%b将函数rand()生成的随机数变化在[0,b-1]。
(2)利用rand()%b+a将随机数的取值范围平移到[a,a+b-1]上。

反复调用函数rand()所产生的一系列?看似是随机的,但每次执行程序时所产生的随机数序列却是一样的,都是相同的一个数列,而程序又每次只用到了数列中的第一个随机数。
通过调用函数srand()为函数rand()设置随机数种子来实现。
只要设置的随机数种子不同执行程序时就会产生不同的随机数序列。
(1)unsigned int seed;
(2)scrand(time(NULL));
time(NULL)的返回值被转换为一个无符号整数,使用函数time()时,必须在程序开头将头文件<time.h>包含到程序中。

控制流程转移的跳转语句:goto、break、continue、return

goto:无条件直接使程序跳转到该语句标号(Label)所标识的语句去执行。goto END; END: ;
goto语句和if语句联合使用。
少用慎用goto语句,尤其是不要使用往回跳转的goto语句

break:有条件跳转语句

continue:当在循环体中遇到continue语句时,程序将跳过continue语句后面尚未执行的语句,开始下一次循环,即只结束本次循环的执行,并不终止整个循环的执行。
当for循环与while循环中有continue时,两者并非是等价的。

在嵌套循环的情况下,break语句和continue语句只对包含它们的最内层的循环语句起作用,不能用break语句跳出多重循环。goto语句是跳出多重循环的一条捷径。

学习中的问题

  1. 计算立方根时为什么不是b=pow(a,1/3),而是b=pow(a,1.0/3.0)?

在C语言中,pow函数的参数和返回值都是浮点数类型。当我们使用pow函数计算立方根时,需要注意参数的类型。在表达式1/3中,1和3都是整型常量,因此按照C语言规则,整数相除的结果也是整数。这意味着1/3会被计算为0,而不是0.33333...。因此,如果我们写成pow(a, 1/3),实际上是相当于pow(a, 0),即计算a的0次方,而不是立方根。为了避免这种情况,我们需要确保至少有一个操作数是浮点数,这样才能得到浮点数的结果。因此,将1和3写成1.0和3.0就可以确保进行浮点数的除法运算,得到的结果是浮点数0.33333...,这样就能正确地计算立方根了。

【上图中代码错误】

printf好像只能输出十进制整数,要输出16进制可能还得先通过程序把10进制转换成16进制,再以字符的形式输出。