03_数组及应用

一、数组的概念

    数组是一组数目固定、类型相同的数据项,数组中的数据称为元素。

二、数组的定义

    int num[10];

int表示数组里元素的类型;

num是数组的名字;

[]表示数组的维数,[]表示一维,[][]表示二维

10表示数组元素的个数;

三、数组的特性

    数组里所有的元素都用一个变量名来访问;

    用数组的索引值来区分不同元素

    数组的索引值是从0开始的; num[10]的下标是0~9;// num[0],num[1],...num[9]

四、数组的应用

  学生期末考试成绩统计,要求计算出全班学生的平均成绩;(假设学生人数为10人)

 

#include <stdio.h>

int main(void)

{
         int i[100];//分别表示个学生
         int j;
         int num=0;

         for (j=0;j<=9;j++)

         {
                  scanf("%d",&i[j]);
                  num=num+i[j];
         }

    printf("平均成绩为%f \n",num/10.0);
    getchar();
    return 0;
}
View Code
10
20
30
40
50
60
5
65
6
556
平均成绩为84.200000
请按任意键继续. . .
View Code
#include <stdio.h>

int main(void)

{
         int i[20];//分别表示个学生
         int j;
         int num=0;
         for (j=0;j<20;j++)

         {
                  scanf("%d",&i[j]);
                  num=num+i[j];
         }

         printf("平均成绩为%f \n",num/20.0);
         getchar();
         return 0;

}
View Code

 

 

五、多维数组的定义

     float  aj[3][4];    //二维数组 3*4

     int   af[2][3][4];  //三维数组 2*3*4 //af[2-1][3-1][4-1]

    

六、多维数组的赋初值(数组的初始化)

 #include <stdio.h>

int main(void)

{   
    int j[]={3,3}; //j[0],j[1]
    int jj[2][3]= //2*3=6 个int类型元素
     {
        1,2,3,4,5,6
     };

         int jjj[2][3][4]= //赋值的个数=2*3*4=24个

         {                  
              {1, 2, 3, 4,
              5, 6, 7, 8,
              9,10,11,12} ,
              13,14,15,16,
              17,18,19,20,
              21,22,23,24                 
         };

 

//-----------------------------------------------------------------------------------------

        int j[3]={1,2,3};

         int jj[2][3]=

         {
                  1,2,3,
                  4,5,6
         };

         int jjj[2][3][4]=

         {
                  {
                  1, 2, 3, 4,
                  5, 6, 7, 8,
                  9,10,11,12
                  },

                  {
                  13,14,15,16,
                  17,18,19,20,
                  21,22,23,24
                  }
         };
    
        return 0;   
}      
View Code
jjj[0][0][0]=1  jjj[0][0][1]=2  jjj[0][0][2]=3  jjj[0][0][3]=4
jjj[0][1][0]=5  jjj[0][1][1]=6  jjj[0][1][2]=7  jjj[0][1][3]=8
jjj[0][2][0]=9  jjj[0][2][1]=10  jjj[0][2][2]=11  jjj[0][2][3]=12
jjj[1][0][0]=13  jjj[1][0][1]=14  jjj[1][0][2]=15  jjj[1][0][3]=16
jjj[1][1][0]=17  jjj[1][1][1]=18  jjj[1][1][2]=19  jjj[1][1][3]=20
jjj[1][2][0]=21  jjj[1][2][1]=22  jjj[1][2][2]=23  jjj[1][2][3]=24
View Code

 

七、多维数组的遍历

 

#include <stdio.h>

int main(void)

{
         int i1,i2,i3;
         int j[]={3,3}; //j[0],j[1]
         int jj[2][3]= //2*3=6 个int类型元素

         {
                  1,2,3,
                  4,5,6
         };

         int jjj[2][3][4]= //赋值的个数=2*3*4=24个

         {
                  {
                  1, 2, 3, 4,
                  5, 6, 7, 8,
                  9,10,11,12
                  },
                  {
                  13,14,15,16,
                  17,18,19,20,
                  21,22,23,24                 
                  }
         };
         for (i3=0;i3<2;i3++)
         for (i2=0;i2<3;i2++)
         {
                  for (i1=0;i1<4;i1++)

                  {
                           printf("jjj[%d][%d][%d]=%d  ",i3,i2,i1,jjj[i3][i2][i1]);
                  }
                  printf("\n");
         }
         getchar();
         return 0;

}
View Code
jjj[0][0][0]=1  jjj[0][0][1]=2  jjj[0][0][2]=3  jjj[0][0][3]=4
jjj[0][1][0]=5  jjj[0][1][1]=6  jjj[0][1][2]=7  jjj[0][1][3]=8
jjj[0][2][0]=9  jjj[0][2][1]=10  jjj[0][2][2]=11  jjj[0][2][3]=12
jjj[1][0][0]=13  jjj[1][0][1]=14  jjj[1][0][2]=15  jjj[1][0][3]=16
jjj[1][1][0]=17  jjj[1][1][1]=18  jjj[1][1][2]=19  jjj[1][1][3]=20
jjj[1][2][0]=21  jjj[1][2][1]=22  jjj[1][2][2]=23  jjj[1][2][3]=24
View Code

 八、二维数组的行列转换

#include <stdio.h>
#define N 4

int main(void)
{
  int a[N][N] = {{21, 12, 13, 24},
                   {25, 16, 47, 38},
                 {29, 11, 32, 54},
                 {42, 21, 33, 10}};
  int i, j, temp;

  //显示原数组
  printf("The array is:\n");
  for(i=0;i<N;i++)
    {
      for(j=0;j<N;j++)
        printf(" %d", a[i][j]);
      printf("\n");
    }
    
  //以下代码是对行列进行互换的核心代码。
  //主要思想是对从左上至右下以下的半个数组进行分析,找出全部可以进行对调的数
  //找出i、j和N之间的规律。
  for(i=1;i<N;i++)
    for(j=0;j<i;j++)
    {
      temp=a[i][j];
      a[i][j]=a[j][i];
      a[j][i]=temp;
    }

  //显示转制后数组
  printf("After twist the array is:\n");
  for(i=0;i<N;i++)
    {
      for(j=0;j<N;j++)
        printf(" %d", a[i][j]);
      printf("\n");
    }

  return 0;
  
}
View Code

 

posted @ 2020-05-13 22:22  岁月荏苒¥我心依旧  阅读(179)  评论(0编辑  收藏  举报