第三章数组运算基础
- 格式:ppt
- 大小:594.50 KB
- 文档页数:73
《C程数组教案》PPT课件第一章:数组概念1.1 数组的引入引入背景:为什么需要数组?数组的概念:数组是什么?如何理解数组?1.2 数组的基本操作数组的声明:如何声明一个数组?数组的初始化:如何初始化一个数组?数组的访问:如何访问数组中的元素?1.3 数组的内存表示数组的内存模型:数组在内存中是如何存储的?数组的大小:如何确定数组的大小?第二章:一维数组2.1 一维数组的应用应用场景:一维数组在实际编程中的应用场景有哪些?示例代码:如何使用一维数组实现排序、查找等功能?2.2 数组的边界判断越界问题:什么是数组越界?如何避免数组越界?边界判断的实现:如何判断数组是否越界?2.3 一维数组的排序与查找排序算法:如何对一维数组进行排序?查找算法:如何在一维数组中查找特定元素?第三章:多维数组3.1 多维数组的概念二维数组:什么是二维数组?如何理解二维数组?更高维数组:什么是三维数组?如何理解三维数组?3.2 多维数组的声明与访问声明方式:如何声明一个多维数组?访问方式:如何访问多维数组中的元素?3.3 多维数组的应用应用场景:多维数组在实际编程中的应用场景有哪些?示例代码:如何使用多维数组实现矩阵运算等功能?第四章:字符数组与字符串4.1 字符数组的概念字符数组的定义:什么是字符数组?如何理解字符数组?字符数组与字符串的关系:字符数组和字符串有什么联系和区别?4.2 字符数组的声明与初始化声明方式:如何声明一个字符数组?初始化方式:如何初始化一个字符数组?4.3 字符串的操作字符串的长度:如何获取字符串的长度?字符串的拷贝:如何复制一个字符串?字符串的连接:如何连接两个字符串?第五章:数组的排序与查找算法5.1 排序算法选择排序:什么是选择排序?如何实现选择排序?冒泡排序:什么是冒泡排序?如何实现冒泡排序?插入排序:什么是插入排序?如何实现插入排序?5.2 查找算法线性查找:什么是线性查找?如何实现线性查找?二分查找:什么是二分查找?如何实现二分查找?5.3 算法性能分析时间复杂度:如何分析排序和查找算法的时间复杂度?空间复杂度:如何分析排序和查找算法的空间复杂度?《C程数组教案》PPT课件第六章:数组的函数应用6.1 数组作为函数参数值传递:如何将数组作为值传递给函数?指针传递:如何将数组作为指针传递给函数?6.2 数组在函数中的操作函数对数组的修改:如何在函数中修改数组?函数返回数组:如何让函数返回一个数组?6.3 示例代码示例1:如何使用函数对数组进行排序?示例2:如何使用函数计算数组中元素的平方和?第七章:数组与指针7.1 数组与指针的关系数组名与指针的关系:数组名和指针有什么联系?指针数组:什么是指针数组?如何理解指针数组?7.2 指针操作数组指针访问数组元素:如何使用指针访问数组中的元素?指针遍历数组:如何使用指针遍历数组?7.3 指针与数组参数指针作为函数参数:如何将指针作为函数参数?指针数组作为函数参数:如何将指针数组作为函数参数?第八章:数组与动态内存分配8.1 动态内存分配的概念动态内存分配的意义:为什么需要动态内存分配?动态内存分配的方法:如何进行动态内存分配?8.2 动态数组的声明与使用动态数组的声明:如何声明一个动态数组?动态数组的释放:如何释放动态数组占用的内存?8.3 示例代码示例1:如何使用动态内存分配实现排序算法?示例2:如何使用动态内存分配实现链表结构?第九章:数组与多线程9.1 数组在多线程编程中的应用线程数组:如何在多线程程序中使用数组?线程安全:如何保证多线程访问数组时的线程安全?9.2 示例代码示例1:如何使用多线程计算数组中元素的平方和?示例2:如何使用多线程对数组进行排序?第十章:数组与文件操作10.1 数组与文件读写文件读取:如何使用数组读取文件内容?文件写入:如何使用数组向文件中写入数据?10.2 示例代码示例1:如何使用数组存储文件内容?示例2:如何使用数组实现文件的复制功能?重点和难点解析重点环节1:数组的概念和基本操作重点:理解数组的概念,掌握数组的声明、初始化以及访问方法。
第三章栈、队列和数组一、名词解释:1.栈、栈顶、栈底、栈顶元素、空栈2.顺序栈3.链栈4.递归5.队列、队尾、队头6.顺序队7.循环队8.队满9.链队10.随机存储结构11.特殊矩阵12.稀疏矩阵13.对称方阵14.上(下)三角矩阵二、填空题:1.栈修改的原则是_________或称________,因此,栈又称为________线性表。
在栈顶进行插入运算,被称为________或________,在栈顶进行删除运算,被称为________或________。
2.栈的基本运算至少应包括________、________、________、________、________五种。
3.对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产生“________”。
4.对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会发生“________”。
5.一般地,栈和线性表类似有两种实现方法,即________实现和________实现。
6.top=0表示________,此时作退栈运算,则产生“________”;top=sqstack_maxsize-1表示________,此时作进栈运算,则产生“________”。
7.以下运算实现在顺序栈上的初始化,请在________处用适当的句子予以填充。
int InitStack(SqStackTp *sq){ ________;return(1);}8.以下运算实现在顺序栈上的进栈,请在________处用适当的语句予以填充。
Int Push(SqStackTp *sq,DataType x){ if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);}else{________________:________________=x;return(1);}}9.以下运算实现在顺序栈上的退栈,请在________________用适当句子予以填充。
数组公式基础:数组运算在单元格输入普通公式,按Enter键或编辑栏左侧的“输入”按钮完成输入;而在单元格输入数组公式需要按Ctrl+Shift+Enter三键完成输入,所以数组公式也叫做CSE公式。
按Ctrl+Shift+Enter三键输入数组公式后,在编辑栏显示该公式用大括号“{}”括住。
不要直接输入这对大括号来代替按三键,那样输入的只是文本,不是公式。
数组公式通过把普通公式中的单值构建成数组,并按数组中元素的个数进行重复计算,称为数组运算。
如图,根据单价和数量,直接求总金额。
在C2输入“=SUM(A2:A3*B2:B3)”,然后按Ctrl+Shift+Enter三键,Excel就自动给公式加上“{}”,并计算出总金额340。
Excel是怎么计算出这个结果的?首先,分析公式中哪些部分要重复计算,或者说哪些部分由普通公式的单值变成了数组。
这里SUM函数的参数是一个乘法式子,在普通公式中乘法运算符前后都是一个单值,而现在都是一个区域引用,所以这个乘法式子要进行重复计算,就是要重复进行多次乘法运算。
然后,分析参与运算的数组的维度和大小,并据此确定该数组运算需要重复计算的次数,以及返回的数组的维度和大小。
这个乘法式子的两个操作数A2:A3和B2:B3都是一个单列两行的数组,各有两个元素。
于是我们可以确定:该乘法式子将重复计算两次,并返回一个单列两行的数组。
具体计算步骤如下:第一次计算取第一个数组的第一个元素A2,跟第二个数组的第一个元素B2相乘,得到的100作为返回数组的第一个元素;第二次计算取第一个数组的第二个元素A3,跟第二个数组的第二个元素B3相乘,得到的240作为返回数组的第二个元素。
乘法式子返回数组{100;240}。
(在编辑栏里,用鼠标拉黑公式中的“A2:A3*B2:B3”,然后按F9,可以看到该部分的计算结果。
)最后计算SUM({100;240})得到最终结果340。
如果输入公式后没有按Ctrl+Shift+Enter三键,而是直接按了回车,会是什么情况呢?在C2输入上述公式后直接按回车,结果返回100。
第3章数组及矩阵运算第三章数组与矩阵及其基本运算3.1 数组3.1.1数组与矩阵的输⼊1. 直接输⼊法对于规模较⼩的矩阵,可直接在MATLAB 命令窗输⼊,也可在程序编辑器中写⼊程序,矩阵元素值还可在变量浏览器修改。
矩阵所有元素包含在“[]”内,同⾏元素之间⽤“,”隔开,也可⽤空格,两⾏元素⽤“;”分开,矩阵元素可以是数值,也可以是表达式。
【例3-1】输⼊矩阵=987654321A 。
解:(1)在键盘上输⼊下列内容A = [1,2,3; 4,5,6; 7,8,9](2)按【Enter 】键,指令被执⾏,⼯作窗将显⽰以下结果:A =1 2 3 4 5 67 8 9也可输⼊:A = [1 2 3; 4 5 6; 7 8 9] %同⾏元素之间⽤空格或 A=[1 2 3;4 5 6; 7 8 9]【例3-2】已知B=2+3i ,输⼊矩阵??+=9872*6)5(4323/1B sqrt A 。
解:(1)在键盘上输⼊下列内容A = [1/3,2,3; 4,sqrt(5),6*B+2; 7,8,9](2)按【Enter 】键,指令被执⾏,⼯作窗将显⽰以下结果:A =0.3333 2.0000 3.00004.0000 2.2361 14.0000 +18.0000i 7.0000 8.0000 9.0000【例3-3】⽤下⾯三条指令创建⼆维数组C 。
解:(1)在键盘上输⼊下列内容a=sqrt(2); b=33^0.5;C=[1,1/a+i*b,b*sqrt(a);sin(pi/6),a+b,3+2i](2)按回车后得:C =1.0000 0.7071 + 5.7446i 6.8315 0.5000 7.1588 3.0000 +2.0000i复数矩阵的输⼊见例2-2、例2-3。
【例3-4】输⼊矩阵??++++++=i i ii i iCN 166155144133122111。
解:在键盘上输⼊下列内容后,按回车后得CN 矩阵。