数组(……)

目录​​​​​​​

一.数组是什么?

二.数组的性质:

一维数组

       下标

二维数组


一.数组是什么?

数组是一组有序数据的集合。数组中各数据的排列是有一定规律的,下标,表示数据在数组中的序号。

a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]

二.数组的性质:

  1. 数组中的每一个都属于同一个数据类型。不能把同一个类型的数据放在同一个数组中。

例:int a[10];不能把浮点数据和整型数据同时放在数组a中。

a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
2.0355.167.81820454960
3567124045607886

      2.用一个数组名和下标来唯一确定数组中的元素。

例:a[8]表示下标为8元素的值

a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
23467915467892

一维数组

  1. 常量表达式指明数组中元素的个数,必须大于0.

例:int a[0];     错误

      2.数组名后是用方括号而不是圆括号

例: int b[8];    错误

      错误示范 :

                         int n;                                              int n=10,a[n];

                        scanf(“%d”,&n);

                        {int a[n];……}

       3.在数组定义时为数组元素赋初值称为数组初始化

  •    在定义数组时对数组元素赋以初值

例:int a[10]={2,3,4,6,7,8,18,46,56,78};

  • 可以只给一部分元素赋值,其他按零来处理

例:int a[10]={0,1,2,3,4};      表示只给前五个元素赋值,后五个元素值为0

  • 对全部数组元素赋初值时,可以不指定数组长度

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

也可以写成int a[]={1,2,3,4,5};

  • 一维数组赋初值的个数不能超过数组总元素的个数

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

注:C语言规定,只能引用单个数组元素,不能一次性引用整个数组

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

       下标

     1.下标是指在数组中第几个元素

例:a[3]就是数组中序号为3的元素,它和简单变量地位和作用相似

     2.下标可以是整型变量、整形常量、整型表达式

例:a[4]=a[0]+a[i+1];

     3.下标的值是数组元素序号,从零开始,到n-1结束

例:int a[10];说明数组a由10个元素,分别为a[0],a[1]……a[9]

     注:数组定义时有类型说明符

           可以对数组中任何一个元素进行单独输入输出,某个元素等同于一个普通变量

           数组的引用离不开循环

           将数组的下标作为循环变量,通过循环,就可以对数组的所有元素逐个进行处理

一维数组的输入输出:采用单循环方式进行

数组的输入                                                            数组的输出

#include<stdio.h>                                                  #include<stdio.h>                                             

int main()                                                               int main()

{                                                                             {

int a[10];                                                                  int a[10];

int i;                                                                         int i;

for(i=0;i<10;i++)                                                      for(i=0;i<10;i++)

scanf("%d",&a[i]);                                                   printf("%d",a[i]

……                                                                        ……

return 0;                                                                  return 0;

}                                                                               }

例:

      储存学生成绩用实型数组 float score{30];

      储存一行文字用字符数组 char str[50];

      储存一个矩阵用实型数组 float a[10];

其中:score,str,a为数组名

           方括号内的数值为数组长度

           下标个数为数组维数

            数组成员称为数组元素

            数组元素的类型称为数组基类型

二维数组

       1.定义形式:

                          类型说明符 数组名[常量表达式1][常量表达式2];

       其中:常量表达式1为行数;常量表达式2位列数

         例: float a[3][4];,b[4][6];

      注:

  • 一对方括号内不能写两个下标

    例:float a[3,4]

  • 数组元素个数必须是常量表达式,不能使用变量

    例:int i=1;

           int j=2;

          int a[i][j];       错误

  • 用于定义数组长度的常量表达式必须为等于零的正整数

    例:int a[0][2];

     2.二维数组可被看做一种特殊的一维数组:它的元素又是一个一维数组

     例:float a[3][4];可以把a看做一个一维数组,它有3个元素:a[0],a[1],a[2],每个元素又是一个包括四个元素的一维数组:

a[0]——a[0][0]  a[0][1]  a[0][2]  a[0][3] 

a[1]——a[1][0]  a[1][1]  a[1][2]  a[1][3]

a[2]——a[2][0]  a[2][1]  a[2][2]  a[2][3]

    3.可以对部分元素赋初值

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

         1     0    0    0

         2     0    0    0

         3     0    0    0

       也可以对各行中的某一个元素赋初值

   例:int a[3][4]={{1},{0,6},{0,0,0,9}}; 

           1    0    0    0

           0    6    0    0

           0    0    0    9

       4.如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。

例:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

等价于:int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

在定义时也可以只对部分元素赋初值二省略第一维的长度,但应分行赋初值

例:int a[][4]={{0,0,3},{1},{0,10}};

        5.二维数组元素引用与一维数组元素引用一样,也要采用下标法:

  • 引用形式:数组名[下标1][下标2]
  • 下标1和下标2可以是整型常量、整型变量和整型表达式。其编号从0开始
  • 下标不要越界

int  a[2*4][3*3],i=10;

则使用a[4][0],a[2][i-2]都是合法的

 二维数组的输入输出:采用双循环方式进行

数组的输入                                                           数组的输出

#include<stdio.h>                                                #include<stdio.h>

int main()                                                             int main()

{                                                                           {

int a[2][3];                                                              int a[2][3];

int i;                                                                       int i;

int j;                                                                       int j;

for(i=0;i<2;i++)                                                      for(i=0;i<2;i++)

   {  for(j=0;j<3;j++)                                                  {   for(j=0;j<3;j++)

           {                                                                              {

            scanf("%d",&a[i][j]);                                              printf(“%5d",a[i][j]);

            ……                                                                             ……

            }                                                                                }

    }                                                                                  }

……                                                                      ……

return 0;                                                             return 0;

}                                                                           }

例:将一个矩阵a的行和列的元素互换(即行列转置)存到另一个矩阵b中

 分析:a[i][j]=b[j][i];即可以完成转换(一般采用双重循环

#include<stdio.h>
int main()
{
	int a[2][3]={{1,2,3,},{4,5,6}};
	int b[3][2];
	int i,j;
	printf("请输入a:\n");
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			printf("%5d",a[i][j]);
			b[j][i]=a[i][j];
		}
	 printf("\n");
	
     }
	printf("请输入b:\n");
	for(i=0;i<3;i++)
	{
		for(j=0;j<2;j++)
		{
			printf("%5d",b[i][j]);
		
		}
		printf("\n");
		
	}
	
	
	
	
	
	
	
	
	
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值