一般二维数组用来制作地图较多在内存上的长相
如何创建二维数组
//NO.1 如何创建二维数组,固定语法: //类型 数组名[数组长度1][数组长度2]; int array[2][2]; //数组长度1: 2-->行 //数组长度2: 2-->列 //总元素个数:数组长度1*数组长度2 //最大下标是: 数组名[数组长度1-1][数组长度2-1] array[1][1]
二维数组的初始化
//No.1 完整初始化
int array[2][2]={1,2,3,4};
//No.2 默认初始化
int array2[2][2]={1,2};
//No.3 第一行两个元素:1,2;第二行两个元素:3,4;
int array3[2][2]={{1,2},{3,4}};
//No.4 带{}默认初始化 ,一个{}代表一行
int array4[3][4]={{1},{2},{3}}; //第一行第一个元素:1,第二个第一个元素:2,第三行第一个元素:3
//No.5 数据完整初始化,数组长度1可以不写
int array5[][3]={1,2,3,4,5,6,7,8,9}; //自动推导数组长度1是:3
二维数组的基本操作
行列数据的操作(excel表数据操作)
行求和列求和 二维数组充当地图矩阵变化 二维数组操作字符串初始化
//No.6 字符串初始化 其中2为字符串个数,10为字符串最大长度+1,字符串以‘ ’结尾
char c[2][10]={{"hellow"},{"mess"}};
遍历多个字符串排序
#include#include int main() { char name[5][10]={{""}}; int num[5][4]={0}; printf("请输入:n姓名 语文 数学 英语n"); for (int i = 0; i < 4; i++) { //在二维数组中用一个下标表示每一行的首地址 //输入姓名 scanf_s("%s", name[i], 10); //输入三个分数 for (int j = 0; j < 3; j++) { scanf_s("%d", &num[i][j]); } } //行求和 for (int i = 0; i < 4; i++) //求个人总分 { int sum = 0; for (int j = 0; j < 3; j++) { sum += num[i][j]; } num[i][3] = sum; } //列求和 for (int i = 0; i < 4; i++) 求学科总分 { int sum = 0; for (int j = 0; j < 4; j++) { sum += num[j][i]; } num[4][i] = sum; } //冒泡排序 for (int i = 0; i < 4; i++) { for (int j = 0; j < 4 - i; j++) { if (num[j][3] > num[j + 1][3]) { { //字符串排序 char temp[10]; strcpy_s(temp, 10, name[j]); strcpy_s(name[j], 10, name[j + 1]); strcpy_s(name[j + 1], 10, temp); } { //数据排序 for (int k = 0; k < 4; k++) { int temp = num[j][k]; num[j][k] = num[j + 1][k]; num[j + 1][k] = temp; } } } } } //打印 printf("n姓名tt语文t数学t英语t个人总分n"); for (int i = 0; i < 5; i++) { if (i == 4) { printf("学科总分t"); } else { printf("%stt", name[i]); } for (int j = 0; j < 4; j++) { printf("%dt", num[i][j]); } printf("n"); } return 0; }



