计算机c语言程序设计h06数组上ppt培训课件

上传人:aa****6 文档编号:54553792 上传时间:2018-09-14 格式:PPT 页数:125 大小:1.19MB
返回 下载 相关 举报
计算机c语言程序设计h06数组上ppt培训课件_第1页
第1页 / 共125页
计算机c语言程序设计h06数组上ppt培训课件_第2页
第2页 / 共125页
计算机c语言程序设计h06数组上ppt培训课件_第3页
第3页 / 共125页
计算机c语言程序设计h06数组上ppt培训课件_第4页
第4页 / 共125页
计算机c语言程序设计h06数组上ppt培训课件_第5页
第5页 / 共125页
点击查看更多>>
资源描述

《计算机c语言程序设计h06数组上ppt培训课件》由会员分享,可在线阅读,更多相关《计算机c语言程序设计h06数组上ppt培训课件(125页珍藏版)》请在金锄头文库上搜索。

1、第六章 批量数据组织数组,整数排序数组 矩阵乘积多维数组 程序设计实例 带序号的排序数组初值 输出回文字字符串 类型定义,作业: 6.1 6.3 6.7 6.9 6.17 6.22 6.23 6.29 练习: 6.2 6.4 6.6 6.10 6.14 6.15 6.16 6.18 6.24,6.1 整数排序数组,【例6.1】编程序,从终端键盘输入100个整数,然后按从小到大的顺序输出。,输入,排序,输出,解决问题:数据保存和排序 排序 亦称“分类” 主元排序算法,排序思想 未排序 在a0、a1、. 、an-1中选一最小aj,aj与a0交换a0排好序 在a1、a2、. 、an-1中选一最小aj

2、,aj与a1交换 a0、a1排好序 在a2、a3、. 、an-1中选一最小aj,aj与a2交换 a0、a1 、a2排好序 . . . . . . . . . a0、a1 、a2、 an-3排好序 在an-2、an-1中选一个最小aj,把aj与an-2交换 a0、a1 、a2、 an-2排好序 a0、a1 、a2、 an-2 、an-1 自然排好序,排序结束,j=0,j=1,j=1,j=2,j=3,k=1-3,k=2,3,k=3,ak aj,a0 a1 a2 a3,i=0,i=1,i=2,排序思想 未排序 在a0、a1、. 、an-1中选一最小aj,aj与a0交换a0排好序 在a1、a2、. 、

3、an-1中选一最小aj,aj与a1交换 a0、a1排好序 在a2、a3、. 、an-1中选一最小aj,aj与a2交换 a0、a1 、a2排好序 . . . . . . . . . a0、a1 、a2、 an-3排好序 在an-2、an-1中选一个最小aj,把aj与an-2交换 a0、a1 、a2、 an-2排好序 a0、a1 、a2、 an-2 、an-1 自然排好序,排序结束,程序设计 第一层循环确定寻找最小元素的个数 循环次数 0n-2, 用i标识(排第几小的元素)for(i=0;in-1;i+) 若a0ai-1已经排好序,寻找第i个最小元素 第二层循环确定寻找第i个最小元素 aj是序列的

4、第i小的元素(aian-1中最小元素aj) 在aian-1找最小,j标识所找最小元素的下标设ai为最小, j=i, ak比较aj,令k:i+1n-1for(k=i+1;kn;k+) 若某个akaj jk 交换ai和aj的值 a0ai-1、ai 已经排好序,交换 ai 、aj,排第i个元素,在aian-1之间找最小元素aj,排序,数组:组织数据的一种方式,用来保存批量数据。 如:int a100; 使用数组保存100个整数,程序如下。 问题:能否用100个变量来保存数据。,#include “stdio.h” void main () int i,j,k,r ,a 100 ; /* 数组从0开始

5、编下标 */printf(“please input integer:n”); / 输入for ( i=0 ; i100 ; i+ ) scanf(“%d”, / 输出 ,#include “stdio.h” void main () int i,j,k,r ,a 100 ; /* 数组从0开始编下标 */. printf(“answer:n”); / 输出for ( i=0 ; i100 ; i+ )if ( i%10 = 0)printf(“n”); printf(“%6d”,ai ); ,运行结果演示,数组类型(array-type),一种数据结构 数组:是一个由若干同类型变量组成的集合

6、,即是有序数据的集合 例子 一句话 由 若干个 字符 组成的一个数组 一个向量 由 若干个 实数 组成的一个数组 一个矩阵 由 若干个 向量 组成的一个数组,构造型数据类型,构造型数据类型(structured-type) 指一个数据类型值域之内的一个值是由若干其它类型的值构成的 C中提供的3种构造数据类型 数组 结构 共用体 简单数据类型的特点: 类型值域内的每个值都是单值 一个值内不包含其他值,6.1.1 数组声明,一般形式T ide; T是类型说明符(基础类型,成分类型) id是要声明的数组(数组变量)的名字 e是常量表达式 它是要声明的数组的尺寸,也就是相应数组由多少个成分组成 ide

7、 称为数组声明符,例6.1的变量声明 int i,j,k,r ,a10; 声明了一个数组变量a 设:12,24,58,32,99,66,36,28,55,83 例 float b10;声明了一个数组变量b,例子 int m, n, v10; float vector 10000 ; int t110,t010,w10; float t22; bool t3 26 ; char t4 8 ;,#include “stdio.h” #define N 100 void main () int i,j,k,r ,a N ; /* 数组从0开始编下标 */printf(“please input in

8、teger:n”); / 输入for ( i=0 ; iN ; i+ ) scanf(“%d”, / 输出 ,#include “stdio.h” #define N 100 void main () int i,j,k,r ,a N ; /* 数组从0开始编下标 */. printf(“answer:n”); / 输出for ( i=0 ; i= 0 & 下标 = 长度-1 具体标明(访问)数组变量的某一个成分, 如:a3,6.1.2 下标表达式,例子 vector255 vector 的编号为 255 (第256个)的成分,为 float 型变量 v2+3 v 的编号为 5 (第6个)的成

9、分,为 int 型变量 t3i+j*k : 若 i+j*k落在025之内则是 t3 的编号为i+j*k (第i+j*k+1个)的成分,是一个 bool 型变量; 否则 i+j*k 落在 025之外,则引起错误t40 t4 的下标为 0 (第1个)的成分,为 char 型变量,下标表达式实际是一个变量。 它是相应数组成分类型的一个变量。 程序中,下标表达式的地位、作用与相应数组成分类型的一般变量的地位、作用完全相同。 即凡是可使用数组成分类型变量的地方都可以使用下标表达式,有时也称下标表达式为“下标变量”。 存储:数组在内存占用连续存储空间,数组名表示存储空间的首地址,即指针,12 24 58

10、32 99 66 36 28 55 83,a,a0 a1 a2 a2 a4 a5 a5 a7 a8 a9,6.1.3 需要注意的问题,运算 C 没有定义施于数组类型上的运算 数组类型的运算都是通过其成分实现 例子求整型数组t0 ,t1 的差送入整型数组 w 中,应如下:for ( m=0 ; m=9 ; m+)wm = t0m-t1m ;而不能写成w = t0-t1 ;, 数组变量不能作I/O函数的实在参数 不能整个读入或输出一个数组 例子读入一批数据送入数组 w 中,可以用如下方法实现: for ( m=0 ; m=9 ; m+)scanf(“%f“,6.2 矩阵乘积多维数组,【例6.3】编

11、一个函数,求两矩阵乘积。,解:设有矩阵 mp 、pn ,则其乘积矩阵 mn 的元素 ij 为,一行一行的求,求一行,求一个元素,问题:如何保存矩阵?使用两维数组可以解决该问题。用两维数组保存矩阵,程序如下。,#define m 10 #define n 20 #define p 30 float a m p , b p n , c m n ;void matrixproduct ( void ) float e ;int i , j , k ;for ( i=0 ; im ;i+ )for ( j=0 ; jn ; j+ ) e = 0 ;for ( k=0 ; kp ; k+ )e = e

12、+ aik * bkj ;cij = e ;,运行结果演示,二维数组声明符形式: T 标识符 常量表达式1 常量表达式2 例子 float a 34 ; 下标表达式形式数组变量 表达式1 表达式2 例子a 矩阵的第 3 行、第 4 列元素表示为a23 存储:连续存放,先行后列的顺序在内存中存放 注:可把二维数组看作特殊的一维数组,它的元素又是一 个一维数组 a0 a00 a01 a02 a03a a1 a10 a11 a12 a13a2 a20 a21 a22 a23即相当于: float a 04 , a 14 ,a 24 ;,多维数组声明符形式 数组标识符常量表达式1 . 常量表达式n 下

13、标表达式形式 数组变量 表达式1 表达式2 . 表达式k ,int x 5226; 声明 x 是一个3维数组。它的成分类型是int型 第一维5个成分 第二维2个成分 第三维26个成分 下标表达式 x013 是 x 的一个下标变量, 类型是int型。 按语法下标表达式中的表达式可写若干,则下标表达式 x01 类型是一个一维数组 x0 类型是一个二维数组,6.3 程序设计实例,打印杨辉三角 冒泡排序 逐步增加递增子序列排序 Gaoss 消去法 顺序检索 对半检索 栈 队列,例6-4 Gaoss 消去法解线性方程组,问题描述 * = ,Gaoss 消去法的步骤是:先把矩阵化成如下形式:,消去0n-2

14、列, 对于第 i 列消去 i 行下面的元素,消去 i+1n-1 行, 用j标识第几个方程,下边考虑消去aji 。根据线性方程组的性质,消去aji应该把第j个方程减去第i个方程的aji/aii倍。,in个元素都需要发生改变,用k来标识第几列的元素,从后往前依次迭代求解x n-10,用i标识,求xi 已知:xi+1,xn-1 需求:i+1n-1的和,用j标识,求xi时的条件是:xi+1 、xi+1 、. 、xn-1 已经求出;第i个方程是:aii*xi + aii+1*xi+1 + . + ain-1*xn-1 = ain所以该方程的解应该是:xi=( ain-( aii+1*xi+1 + . + ain-1*xn-1) )/aii,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号