学期:2024-2025-1 学号:20241303 《计算机基础与程序设计》第10周学习总结
作业信息
这个作业属于哪个课程 | <班级的链接>(如2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | <作业要求的链接>(如2024-2025-1计算机基础与程序设计第十周作业) |
这个作业的目标 | <写上具体方面>计算机科学概论(第七版)第12,13,14章 并完成云班课测试,《C语言程序设计》第9章并完成云班课测试 |
作业正文 | ... 本博客链接 |
教材学习内容总结
《计算机科学概论》第七版第12、13、14章:
第12章总结
- 信息管理:信息系统作为帮助组织和分析数据的软件,在数据处理中起着关键作用。电子制表软件则是通过单元格来组织数据和公式的应用软件,行列标号可用于引用单元格,公式能引用其他单元格的值并使用内置函数计算结果,还可使用单元格范围数据,但要避免循环引用.
- 数据库管理系统:关系模型是其基础,以二维表形式组织数据,通过主键和外键维护数据完整性和关系。结构化查询语言(SQL)作为操作关系数据库的标准编程语言,涵盖数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)等,可实现数据定义、操纵和控制等功能.
- 电子商务:随着互联网发展而兴起,改变了传统商业模式,涉及在线购物、电子支付、供应链管理等多个方面,为企业和消费者提供了更便捷的交易方式。
- 大数据:具有数据量大、种类多、处理速度快等特点,其重要性在于能从海量数据中挖掘有价值信息,为决策提供支持,但也面临数据存储、管理、分析和隐私保护等挑战,需要强大的技术架构和处理能力来应对.
第13章总结
- 人工智能基础:作为研究人类思想建模与应用的领域,旨在让计算机模拟人类智能。图灵测试是衡量机器能否像人一样思考的方法,通过图灵测试的计算机具有弱等价性,若内部过程也相同则具有强等价性.
- 知识表示:语义网以图形化方式表示知识,捕捉对象间的真实关系;检索树用于表示对抗性移动等知识,如在比赛中的应用,这两种方法有助于计算机更好地理解和处理知识.
- 专家系统:嵌入人类专家知识,基于一套规则进行推理和决策,适用于医疗诊断等多种决策过程,能有效解决复杂问题并提供专业建议.
- 自然语言处理:包含语音合成、语音识别以及计算机对自然语言的理解和解释等方面,如对单词“light”多种含义的理解和处理,使计算机能更自然地与人交流.
- 机器人学:遵循阿西莫夫的机器人三定律,包括固定机器人和移动机器人两类。规划系统能根据目标、起始位置和结束情况生成解决方案算法,subsumption架构则规定行为并行运行及冲突时的优先级。机器人由传感器、执行器和计算元素等组成,通过这些组件实现感知、决策和行动的功能.
第14章总结
- 模拟:是为复杂系统构建计算机模型并进行实验观察的计算领域,模型是真实系统的抽象。连续模拟中变化由偏微分方程表示,如气象模型和地震模型;离散事件模拟中行为表示为实体、属性和事件,排队系统就是一种离散事件模拟,通过模拟可分析等待时间等因素.
- 计算机图形学:结合计算机、科学和绘画艺术,依靠数学方程模拟自然现象,涉及光的交互、对象属性、形状和物理属性等,以生成接近真实照片的图像,在影视特效、游戏开发、设计等领域有广泛应用.
- 计算机游戏:玩家可在虚拟世界中与系统及其他玩家交互,游戏开发者利用游戏引擎创建虚拟世界,涵盖多种类型和风格,具有娱乐性和教育性等价值,同时也推动了计算机技术的发展.
- 其他应用:还探讨了计算机科学在计算生物学等领域的应用,如生物活性大分子模型、基因建模等,以及所需的计算能力等方面,展现了计算机科学在不同学科交叉领域的重要作用.
《C语言程序设计》字符串总结:
一、字符串的表示
-
字符数组
- 可以使用字符数组来存储字符串。例如:
char str[10] = "Hello";
,这里定义了一个长度为 10 的字符数组str
,并初始化为"Hello"
。在 C 语言中,字符串是以空字符'\0'
作为结束标志的,所以实际上字符数组str
中存储的是'H'
、'e'
、'l'
、'l'
、'o'
、'\0'
。 - 字符数组的长度在定义时确定,如果初始化字符串长度超过数组定义长度,可能会导致缓冲区溢出错误。例如:
char str[5] = "World";
是错误的,因为"World"
加上结束符'\0'
需要 6 个字符的空间,而数组str
只有 5 个字符的空间。
- 可以使用字符数组来存储字符串。例如:
-
字符串字面量
- 用双引号括起来的字符序列就是字符串字面量,如
"C Programming"
。字符串字面量在内存中是连续存储的字符序列,并且以'\0'
结尾。它具有静态存储期限,在程序的整个生命周期内都存在。
- 用双引号括起来的字符序列就是字符串字面量,如
二、字符串的操作
-
字符串输入输出
printf
函数可以用于输出字符串。例如:printf("%s", str);
会输出字符数组str
所存储的字符串。scanf
函数可以用于输入字符串到字符数组中。例如:scanf("%s", str);
,但scanf
在读取字符串时遇到空格、制表符或换行符就会停止,所以如果要输入包含空格的字符串,可以使用fgets
函数。例如:fgets(str, sizeof(str), stdin);
,fgets
会读取包括换行符在内的字符串,并且会确保读取的字符数不会超过指定的长度,从而避免缓冲区溢出。
-
字符串处理函数
- C 标准库提供了许多字符串处理函数,这些函数定义在
<string.h>
头文件中。 strlen
函数用于计算字符串的长度(不包括结束符'\0'
)。例如:int len = strlen(str);
。strcpy
函数用于将一个字符串复制到另一个字符数组中。例如:char dest[20]; strcpy(dest, "Source String");
,要注意目标数组必须有足够的空间来存储源字符串,否则会导致缓冲区溢出。strcat
函数用于将一个字符串连接到另一个字符串的末尾。例如:char str1[20] = "Hello"; char str2[] = " World"; strcat(str1, str2);
之后str1
的内容变为"Hello World"
。同样,目标数组要有足够空间。strcmp
函数用于比较两个字符串的大小。如果两个字符串相等,返回 0;如果第一个字符串小于第二个字符串,返回负数;如果第一个字符串大于第二个字符串,返回正数。例如:int result = strcmp(str1, str2);
。- 还有其他一些函数如
strncpy
(指定长度复制)、strncat
(指定长度连接)、strstr
(在一个字符串中查找另一个字符串首次出现的位置)等,它们在处理字符串时提供了更多的灵活性和安全性。
- C 标准库提供了许多字符串处理函数,这些函数定义在
三、字符串与指针
- 字符指针
- 可以定义一个字符指针指向一个字符串。例如:
char *ptr = "Hello";
,这里ptr
指向字符串"Hello"
的首字符'H'
。通过指针可以遍历字符串,如:
- 可以定义一个字符指针指向一个字符串。例如:
while (*ptr!= '\0') {
printf("%c", *ptr);
ptr++;
}
- 字符指针在函数参数传递中经常用于传递字符串,因为在 C 语言中,数组作为函数参数时会退化为指针。例如:
void printString(char *str) {
printf("%s\n", str);
}
- 但是要注意,当使用字符指针指向一个字符串字面量时,不能试图修改字符串字面量的内容,因为它们存储在只读内存区域。例如:
ptr[0] = 'h';
是错误的,会导致运行时错误。
- 动态分配字符串内存
- 可以使用
malloc
、calloc
等函数动态分配字符数组内存来存储字符串。例如:
- 可以使用
char *str = (char *)malloc(10 * sizeof(char));
if (str!= NULL) {
strcpy(str, "Dynamic");
// 使用 str 后,记得释放内存
free(str);
}
- 动态分配内存可以根据实际需要灵活调整字符串的存储大小,但要确保正确地分配和释放内存,避免内存泄漏和悬空指针等问题。
C 语言中的字符串虽然基础,但在实际编程中有着广泛的应用,掌握好字符串的各种操作和特性对于编写高质量的 C 语言程序至关重要。
基于AI的学习
代码调试中的问题和解决过程
问题1:如何实现字符串反向shuchu
方法:
char *Unstr(char *a)
{
int len=strlen(a);
char *b=(char*)malloc(len+1);
if(b==NULL)
{
printf("wrong!\n");
return NULL;
}
char *pb;
pb=b;
a+=len-1;
while(len>0)
{
*b=*a;
a--;
b++;
len--;
}
*b='\0';
return pb;
}
问题2:如何实现strcat函数的功能
方法:
注意一定要返回数组的首地址。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第八周 | 1400/2000 | 1/2 | 20/20 | |
第九周 | 1600/2000 | 1/4 | 18/38 | |
第十周 | 1700/2000 | 1/7 | 22/60 | |
第十一周 | 300/1300 | 2/9 | 30/90 |
其他(感悟、思考等,可选)
这一周学习了有关字符串的知识,需要自已不断地练习与巩固,加深对一些函数的记忆与理解。