赞
踩
如何创建二维数组
- //NO.1 如何创建二维数组,固定语法: 类型 数组名[数组长度1][数组长度2];
- int array[2][2];
数组长度1:2 → 行
数组长度2:2 → 列
总元素个数:数组长度1 × 数组长度2==行 × 列
最大下标是:数组名[ 数组长度1 - 1 ][ 数组长度2 - 1 ] 最大下标是array[1][1] 不可能是array[2][2]
在内存上的长相:在内存中是一段连续的内存,可以人为地让它有行有列
数组的初始化
数组的遍历 → for循环遍历
- //No.1 完整初始化->有几个元素赋几个值
- int array1[2][2]={1,2,3,4};
- //No.2 默认初始化->缺省初始化 不做初始化其他元素默认为0
- int array2[2][2]={1,2};
- //No.3 带{}默认初始化 ,一个{}代表一行
- int array3[3][4]={{1},{2},{3}}; //第一行第一个元素:1[其他值默认为0],第二个第一个元素:2,第三行第一个元素:3
- //No.4 数据完整初始化,数组长度1可以不写
- int array[][3]={1,2,3,4,5,6,7,8,9}; //自动推导数组长度1是:3
- #include <stdio.h>
- int main()
- {
- int array[3][4] =
- {
- 1,2,3,4,
- 5,6,7,8,
- 9,10,11,12
- };
- //先遍历行再遍历列
- for (int i = 0; i < 3; i++)
- {
- for (int j = 0; j < 4; j++)
- {
- printf("array[%d][%d]=%d\t", i, j, array[i][j]);
- }
- printf("\n"); //形成行列关键点->二维数组没有行和列之说 列完成的时候换一下行 形成行和列
- }
- printf("请输入二维数组中的值:\n");
- //用for循环嵌套来做输入
- for (int i = 0; i < 3; i++)
- {
- for (int j = 0; j < 4; j++)
- {
- scanf_s("%d", &array[i][j]);
- }
- }
- printf("你输入的数组是:\n");
- for (int i = 0; i < 3; i++)
- {
- for (int j = 0; j < 4; j++)
- {
- printf("array[%d][%d]=%d\t", i, j, array[i][j]);
- }
- printf("\n"); //形成行列关键点
- }
- //scanf 不能接受空格的字符串输入
- //gets 接受字符的空格输入
- return 0;
- }
-
- /*输出*/
-
- array[0][0]=1 array[0][1]=2 array[0][2]=3 array[0][3]=4
- array[1][0]=5 array[1][1]=6 array[1][2]=7 array[1][3]=8
- array[2][0]=9 array[2][1]=10 array[2][2]=11 array[2][3]=12
- 请输入二维数组中的值:
- 1 2 4 5
- 43 3 21 1
- 43 3 23 42
- 你输入的数组是:
- array[0][0]=1 array[0][1]=2 array[0][2]=4 array[0][3]=5
- array[1][0]=43 array[1][1]=3 array[1][2]=21 array[1][3]=1
- array[2][0]=43 array[2][1]=3 array[2][2]=23 array[2][3]=42

二维数组的基本操作
行列数据的操作(excel表数据操作)
行求和
列求和
二维数组充当地图
矩阵变化
- #include <stdio.h>
- int main()
- {
- int array[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
- int rowSum[3] = { 0 }; //有3行的结果
- int colSum[4] = { 0 }; //有4列的结果
- //求一行的和
- for (int i = 0; i < 3; i++) //所有的i相同就是一行
- {
- for (int j = 0; j < 4; j++)
- {
- rowSum[i] += array[i][j];
- }
- }
- //求一列的和
- for (int j = 0; j < 4; j++) //j相同 先遍历列就可以求一列的和
- {
- for (int i = 0; i < 3; i++)
- {
- colSum[j] += array[i][j];
- }
- }
- //特定数字表示特定含义
- int map[8][8] =
- {
- 1,1,1,1,1,1,1,1,
- 1,0,1,1,1,0,1,1,
- 1,0,1,1,1,0,1,1,
- 1,0,1,1,1,0,1,1,
- 1,0,0,0,0,0,1,1,
- 1,1,1,0,1,1,1,1,
- 1,1,1,0,1,1,1,1,
- 1,1,1,1,1,1,1,1
- };
- for (int i = 0; i < 8; i++)
- {
- for (int j = 0; j < 8; j++)
- {
- switch (map[i][j])
- {
- case 0: //if(map[i][j]==0)
- printf("★"); //一个汉字字符占用两个位置
- break;
- case 1: //if(map[i][j]==1)
- printf(" "); //要打印两个空格才能对齐
- break;
- }
- }
- printf("\n");
- }
- return 0;
- }
-
- /*输出*/
-
- ★ ★
- ★ ★
- ★ ★
- ★★★★★
- ★
- ★

/*
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
//魔方矩阵
4 9 2
3 5 7
8 1 6
//线性代数
//矩阵的乘法. . .
//矩阵的加法. . .
*/
二维数组操作字符串→ 二维数组可以形成行、列特性,一维数组可以存一个字符串,二维数组可以存多个字符串→ 一行存一个字符串
初始化→ 一个{ }就是一行,没有数据的列默认为 ' \0 '
遍历
多个字符串排序
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- //No.1 二维字符数组一般是用来存储多个字符串->4行20列 一行存一个字符串
- char str[4][20] = { {"1.ILoveyou"},{"2.IMissyou"},{"2.我想吃饭"}, {"4.我想睡觉"} }; //注意列不要超过了
- //可以用两个下标的方式访问 和数字类的二维数组一样的使用方式 很少这样去用
- //No.3 字符串排序->冒泡排序->从小到大排序
- char temp[20] = { "" }; //一行存一个字符串|做交换要准备一行出来
- for (int i = 0; i < 4; i++)
- {
- for (int j = 0; j < 4 - 1 - i; j++)
- {
- if (strcmp(str[j],str[j+1])>0) //字符串比较也不能直接比较必须要用strcmp
- {
- //注意点:字符串不能用赋值的方式使用,拷贝操作必须用strcpy
- strcpy_s(temp, 20, str[j]);
- strcpy_s(str[j], 20, str[j + 1]);
- strcpy_s(str[j + 1], 20, temp);
- }
- }
- }
- printf("%c\n", str[0][0]); //打印其中的某一个字符
- printf("%c\n", str[0][1]);
- printf("%c\n", str[0][2]);
- printf("%c\n", str[0][3]);
- //No.2 数组名[下标]:表示每一行的首地址
- for (int i = 0; i < 4; i++)
- {
- puts(str[i]); //操作字符串用一个下标即可,操作数字类的必须是两个下标
- }
- printf("请输入四个字符串:"); //让用户输入字符串
- for (int i = 0; i < 4; i++)
- {
- scanf_s("%s", str[i], 20); //str[i]代表的就是每一行的首地址->已经是地址了,所以不需要取地址
- }
- for (int i = 0; i < 4; i++)
- {
- printf("%s\n", str[i]);
- }
- return 0;
- }
-
- /*输出*/
-
- 1
- .
- I
- L
- 1.ILoveyou
- 2.IMiss
- 2.我想吃饭
- 4.我想睡觉
- 请输入四个字符串:hhaha
- enter
- tab
- ctrl
- hhaha
- enter
- tab
- ctrl

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。