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

发布时间 2023-12-09 19:50:22作者: 20231320叶译婷

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

作业信息

这个作业属于哪个课程 <班级的链接>(2023-2024-1 计算机基础与程序设计)
这个作业要求在哪里 <作业要求的链接>(2022-2023-1计算机基础与程序设计第十一周作业)
这个作业的目标 <自学《计算机基础与程序设计》第15,16章并完成云班课作业 、自学《C语言程序设计》第10章并完成云课班作业>
作业正文 作业正文

教材学习内容总结

《计算机科学概论》
本章主要讲了与网络有关的内容。计算机网络中涉及到数据传输率,协议等问题。同时还有客户/服务器模型。文件服务器、Web服务器。而其中网络类型有局域网,广域网,其中环形拓扑、星型拓扑,总线拓扑等。而各个电脑之间通过internet连接。同时采用包交换的方式提高在共享线路上传输数据的有效性。
16章简单介绍了万维网,我们使用的是web浏览器,web服务器。web地址是统一资源定位符。web搜索引擎,即时消息,cookie是另一种基于web的技术,增强了web的实用性,web页是用超文本标记语言创建,标记语言。
《C语言程序设计》
本章主要讲了字符串。包括他的储存,字符指针,字符串的访问和输入输出,向函数传递字符串,从函数返回字符串指针。本章还有补充内容,const类型限定符、字符处理函数,数值字符串向数值的转换。

教材学习中的问题和解决过程

问题一:字符串中关于输出的问题,有时候停止不了
解决:在字符串的结尾加上‘\0’作为结尾

基于AI的学习

q
我最近在学习字符串,请你用苏格拉底的方式向我提问,一次一个问题,每次问你下一问题前先对上次回答进行评价
AI
当你学习字符串时,你是否能够明确区分字符串的不同性质,比如可变性和不可变性?
q
请问什么是可变性和不可变性?
AI
可变性和不可变性是指一个对象在创建后是否可以被修改的性质。在编程中,这是一个重要的概念,尤其涉及到数据类型如字符串。
不可变性(Immutability) 意味着一旦对象被创建,它的值就不能被修改。如果你想要改变这个对象,实际上是创建了一个新的对象,而原始对象保持不变。字符串在许多编程语言中通常是不可变的,包括 Python 中的字符串。
可变性(Mutability) 则允许对象在创建后被修改。这意味着你可以直接改变对象的值,而不需要创建一个新的对象。与不可变性相比,可变性可能更灵活,但也可能引起一些意想不到的问题,因为对象的状态可以在程序的执行过程中发生变化。
AI
在学习字符串时,了解字符串是可变还是不可变的,有助于理解它们在程序中的行为,以及如何有效地使用和处理它们。你对这个概念有清晰的认识吗?
q
有了,请继续询问我关于C语言字符串的问题
AI
很好,让我们继续深入了解。在C语言中,字符串通常是使用字符数组来表示的。你知道C语言中的字符串是如何结束的吗?也就是说,在C语言中,如何确定字符串的末尾?在C语言中,字符串是通过以空字符('\0',ASCII码为0)作为结束符来表示的。这个空字符标志着字符串的结束,告诉程序字符串在这里结束,不再有有效的字符。
例如,如果你有一个字符数组 char str[10] = "Hello";,这个数组的实际长度是10,但由于字符串在C中是以空字符结尾的,所以实际上只有5个字符('H', 'e', 'l', 'l', 'o')加上一个空字符('\0')。这样,C语言的字符串处理函数知道何时停止处理字符串。
了解了C语言中字符串的结束标志,你对于在程序中正确处理字符串的方式有什么理解吗?
q
对字符串可以进行复制,删除,添加
AI
你的理解是正确的。在C语言中,你可以使用不同的方法来复制、删除和添加字符串内容。这些操作通常依赖于字符数组和相关的字符串处理函数。让我们具体讨论一下:
复制字符串: 你可以使用标准库函数 strcpy 来复制一个字符串。例如:

c

include <string.h>

int main() {
char source[] = "Hello";
char destination[20];
strcpy(destination, source);
// 现在 destination 包含了 "Hello" 的拷贝
return 0;
}

删除字符串: 在C语言中,你可以通过移动字符来实现字符串的删除。例如,如果你想删除字符串中的一个字符,你可以使用循环将后面的字符向前移动。这需要一些手动的数组操作。
添加字符串: 你可以使用 strcat 函数将一个字符串添加到另一个字符串的末尾。例如:

c

include <string.h>

int main() {
char str1[20] = "Hello";
char str2[] = " World";
strcat(str1, str2);
// 现在 str1 包含了 "Hello World"
return 0;
}

在进行这些操作时,要确保目标数组足够大,以防止溢出。此外,C语言的字符串处理需要谨慎,避免数组越界和其他潜在的错误。

上周错题总结

问题一:A spreadsheet cell can contain data, but not a formula.
错误,电子表格单元格可以包含数据,并且还可以包含公式。
问题二:Which of the following describes the direction at which light bounces off a mirror?
A. Normal vector
B. Light vector
C. View vector
D. Reflection vector
E. Transposition vector
反射矢量描述了光线从镜子反射的方向。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 20/20 1/2 20/20 通过计算机概论的略读,对计算机有了一个更准确的初步了解
第二周 5/10 2/4 5/25 对计算机和编程有了基础的专业了解
第三周 5/10 1/4 7 /32 对C语言有了初步的了解,编程开始入门
第四周 50/50 2/4 7/38 学会使用编程工具,逻辑门,分支等重要编程基础
第五周 40/120 2/4 6/20 学会一些编程语言,对codeblocks的使用有了新的学习
第六周 400/520 1/5 8/28 学会了关于分支等的一些基础编程语言,同时也对计算机的自学有的更深的体会,能够自己解决部分不懂的问题
第七周 350/870 2/7 7/35 学会了关于自定义函数的使用,以及代码的编写
第八周 350/1220 1/8 8/41 学习了数组的概念,同时也了解到一些自己的不足如对Python不了解,无法快速完成云班课任务,本周还学习了多维数组的概念
第九周 350/1570 1/9 9/50 学习了二维数组和指针的概念,还通过实验让自己对之前的知识有了一个融会贯通
第十周 250/1920 1/10 7/59 学习了字符串有关知识
第十一周 180/ 2100 1/11 7/66 学习了结构体的知识,明白了如何将不同类型的数据结合起来