【C语言】入门数组案例

67 阅读3分钟

数组板板书

1.数组的概念

2.一维数组的创建和初始化

创建基本语法:

 type arr_name[常量值]

例:储存班级20人的数学成绩,创建数组math

 int math[20];

根据需要创建其他类型和大小的数组:

 double  score[10];

数组初始化

 //完全初始化
 int arr1[5]={1,2,3,4,5,};
 //不完全初始化:第一个元素初始化为1,剩余元素默认初始化为0
 int arr2[3]={1,2};
 //错误初始化:初始化项太多。
 int arr3[3]={1,2,3,4,5};

数组的类型

int arr1[10]; 类型是 int [10]

char ch[5];类型是 char [5]

3.一维数组的使用

数组下标

假设一组数组有n个元素,那最后一个元素的下标是n-1,下标相当于数组元素的编号

下标引用操作符 ====> : [ ]

数组元素打印

数组的输入

4.一维数组在内存中的存储

 #include <stdio.h>
 int main(){
 int arr[10]= {1,2,3,4,5,6,7,8,9,10};
 int i=0;
 for (i=0; i<10; i++)
 {
 printf("&arr[%d] = %p\n ",i,&arr[i]);
 }
 return 0;
 }

sizeof计算数组元素个数

sizeof 是C语言中的一个关键字,可以计算类型或者变量大小,也可以计算数组大小。

  • 计算数组大小
 #include <stdio.h>
 ​
 int main()
 {
     int arr[10]={0};
     printf("%d\n",sizeof(arr));
 return0;
 }
 #include <stdio.h>
 ​
 int main()
 {
     int arr[10] = { 0 };
     int sz = sizeof(arr) / sizeof(arr[0]);//计算元素的大小,单位是字节 
     printf("%d\n", sz);
     return 0;
 }
  • 计算数组的元素个数:
 #include <stdio.h>
 ​
 int main()
 {
     int arr[10] = { 0 };
     int sz = sizeof(arr) / sizeof(arr[0]);
  //表示数组中有10个元素
     printf("%d\n 看不懂看注释", sz);
     return 0;
 ​
 }
 ​

二维数组的创建

  • 二维数组的概念

    我们把一维数组作为数组的元素,此时就是二维数组

  • 二位数组的创建

type arr_name[常量1][常量2];

例如:

int arr[3][5];
double data[2][8];

解释:

3表示数组有3行

5表示每一行有五个元素

int 表示数组的每个元素是整数类型

arr是数组名,可根据自己的需要指定名字。

data数组意思基本一致

07二维数组的初始化

不完全初始化

int arr1[3][5]={1,2};
int arr2[3][5]={0};

完全初始化

int arr3[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};

按照行初始化

int arr4[3][5] = {{1,2},{3,4},{5,6}};

初始化时省略行,但是不能省略列

 int arr5[][5]={1,2,3};
 int arr6[][5]={1,2,3,4,5,6,7};
 int arr7[][5]={{1,2},{3,4},{5,6}};

08二维数组的使用

二维数组下标:根据行业列定位一个元素

 #include <stdio.h>
     
     int main()
 {
     int arr[3][5]={1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
     printf("%d\n",arr[2][4]);
     return 0;
 }

二维数组的输入输出

已知如何访问二维数组单个元素,如何访问整个二维数组

 #include <stdio.h>
 ​
 int main()
 {
     int arr[3][5]={1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
     int i=0;//遍历行
     //输入
     for(i=0;i<3;i++)//产生列号
     {
        scanf("%d",&arr[i][j]);//输入数据
     }
 }
 //输出
 for(i=0;i<3;i++)//产生行号
 {
     int j=0;
     for(j=0;j<5;j++)//产生列号
     {
         printf("%d ",arr[i][j]);//输出数据
     }
     printf("\n");
     }
     return 0;
 }