C语言基础-----二维数组,三维数组
2015-07-13 20:04
302 查看
一 二维数组
1.二维数组的定义:
数据类型 数组名[行][列] ={ 数值1,数值2......};
2.二维数组有几行,就代表有几个一维数组. int a[2][3] = {1,2,3,4,5,6};
a[0] 对应的元素是1,2,3 二维数组的元素也是通过下标来访问的,行和列的下标都是从0开始的, a[0][0] 表示数组a的第一个元素.
3.二维数组的元素的个数 = 行数 * 列数
4.二维数组的初始化,可以不写第一维的长度,第一维的位数是根据第二维的长度关系计算出来的.
注意:第二维的长度必须要指定,不然编译的时候会出错.
5.二维数组的遍历:
int a[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(“%d”,a[i][j]);
}
printf(“\n");
}
6.习题
将一个二维数组的行和列交换,存储到另外一个数组中去(即将数组的行和列进行交换)
int a[3][5] = {0};
int b[5][3] = {0};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
a[i][j] = arc4random()%21+10;
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("a
数组的值为:\n");
//先从
a[3][5]中取出数值,存放到b[5][3]中
for (int i = 0; i < 3; i++) {
for (int j = 0; j <5; j++) {
//交换行列的核心代码
b[j][i] = a[i][j];
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
printf("b
数组的值为:%d ",b[i][j]);
}
printf("\n");
}
有一个3行4列的二维数组,要求编程找出最大元素,并输出所在的行和列.
int a[3][4] = {0};
for (int i = 0; i < 3; i++) {
for (int j =0; j < 4;j++) {
a[i][j] = arc4random()%21+10;
}
}
int max = 0,n = 0,m = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
//如果最大值比
a[i][j]小,就把
a[i][j]赋值非
max
if (max < a[i][j]) {
max = a[i][j];
n = i;
m = j;
}
printf("%d ",a[i][j]);
}
printf("\n");
}
// printf("生成的最大值为:%d元素所在的行为:%d元素所在的列为:%d",max,n,m);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if (max == a[i][j]) {
printf("生成的最大值为:%d
元素所在的行为:%d
元素所在的列为:%d",max,i,j);
}
}
}
二 字符串数组
字符数组就是字符串,存放字符串的数组就是字符串数组.
定义字符串数组:
char 数组名 [常量表达式1][常量表达式2] = {值1,值2.....};
char string[3][10] = {“iPhone”,”Android”,”win8"};
字符串数组的访问
printf(“%c\n”,string[0][2]);
%s 字符串的占位符
访问单个字符:数组名[第一维下标][第二维下标]
访问某个字符串:数组名[第一维下标]
printf(“%s”,string[1]);
for(int i = 0;i < 0;i++){
for(int j = 0;j< 0;j++){
if(string[i][j] !=‘\0'){
printf(“%d”,string[i][j]);
}else{
break;
}
}
printf(“ ");
}
printf(“\n");
习题:
创建一个字符串数组,输出最长字符串的长度
char name[5][10] = {"lifang","zhangsan","lisi","wangwu","liuliu"};
// unsigned long maxLength = 0;
// for (int i = 0; i < 5; i++) {
// //判断姓名的长度使用函数
strlen()
得到字符串的长度
// if (maxLength < strlen(name[i])) {
// maxLength = strlen(name[i]);
//
// }
// }
// for (int i = 0; i < 5; i++) {
// if (maxLength == strlen(name[i])) {
// printf("%s\n",name[i]);
// }
// }
// printf("的长度最长:%lu\n",maxLength);
创建一个字符串数组,对字符串从小到大排序
char name1[5][10] = {"lifang","zhang","lisi","wangwu","liuliu"};
// for (int i = 0; i < 5 ; i++) {
// for (int j = 0; j < 5 - i - 1; j++) {
// if (strcmp(name1[j],name1[j+1]) > 0) {
// //定义一个空的字符串
// char temp[20] = {};
// strcpy(temp, name1[j]);
// strcpy(name1[j], name1[j+1]);
// strcpy(name1[j+1], temp);
//
// }
//
// }
// }
for (int i = 0 ; i < 5; i++) {
printf("%s\n", name1[i]);
}
字符串数组就是 字符型 二位数组
每个字符串长度 不可超越第二维长度减1;
每个字符串用数组名[一维下标]表示
三三维数组
数组下标在2个以上时,该数组称为多维数组
int
a[2][4][3]
= {0};
三维数组的生成
//表示整型的三维数组,2层4行3列
//元素个数为
2*3*4=24个
for
(int
i =
0; i <
2; i++) {
for
(int
j =
0; j <
4
; j++) {
for
(int
k =
0; k <
3; k++) {
a[i][j][k] = arc4random()%21+10;
}
}
}
三维数组的遍历
for
(int
i =
0; i <
2; i++) {
for
(int
j =
0; j <
4
; j++) {
for
(int
k =
0; k <
3; k++) {
printf("%d ",a[i][j][k]);
}
printf("\n");
}
}
1.二维数组的定义:
数据类型 数组名[行][列] ={ 数值1,数值2......};
2.二维数组有几行,就代表有几个一维数组. int a[2][3] = {1,2,3,4,5,6};
a[0] 对应的元素是1,2,3 二维数组的元素也是通过下标来访问的,行和列的下标都是从0开始的, a[0][0] 表示数组a的第一个元素.
3.二维数组的元素的个数 = 行数 * 列数
4.二维数组的初始化,可以不写第一维的长度,第一维的位数是根据第二维的长度关系计算出来的.
注意:第二维的长度必须要指定,不然编译的时候会出错.
5.二维数组的遍历:
int a[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(“%d”,a[i][j]);
}
printf(“\n");
}
6.习题
将一个二维数组的行和列交换,存储到另外一个数组中去(即将数组的行和列进行交换)
int a[3][5] = {0};
int b[5][3] = {0};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
a[i][j] = arc4random()%21+10;
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("a
数组的值为:\n");
//先从
a[3][5]中取出数值,存放到b[5][3]中
for (int i = 0; i < 3; i++) {
for (int j = 0; j <5; j++) {
//交换行列的核心代码
b[j][i] = a[i][j];
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
printf("b
数组的值为:%d ",b[i][j]);
}
printf("\n");
}
有一个3行4列的二维数组,要求编程找出最大元素,并输出所在的行和列.
int a[3][4] = {0};
for (int i = 0; i < 3; i++) {
for (int j =0; j < 4;j++) {
a[i][j] = arc4random()%21+10;
}
}
int max = 0,n = 0,m = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
//如果最大值比
a[i][j]小,就把
a[i][j]赋值非
max
if (max < a[i][j]) {
max = a[i][j];
n = i;
m = j;
}
printf("%d ",a[i][j]);
}
printf("\n");
}
// printf("生成的最大值为:%d元素所在的行为:%d元素所在的列为:%d",max,n,m);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if (max == a[i][j]) {
printf("生成的最大值为:%d
元素所在的行为:%d
元素所在的列为:%d",max,i,j);
}
}
}
二 字符串数组
字符数组就是字符串,存放字符串的数组就是字符串数组.
定义字符串数组:
char 数组名 [常量表达式1][常量表达式2] = {值1,值2.....};
char string[3][10] = {“iPhone”,”Android”,”win8"};
字符串数组的访问
printf(“%c\n”,string[0][2]);
%s 字符串的占位符
访问单个字符:数组名[第一维下标][第二维下标]
访问某个字符串:数组名[第一维下标]
printf(“%s”,string[1]);
for(int i = 0;i < 0;i++){
for(int j = 0;j< 0;j++){
if(string[i][j] !=‘\0'){
printf(“%d”,string[i][j]);
}else{
break;
}
}
printf(“ ");
}
printf(“\n");
习题:
创建一个字符串数组,输出最长字符串的长度
char name[5][10] = {"lifang","zhangsan","lisi","wangwu","liuliu"};
// unsigned long maxLength = 0;
// for (int i = 0; i < 5; i++) {
// //判断姓名的长度使用函数
strlen()
得到字符串的长度
// if (maxLength < strlen(name[i])) {
// maxLength = strlen(name[i]);
//
// }
// }
// for (int i = 0; i < 5; i++) {
// if (maxLength == strlen(name[i])) {
// printf("%s\n",name[i]);
// }
// }
// printf("的长度最长:%lu\n",maxLength);
创建一个字符串数组,对字符串从小到大排序
char name1[5][10] = {"lifang","zhang","lisi","wangwu","liuliu"};
// for (int i = 0; i < 5 ; i++) {
// for (int j = 0; j < 5 - i - 1; j++) {
// if (strcmp(name1[j],name1[j+1]) > 0) {
// //定义一个空的字符串
// char temp[20] = {};
// strcpy(temp, name1[j]);
// strcpy(name1[j], name1[j+1]);
// strcpy(name1[j+1], temp);
//
// }
//
// }
// }
for (int i = 0 ; i < 5; i++) {
printf("%s\n", name1[i]);
}
字符串数组就是 字符型 二位数组
每个字符串长度 不可超越第二维长度减1;
每个字符串用数组名[一维下标]表示
三三维数组
数组下标在2个以上时,该数组称为多维数组
int
a[2][4][3]
= {0};
三维数组的生成
//表示整型的三维数组,2层4行3列
//元素个数为
2*3*4=24个
for
(int
i =
0; i <
2; i++) {
for
(int
j =
0; j <
4
; j++) {
for
(int
k =
0; k <
3; k++) {
a[i][j][k] = arc4random()%21+10;
}
}
}
三维数组的遍历
for
(int
i =
0; i <
2; i++) {
for
(int
j =
0; j <
4
; j++) {
for
(int
k =
0; k <
3; k++) {
printf("%d ",a[i][j][k]);
}
printf("\n");
}
}
相关文章推荐
- 访问控制列表概述
- 路由器访问列表的应用
- 邮箱网站不能用mail.xxx.com:8888的方式访问原因
- MongoDB系列教程(四):设置用户访问权限
- 六、访问CGI变量
- php获取Google机器人访问足迹的方法
- 第八节 访问方式 [8]
- asp.net实现访问局域网共享目录下文件的解决方法
- 在android开发中进行数据存储与访问的多种方式介绍
- C#(.NET)数据访问连接、查询、插入等操作的封装类
- Js+Flash实现访问剪切板操作
- ASP访问数量统计代码
- C#访问应用程序配置文件的方法
- mysql设置指定ip远程访问连接实例
- thinkphp四种url访问方式详解
- php禁止直接从浏览器输入地址访问.php文件的方法
- 外贸网站屏蔽中国IP访问的多种方法
- PHP 只允许指定IP访问(允许*号通配符过滤IP)
- PHP访问Google Search API的方法
- JavaScript对象属性检查、增加、删除、访问操作实例