# 学期2024-2025-1 学号20241405《计算机基础与程序设计》第10周学习总结

作业信息

|这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP|
|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10|
|这个作业的目标|1、信息系统 2、数据库与SQL 3、人工智能与专家系统 4、人工神经网络 5、模拟与离散事件 6、排队系统 7、天气与地震模型 8、图形图像|
|作业正文|https://i.cnblogs.com/posts/edit;postId=18579405|

教材学习内容总结

《计算机科学概论》第十二章内容总结:

信息系统

  • 定义与作用:信息系统是帮助用户组织、管理和分析数据的软件工具,可应用于电子商务、医疗、教育等众多领域.
  • 电子制表软件:以单元格来组织数据和公式,行列标号可用于引用单元格,公式能引用其他单元格的值并使用内置函数计算结果,需注意避免循环引用。如Microsoft Excel等电子制表软件具有多功能性、可扩展性,可用于模拟假设分析.

数据库管理系统

  • 基本概念:数据库是结构化数据的集合,数据库管理系统(DBMS)是管理这些数据的软件,其包含物理数据库、数据库引擎和数据库模式等组成部分.
  • 关系模型:关系模型是数据库管理中最常用的模型,以二维表形式组织数据,表由记录(对象)和字段(属性)构成,通过主键和外键维护数据完整性和关系.
  • 结构化查询语言(SQL):SQL是用于操作关系数据库的标准编程语言,包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)。例如,SELECT语句用于查询,INSERT、UPDATE、DELETE用于数据操纵,GRANT、REVOKE用于数据控制.
  • 实体-关系(ER)建模:ER图是描述数据库对象之间关系的工具,有助于数据库的设计和规划.

电子商务

探讨了电子商务的相关内容,包括其通过互联网进行购买和销售活动的特点,以及随着其流行,安全性变得越来越重要等.

大数据

介绍了大数据的概念和重要性,大数据指规模巨大、复杂度高,无法用传统数据库和电子表格处理的数据集,其面临存储、管理和分析大规模数据等挑战.

信息系统的道德问题

章节最后提到了信息系统可能涉及的道德问题,尤其是在政治和网络领域,提醒人们在使用和发展信息系统时要关注其可能带来的道德影响.
《C语言程序设计》第九章内容总结:

一、指针的概念

  • 指针是C语言中的一个重要特性,它存储的是变量的地址。可以理解为指针是指向内存中某个数据对象(如变量、数组元素等)的“指示器”。
  • 通过取地址运算符(&)可以获取一个变量的地址,然后将这个地址赋给相应类型的指针变量。

二、指针变量的定义与使用

  • 定义:指针变量的定义形式为“类型名 *指针变量名;”,例如“int *p;”就定义了一个指向整型数据的指针变量p。这里的类型名指定了指针所指向的数据的类型。
  • 赋值:可以通过取地址操作将变量地址赋给指针,如“int a; int *p = &a;”,此时p就指向了变量a。也可以将一个已有的指针值赋给另一个指针变量,但要确保类型匹配。
  • 解引用:通过解引用运算符()可以访问指针所指向的数据。例如,对于上述定义的p和a,“p = 10;”就相当于给变量a赋值为10。

三、指针与数组

  • 数组名本身就代表数组的首地址,所以数组名可以看作是一个指向数组首元素的指针。例如“int arr[5]; int *p = arr;”,这里p就指向了数组arr的首元素。
  • 可以通过指针来遍历数组元素,利用指针的算术运算(如指针加1、减1等)来指向下一个或上一个数组元素。例如“for(int *p = arr; p < arr + 5; p++) { printf("%d ", *p); }”就可以输出数组arr的所有元素。

四、指针与函数

  • 函数可以接受指针作为参数,这在很多情况下非常有用,比如当需要在函数中修改传入的变量的值时,通过传指针可以实现。例如:
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

这里的swap函数通过接受指向整型变量的指针,实现了两个整型变量值的交换。

  • 函数也可以返回指针,但要注意返回的指针所指向的内存区域应该是有效的,不能返回指向局部变量的指针(除非该局部变量所在的内存区域在函数返回后依然有效)。

五、指针的运算

  • 指针的算术运算:指针可以进行加、减整数的运算,其结果与指针所指向的数据类型有关。例如,对于指向整型数据的指针,加1实际上是在内存地址上加了 sizeof(int) 个字节。
  • 指针的关系运算:可以比较两个指针的大小关系,通常用于判断指针是否指向同一个数组中的不同元素,或者判断指针是否超出了某个数组的范围等。

六、多级指针

  • 多级指针就是指向指针的指针。例如“int **pp;”就是一个二级指针,它可以指向一个一级指针。二级指针通常在处理动态分配的多维数组等情况时会用到。

七、指针与字符串

  • 在C语言中,字符串实际上是以字符数组的形式存在的,并且以'\0'作为字符串的结束标志。
  • 可以用指针来指向字符串,通过指针的移动来遍历字符串中的字符。例如:
char str[] = "hello";
char *p = str;
while(*p!= '\0') {
    printf("%c", *p);
    p++;
}

就可以输出字符串“hello”。

总的来说,第九章围绕指针展开,阐述了指针的定义、使用、与数组、函数等方面的关联以及相关运算等内容,指针是C语言中较为复杂但又非常重要的一个知识点,掌握好它对于深入理解C语言程序设计和编写高效程序至关重要。

教材学习中的问题和解决过程(先问 AI)

在C语言中,指针和数组作为函数参数传递时有什么区别和注意事项?

  1. 传递方式的区别
    • 指针作为函数参数
      • 当指针作为函数参数传递时,传递的是变量的地址。例如:
        void func(int *p) {
            *p = 10;
        }
        int main() {
            int a = 5;
            int *ptr = &a;
            func(ptr);
            printf("%d", a); 
            // 输出为10,因为函数通过指针修改了a的值
            return 0;
        }
        
      • 函数内部可以通过解引用指针来访问和修改指针所指向的变量的值。
    • 数组作为函数参数
      • 数组作为函数参数传递时,实际上传递的是数组的首地址。在C语言中,数组名本身就代表数组的首地址。例如:
        void func(int arr[], int n) {
            for (int i = 0; i < n; i++) {
                arr[i] = i;
            }
        }
        int main() {
            int a[5];
            func(a, 5);
            for (int i = 0; i < 5; i++) {
                printf("%d ", a[i]);
            }
            return 0;
        }
        
      • 函数内部可以像操作普通数组一样操作传递进来的数组,但要注意数组的长度需要另外传递(在上面的例子中是通过参数n传递数组长度),因为数组作为参数时,不会传递数组的大小信息。
  2. 注意事项
    • 指针作为函数参数
      • 要确保传递给函数的指针是有效的,即指针已经初始化并且指向合法的内存区域。如果传递一个未初始化的指针或者野指针(指向不确定的内存区域的指针),可能会导致程序崩溃或者出现不可预测的行为。
      • 当在函数内部通过指针修改其所指向的变量的值时,要清楚这种修改会影响到函数外部的变量。例如,如果不想修改函数外部变量的值,应该在函数内部只读取指针所指向的变量的值,而避免解引用指针进行赋值操作。
    • 数组作为函数参数
      • 由于数组作为参数时不传递大小信息,所以一定要确保函数内部对数组的操作不会超出数组的实际范围。否则可能会导致缓冲区溢出等错误,这种错误可能会修改其他内存区域的数据,甚至导致程序崩溃。
      • 如果函数内部需要动态分配内存来存储数组元素,要注意内存泄漏的问题。例如,在函数内部使用malloc等函数分配内存,在函数结束后需要正确地释放这些内存(可以通过将指针返回给调用函数,由调用函数来释放,或者在函数内部进行释放,具体取决于程序设计的要求)。

基于AI的学习



posted @ 2024-12-01 08:28  孙梓桐  阅读(3)  评论(1编辑  收藏  举报