《C课件7再谈数组》由会员分享,可在线阅读,更多相关《C课件7再谈数组(12页珍藏版)》请在金锄头文库上搜索。
1、C语言中级培训,七、再谈数组,数组的概念,是一种初级形式的数据结构。,数组的特点,无名; 连续; 有序; 等大小; 个数固定;,数组的本质,int A10; Ai=32;/此句说明了什么? 充分使用了特点:首址 + 偏移量 是对元素进行访问的手段,但不是唯一的手段。,多维数组的概念,应用了嵌套原理的一位数组。,可以断言: 在C语言中压根就没有多维数组!,. .,一维数组A9,一维数组A2,一维数组A1,一维数组A0,. .,int A105 ;,A0,A1,A2,A9,. .,二维数组的存储模式:,C语言只能处理一维的数组. 对二维数组,C语言进行了“降维”处理。即将二维数组视为一个特殊的一维
2、数组,它的每个元素都是个一维数组。这个数组和内嵌的一维数组依然满足一维数组的一切特点(无名,连续,等大小)。 也就是说,充当数组元素的内嵌一维数组是一种特殊的大元素,C 语言把它视为一种特殊类型来处理。从而解决了多维的难题。,二维数组的三种视角:,若有 int a53; : 可视为一个二维数组; 可视为由五个大元素组成的一维数组,每个元素的类型是 int3 型,称之为“一维数组类型”; 还可视为纯粹由15个整型元素组成的一维数组; 三种不同的视角,提供了不同的访问方法 。 但无论看作什么形式,它们在内存中的存储形式是一样的。,画出二维数组的内存使用示意图。,二维数组的内存,“打印杨辉三角形”
3、是一道综合应用数组基本知识的典型例题。,分析:杨辉三角形特点是每个元素都等于它正上方与左上方数之和,于是可以计算出除第一列第一行外的所有元素。如何设置第一列成为本题关键。利用二维数组可以对部分元素赋值的性质,对数组初始化:,1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0,1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 : : : : : :,打印杨辉三角形(打印10行),即 int a 1010=1,1,1,1,1,1,1,1,1,1 ; 这样就可以得到 第一列全1,其余全0的二维数组。,字符数组应用,例 输入一行字符,统计其中单
4、词个数。 分析:首先要定义一个数组把一行字符装进去;再利用计数器对单词的个数计数。关键是什么时候开始计数。扫描该数组,若当前字符非空格,前一个字符也非空格,表示一个单词还没读完;若当前字符空格,前一个字符也是空格,表示一个单词还没开始;一个新单词的开始应该是当前字符非空格而前一个字符为空格,此时应该计数;一个单词读完时,不要重复计数。,I am a student.0,#include #include void main() char string81; int i,num=0; gets(string); for (i = 0;string i != 0;i+) if (isalpha(string i ) ,