一:一维数组
【1】数组的定义:
//定义数组前 必须明确 有几个元素 每个元素类型啥? //需求:定义一个数组 有10个元素 每个元素为int类型 //数组定义步骤: //1、数组名 与[]结合是数组 (与*结合是指针 与()是函数) //2、将元素的个数 放入[]中 //3、用元素的类型 定义一个变量 //4、从上往下 整体替换int arr[10]; //数组分析步骤:
【2】数组元素的概述
void test01(){ //有10个元素 元素的下标从0开始 0~9 //arr[0] 第0个元素 ~arr[9]第9个元素int arr[10]; //arr数组名作为类型 代表的是数组的总大小 = 元素的个数 * 每个元素的大小 printf("sizeof(arr) = %d\n",sizeof(arr));//数组的总大小 printf("sizeof(arr[0]) = %d\n",sizeof(arr[0]));//第0个元素的大小 //数组的个数 = 数组的总大小 / 元素的大小 int n = sizeof(arr)/sizeof(arr[0]);//元素的个数 //数值数组 不能整体操作 只能逐个元素操作 for (int i = 0; i < n; i++){ //{}里面定义的数组为局部数组 不初始化 内容为随机 printf("第%d个元素为%d\n", i, arr[i]); } }
【3】数组初始化
【4】数组元素的读写操作
案例一
定义是个int元素的数组 初始化为0 获取键盘输入 并遍历数组
void test04() {int arr[10] = {0}; int n = sizeof(arr)/sizeof(arr[0]); //获取输入 printf("请输入%d个元素\n", n); for (int i = 0; i < n; i++){scanf("%d", &arr[i]);} //遍历for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); }
案例二:
定义十个int元素的数组 初始化为0 获取键盘输入 并对数组逆置
void test04() {int arr[10] = {0}; int n = sizeof(arr)/sizeof(arr[0]); //获取输入 printf("请输入%d个元素\n", n); for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } //数组元素颠倒 for (int i = 0, j = n-1; i < j; i++,j--) { int tmp = 0; tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } //遍历 for (int i = 0; i < n; i++){ printf("%d ", arr[i]); } printf("\n"); }
二:二维数组
【1】遍历二维数组
void test06() { int arr[3][4]; int row = sizeof(arr)/sizeof(arr[0]); int col = sizeof(arr[0])/sizeof(arr[0][0]); //遍历二维数组//循环嵌套循环 先写内层循环(将外层固定) for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%d ", arr[i][j]); } printf("\n"); } }
【2】二维数组初始化
void test07() { //分段初始化 int arr[3][4]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; int row = sizeof(arr)/sizeof(arr[0]); int col = sizeof(arr[0])/sizeof(arr[0][0]); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%d ", arr[i][j]); } printf("\n"); } //连续初始化 int arr2[3][4]={1,2,3,4,5,6,7,8,9,10,11,12 }; row = sizeof(arr2)/sizeof(arr2[0]); col = sizeof(arr2[0])/sizeof(arr2[0][0]); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%d ", arr2[i][j]); } printf("\n"); } //综合案例: int arr3[3][4] = {{1,2},{3},{4,5}}; int arr4[3][4] = {1,2,3,4,5}; printf("%d\n",arr3[1][2]+arr4[1][2]);}
【3】二维数组的读写操作
三:字符数组
void test01() { //需求:定义一个数组 32个元素 每个元素为char 这就是字符数组 //arr作为类型 代表的是数组的总大小 //数组名作为地址 代表的是 数组的首元素地址char arr[32] = ""; //获取键盘输入 %s和scanf结合时候 遇到空格 回车 结束输入printf("请输入一个字符串:");scanf("%s", arr); printf("arr=%s\n",arr); //如果想获取带空格的字符串fgets //fgets(存放的位置, 获取字符长度的上限, 从哪儿获取字符串); char str[32]=""; fgets(str, sizeof(str), stdin);//stdin标准输入设备(键盘) printf("str = ##%s##\n", str); }
四:二维的字符数组