C语言_二维数组
来源:互联网 发布:淘宝直通车助手软件 编辑:程序博客网 时间:2024/05/01 02:37
二维数组
二维数组的创建
类型修饰符数组名[包含几个小数组][每个小数组有多少个元素] = {初始值};
初始值如何写?可以写n个一维数组的初始值
int array[3][4] = {{1,2, 3, 4}, {5,6, 7, 8}, {9,10, 11, 12}};
一维数组可以省略元素个数,二维数组只能省略第一维
int array[][4] = {{1,2, 3, 4}, {5,6, 7, 8}, {9,10, 11, 12}};
第二种初始值写法
int array[3][4] = {1,2, 3, 4, 5, 6,7, 8, 9, 10, 11,12}; printf("%d",array[1][2]);
定义一个二维数组循环赋值
int array[3][4] = {0}; // 第一重循环, 遍历小数组 for (int i =0; i < 3; i++) { // 第二重循环, 遍历小数组的元素 for (int j =0; j < 4; j++) { // 给每个元素赋值, 随机范围是0 ~ 49 array[i][j] =arc4random() % 50; // 输出每个元素 printf("%2d ", array[i][j]); } //在这相当于是小数组遍历完毕, 添加换行符 printf("\n"); }
例一:将⼀个⼆维数组的行和列交换,存储到另外一个数组中去。
int array[3][4] = {0}; //第一重循环, 遍历小数组 for (int i =0; i < 3; i++) { // 第二重循环, 遍历小数组的元素 for (int j =0; j < 4; j++) { // 给每个元素赋值, 随机范围是0 ~ 49 array[i][j] =arc4random() % 50; // 输出每个元素 printf("%2d ", array[i][j]); } //在这相当于是小数组遍历完毕, 添加换行符 printf("\n"); } int dest[4][3]; for (int i =0; i < 4; i++) { for (int j =0; j < 3; j++) { // 赋值过程要注意, dest[i][j] = array[j][i]; printf("%2d ", dest[i][j]); } // 美观 printf("\n"); }
例二:有⼀个3行4列的⼆维数组,要求编程找出最大元素,并输出所在的行和列。
//方法一
// 定义一个二维数组, int array[3][4] = {0}; //定义三个整型变量, 分别存储最大值,行, 列 int max = 0 ,row =0, col = 0; //第一重循环, 遍历小数组 for (int i =0; i < 3; i++) { // 第二重循环, 遍历小数组的元素 for (int j =0; j < 4; j++) { // 给每个元素赋值, 随机范围是0 ~ 49 array[i][j] =arc4random() % 50; // 输出每个元素 printf("%2d ", array[i][j]); // 判断当前元素大于max if (array[i][j] > max) { // 如果当前元素大于max, 存储当前元素的值, 和所在的行和列 max = array[i][j]; row = i; col = j; } } //在这相当于是小数组遍历完毕, 添加换行符 printf("\n"); } // 输出最大值, 行, 列 printf("max = %d 行:%d列:%d\n", max, row, col);
//方法二
//定义两个整型变量, 记录最大值的位置 int maxRow = 0, maxCol =0; for (int i =0; i < 3; i++) { for (int j =0; j < 4; j++) { if (array[i][j] > array[maxRow][maxCol]) { maxRow = i; maxCol = j; } } } printf("max = %d row = %d col = %d\n", array[maxRow][maxCol], maxRow, maxCol);
测试元素补齐,不足的用 0补齐
int array[][3] ={{1,2},{8, 9}}; for (int i =0; i < 2; i++) { for (int j =0; j < 3; j++) { printf("%d ", array[i][j]); } printf("\n"); }
二.字符串数组
定义字符串数组
char strings[几个字符串][每个字符串的空间大小] = {初始值列表};
char strings[4][50] = {"iOS", "Cocos2D-X","Android", "Unity3D"};
strings[0] 就是第一个数组的首地址
可以理解为恒等于&strings[0][0]
循环输出字符串数组
printf("%s\n", &strings[0][0]); for (int i =0; i < 4; i++) { printf("%s\n", strings[i]); }
如果输出单个字符,需要用%c
printf("%c\n", strings[2][2]);
例一:创建⼀个字符串数组(内容是你周围⼀圈⼈的姓名),输出最⻓字符串的⻓度。
char strings[4][50] = {"iOS", "Cocos2D-X","Android", "Unity3D"}; //定义一个变量来存储最长的长度 int maxlength = 0; // 遍历字符串数组 for (int i =0; i < 4; i++) { // 进行判断 if (strlen(strings[maxlength]) <strlen(strings[i])) { maxlength = i; } } // 输出 printf("最长字符%s长度是%d\n", strings[maxlength], maxlength);
例二:创建⼀个字符串数组(内容是你周围一圈⼈的姓名),对字符串 (英⽂)从小到大排序。
char strings[4][50] = {"iOS", "Cocos2D-X","Android", "Unity3D"}; for (int i =0; i < 4 - 1; i++) { for (int j =0; j < 4 - i -1; j++) { //条件判断 当strcmp的返回值大于0的时候,是按照升序排列的, 需要交换位置 if (strcmp(strings[j], strings[j +1]) > 0) { // 交换字符串 // 字符串不能直接赋值, 需要用字符串拷贝函数strcpy char temp[50] = {0}; strcpy(temp, strings[j]); strcpy(strings[j], strings[j + 1]); strcpy(strings[j + 1], temp); } } } // 循环输出 for (int i =0; i < 4; i++) { printf("%s\n", strings[i]); }
0 0
- C语言_二维数组
- C语言_二维数组
- iOS C语言5_二维数组
- C语言学习笔记:18_数组-二维数组
- C语言二维数组
- C语言二维数组
- c 语言 二维数组
- c语言-二维数组
- C语言二维数组
- C语言 二维数组
- C语言 二维数组
- C语言二维数组
- 【C语言】二维数组
- C语言_数组
- C语言_数组
- C语言_数组
- C语言_数组
- C语言_数组
- mac os下如何 lsusb
- 做一名优秀的开发者可没有说的那么简单
- 判断手机访问还是电脑访问JS
- 分析一个英文txt文本中单词出现的频率
- cpci热插拔信号
- C语言_二维数组
- 励志人物——牛根生
- TRIZ系列-创新原理-22-变害为利原理
- 《编写高质量代码:改善Java程序的151个建议》 建议1
- leetcode系列(7)LRU Cache
- poj2524--Ubiquitous Religions
- hibernate离线查询之查询子表信息
- Oracle10g DBlink连接SqlServer ODBC方式
- MYsql:Plugin 'FEDERATED' is disabled.或1067错误 启动错误与“服务 mysql 意外停止”解决方法