计算机科学与技术专业是IT领域的一个重要分支,涵盖了广泛的理论和技术知识。对于山东专升本的学生来说,理解和掌握这些基础知识至关重要。以下是一些关键的知识点:
6. 排序算法:
- 冒泡排序:冒泡排序是一种简单的排序算法,通过重复遍历待排序的数组,依次比较相邻元素并根据需要交换位置来实现排序。外层循环控制遍历次数,内层循环用于比较和交换。具体实现中,外层循环从0到n-1,内层循环从0到n-1-i,确保所有元素都被比较一次。
- 选择排序:选择排序的工作原理是在每一轮中找到最小(或最大)的元素,然后将其放到正确的位置。外层循环用于控制每一轮的选择,内层循环用于寻找当前未排序部分的最小元素。在内循环结束后,将找到的最小元素与第一个未排序的元素交换。
7. 二维数组:
- 二维数组在内存中按照行优先的原则存储,这意味着按行读取数据效率更高。
- 初始化二维数组有五种常见方式,具体细节可参考教材P83页。
8. 字符数组与字符串:
- 字符数组通常用于存储字符串,字符串的结束标志是空字符`\0`。
- 定义字符数组时,可以使用字符串常量初始化,例如`char s[] = "sdkhg"`。
- `gets()`函数用于从键盘接收输入填充字符数组,`puts()`函数用于输出字符串。
- 定义字符数组时如果没有指定结束标志,如`char s[5]={'a', 'd', 'f', 'g', 'w'}`,则不是字符串,不能使用`puts()`输出,应使用`%c`格式逐个输出。
9. 字符串函数:
- `strcpy(s1, s2)`用于复制字符串s2到s1。
- `strcat(s1, s2)`将s2连接到s1的末尾。
- `strcmp(s1, s2)`比较s1和s2的大小,返回值决定它们的顺序。
- `strlen(s)`返回字符串s的长度。
- `strupr(s)`将字符串s转换为大写,`strlwr(s)`转换为小写。
10. 函数:
- 函数定义包括返回类型、函数名和参数列表,如`int func(int a, int y)`。未指定返回类型时,默认为`int`类型。
- 函数声明用于告知编译器函数的存在,可提前使用,但需要保持与定义的一致性。
- 函数调用时,实参和形参的数量、类型和顺序必须匹配。形参是临时的存储单元,仅在函数调用期间存在。
- 函数可以嵌套调用,但不能嵌套定义。
- 数组作为参数传递时,传递的是数组的首地址,如`void func(int a[], int n)`。
- 多维数组的参数传递如`void func(int a[][5], int n)`,第一维可以省略,但其他维度不能。
11. 变量的作用域和存储类别:
- 全局变量在整个源文件范围内有效,可以在任何函数中使用,但可能导致副作用。
- 局部变量只在定义它的函数或复合语句中有效,每次函数调用都会重新分配存储空间。
- 存储类别包括`auto`(默认的局部变量)、`static`(保持上一次调用的值)、`register`(尝试存储在寄存器中,但不保证成功)和`extern`(扩展全局变量的作用域)。
12. 预处理:
- 预处理指令以`#`开头,例如`#define`用于宏定义,`#include`用于包含其他文件。
- 宏替换会将源代码中的宏名替换为宏体,无参宏和有参宏需注意宏体的编写和使用,防止副作用。
这些知识点构成了计算机科学与技术专业课程的基础,学生需要熟练掌握,以便在后续的学习和实践中灵活运用。