学期: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语言程序设计》字符串总结:

一、字符串的表示

  1. 字符数组

    • 可以使用字符数组来存储字符串。例如: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 个字符的空间。
  2. 字符串字面量

    • 用双引号括起来的字符序列就是字符串字面量,如 "C Programming"。字符串字面量在内存中是连续存储的字符序列,并且以 '\0' 结尾。它具有静态存储期限,在程序的整个生命周期内都存在。

二、字符串的操作

  1. 字符串输入输出

    • printf 函数可以用于输出字符串。例如:printf("%s", str); 会输出字符数组 str 所存储的字符串。
    • scanf 函数可以用于输入字符串到字符数组中。例如:scanf("%s", str);,但 scanf 在读取字符串时遇到空格、制表符或换行符就会停止,所以如果要输入包含空格的字符串,可以使用 fgets 函数。例如:fgets(str, sizeof(str), stdin);fgets 会读取包括换行符在内的字符串,并且会确保读取的字符数不会超过指定的长度,从而避免缓冲区溢出。
  2. 字符串处理函数

    • 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(在一个字符串中查找另一个字符串首次出现的位置)等,它们在处理字符串时提供了更多的灵活性和安全性。

三、字符串与指针

  1. 字符指针
    • 可以定义一个字符指针指向一个字符串。例如: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'; 是错误的,会导致运行时错误。
  1. 动态分配字符串内存
    • 可以使用 malloccalloc 等函数动态分配字符数组内存来存储字符串。例如:
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

其他(感悟、思考等,可选)

这一周学习了有关字符串的知识,需要自已不断地练习与巩固,加深对一些函数的记忆与理解。

posted @ 2024-11-30 18:57  段蕾  阅读(4)  评论(0编辑  收藏  举报