码迷,mamicode.com
首页 > 编程语言 > 详细

C语言-->(九)数组

时间:2015-02-27 22:47:57      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

数组:

这里仅给出一些指导,具体的代码可以问度娘,因为你知道了它有这个方法,可以这样用,查一下就行了,就像查字典一样

1.需求:

 保存1个学生的身高?

保存10个学生的身高?

保存100个学生的身高?

         。。。。。 

2.什么是数组

1) 数据类型相同存储单元连续的数据的有序集合

2) 一个数组里集合了多个数据对象,这些数据对象被称为数组中的元素。数组中的每一个元素都属于同一种数据类型,它们用一个统一的数组名称和下标 (元素在数组中的位置)来唯一确定

3) 数组也是变量,前后变量之前存储单元连续。需要先定义后引用。

 

3.为什么需要数组

1)数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式

2)可以先简单的认为简化变量的声明操作

3)可以将声明数组当作同时声明了n个变量,并且这些变量都是在一个连续空间内

 

4.数组声明语法

数据类型 数组名[常量表达式];

1、数组是相同类型变量的集合声明

2、数组里面的每一个元素  下标进行引用 

3、

数据类型  数组名[表达式];

//表达式:表示数组的长度

        int  height[10];

上面定义了一个整型数组。

? 数组名称为height

? 数组中有10个整型变量

注意:下标问题,下标范围 c语言不检查下标越界

 【相关说明】:

1.“数据类型可以是任意的数据类型。  char long short int float double long long 

2.“数组名”必须是合法的标识符。 数字,字母  ,_不能以数字开头

3.“常量表达式 ”表示数组长度(即数组中的元素个数),

    一定要用方括号括起来,且里面不允许包含变量。

4. 一维数组中每个元素只有一个下标,并且第一个元素

      下标为 “0”,最后一个元素的下标为“数组长度减 1”。

       即:  0<=下标<=表达式-1

 

5.数组的引用

【相关说明】

1“下标表达式”的值必须是一个整型的常量   

2对于所引用的数组元素,使用方法和前面学过的简单数据类型变量使用方法相同,包括取地址 & 等 运算。

3>C语言没有语法结构能同时引用数组的所有元素,  只能一个一个的引用每一个数组元素。  (集合声明, 单个使用) 

 

6.数组的初始化

初始化:即赋初值。C语言允许定义数组时直接对数组进行初始化。

一般形式:

类型说明符   数组名[常量表达式] = {数值表};

 【相关说明】:

当花括号中的数值表中的数据个数少于数组定义中的 元素个数时,C语言将这些数据赋给数组的前几个元素,其余

数组元素自动被初始化为0。

思考1)既不写长度,也不初始化可以吗?

==========================

字符数组  

字符数组:不仅可以存储多个字符常量信息,还可以用来存字符串常量信息

如何表示一个学生姓名、家庭住址,身份证号码等信息?

1、字符串的基本概念及形式

2、字符串与字符数组的区别及字符串的长度计算

3、 字符串的存储方式

4、字符串的输入和输出

数组使用注意问题

1.下标越界,有可能会修改其他数据                  

2.数组声明大小必须为常量,声明后大小固定,不能再变  

3.sizeof可以求出整个数组占用内存的空间内存空间连续     

4.数组不可以直接相互赋值,应使用循环逐一赋值 集中声明,单个引用

5.如何输入带空格的字符串

6.数组内的所有元素内存空间连续

 

==========================

数组的常操作(增、删、查、改、逆序、排序)

1.增加数组元素基本操作

  eg:如何添加一个新加入的学生的身高信息

 

2.删除数组元素基本操作

eg:如何删除一个无效的学生的身高信息

 

3.查找数组中指定信息的基本操作 

  eg:如何找出最大和最小身高数据信息并确定该数据在数组中所对应的下标值               

 

4.数组中元素修改的基本操作

eg:将数组中第一个元素和最后一个元素交换

 

5.数组逆序

eg:(1)将数组所有元素逆序输出

(2)将数组所有元素逆序保存         

 

==========================

数组排序:

1.排序基础

需求:现在需要找到最小的数,并且将其和第一个元素交换

实现方式

  1)找到最小的元素

  2)和第一个元素进行交换

 练习:

     输入三个数15, 8 ,10 ,对数组进行相关操作后,最小的数排在最前面,最大数排在最后面。

 

2.选择排序    

1)排序原理

从所有元素中找出最小的一个,将其放在最前面,接着在余下的数中找出最小的一个放在第二位,依此类推,数列由前往后逐渐成型。

2)排序实现

1>需要多少个循环解决问题 2>如何比较

 

3.冒泡排序

  1)排序原理

对相邻两个数进行比较,将较小的 调到前面,两两比较一轮之后,最大的一个数被放置在最后面;

        接着从头开始重复执行以上操作,次大的数被放置在倒数第二位,依次类推,数列由后往前逐渐成型。

  2)排序实现

1>需要多少个循环解决问题 2>如何比较

 

 

==================

二维数组:

需求:

   (1)保存一个学生的五门成绩  

   float score[5];           

(2) 保存全班学生的五门成绩  70

  float score[70][5]

思考:

  (1)一维数组是否可以实现?

    (2)如果需要查找某个学生的成绩时是否容易查询?

 

1.二维数组声明语法

一维数组:   数据类型 数组名[表达式];

二维数组:   数据类型 数组名[表达式1][表达式2];                                                  

eg:声明一个可以保存全班学生成绩的语、数、英三门成绩的二维数组

float score[5][3]   定义一个二维数组保五个学生的三门成绩

  语     数    外

stu1   80     85   90     

stu2   90     85   93       

stu3   87    90    93       

stu4   80    92    87       

stu5   82    88    91      

  

2.二维数组的本质

   1)在c语言中并没有真正的二维数组(内存是一维的)

   2)二维数组可以理解为特殊的一维数组,即一个二维数组中每个元素均为一个一维数组

 3)思考:二维数组内存空间是否连续?

二维数组在内存中的存放,存放原则是 “按行存放”,即先存放第一行再依次存放第二行 ...

 

3.二维数组的引用

引用形式: 数组名[下标1][下标2]

   

4.二维数组的初始化

  方法1:直接赋初值。适用于数据较少时。

将数组元素的所有初始值都写在一个花括号内,由编译系统按照数组元素在内存中存放的顺序对各元素赋初值。

集中初始化:

 

二维数组初始

  

方法2:分行为二维数组赋值。适用于每一行的初始值个数少于每一行中的数组元素个数时。

部分初始化: //二维数组列下标不可以省略

  

【相关说明】:

二维数组的长度不能随意省略,必须遵守如下规则:

1)使用第一种方式,只有当为二维数组的所有元素赋初值时,所定义数组的第一维的长度才可以省略。系统根据初始化的数据个数和第2维的长度可以确定第一维的长度。

例如:

int  a[][2] = { 0, 1, 2, 3, 4, 5};

 

一般,省略第一维的定义时,第一维的大小按如下规则确定:

初值个数能被第二维整除,所得的商就是第一维的大小;若不能整除,则第一维的大小为商再加1。

例如,  int a[ ][3]={ 1,2,3,4};

等价于:int a[2][3]={ 1,2,3,4};

 

 

2)使用第二种方式,无论是为二维数组的所有元素赋初值,还是为二维数组的部分元素赋初值,定义数组时都可以省略第一维的长度。

 

3)无论采用上述哪一种方式为二维数组元素赋初值,在定义数组时第二维的长度都绝对不可以省略。

 

思考:使用一维数组的形式遍历二维数组可不可以?

 

4).

  1>如何访问二维数组中的一个元素

  2>如何访问二维数组中的所有元素

 

 

C语言-->(九)数组

标签:

原文地址:http://www.cnblogs.com/iOSteemo/p/4304457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!