iOS学习笔记---C语言第五天
二维数组 字符串数组 多维数组
二维数组的定义
类型 数组[常量表达式1][常量表达式2]={值1,值2...};
int a[2][3] = {7,8,3,2,8,5};
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { float a[3][4] = {{2.5},{3.3},{2.1,4.8}}; for (int i = 0;i<3 ;i++){ for (int j = 0; j<4; j++) { // printf("%.2f ",a[i][j]);//输出2.50 0.00 0.00 0.00 3.30 0.00 0.00 0.00 2.10 4.80 0.00 0.00 printf("%g\t",a[i][j]);//输出2.5 0 0 0 3.3 0 0 0 2.1 4.8 0 0 } printf("\n"); } return 0; }
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { int a[3][4] = {0},b[4][3]; for (int i = 0; i<3; i++) { for (int j = 0; j<4; j++) { a[i][j] = arc4random()%31; printf("%d\t",a[i][j]); }printf("\n"); } printf("\n"); for (int i = 0 ; i<4; i++) { for (int j = 0; j<3; j++) { b[i][j]=a[j][i]; printf("%d\t",b[i][j]); }printf("\n"); } return 0; } //输出:(数字随机) //2 1 10 19 //21 10 26 23 //18 26 14 18 // //2 21 18 //1 10 26 //10 26 14 //19 23 18
1 //有一个3⾏行4列的⼆二维数组,要求编程找出最 ⼤大元素,并输出所在的⾏行和列。 2 #import <Foundation/Foundation.h> 3 4 int main(int argc, const char * argv[]) 5 { 6 int a[3][4] = {0},max=0; 7 // int k,l; 8 for (int i = 0; i<3; i++) { 9 for (int j = 0; j<4; j++) { 10 a[i][j] = arc4random()%21+20; 11 printf("%d\t",a[i][j]); 12 if (max<a[i][j]) { 13 max=a[i][j]; 14 // k=i; 15 // l=j; 16 } 17 }printf("\n"); 18 } 19 printf("%d ",max); 20 for (int i = 0; i<3; i++) { 21 for (int j = 0; j<4; j++) { 22 if (a[i][j]==max) { 23 printf("第%d行,第%d列",i+1,j+1); 24 } 25 } 26 } 27 28 // printf("%d %d %d",max,k+1,l+1); 29 return 0; 30 }
二维数组定义时,可以不指定第一维的长度,但必须给定第二维:int a[][3]={1,2,3,4,5};
元素个数不足,会自动补齐。
二、字符串数组
用于存放字符串的数组称为字符串数组 字符串:字符数组
定义字符串数组
char 数组名[常量表达式1][常量表达式2]={值1,值2...};
char strings[3][10]={"iphone","android","win8"};
字符串数组元素访问
1.访问某个字符串 数组名[第一维下标]
2.访问某个字符 数组名[第一维下标][第二维下标]
//字符串排序 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { char name[5][20]={"lidfgdfi","shdfgdg","shidfgren","zhfdggsr","lidrrgo"}; for (int i = 0; i<4; i++) { for (int j=0; j<4-i; j++) { if(strcmp(name[j], name[j+1])>0) {char temp[20]={0}; strcpy(temp, name[j]); strcpy(name[j], name[j+1]); strcpy(name[j+1], temp); } } } for (int i=0; i<5; i++) { printf("%s\n",name[i]); } return 0; }
注意事项
字符串数组实为字符型二维数组
每个字符串长度不可超过第二维长度-1
每个字符串用数组名加一维下标表示
三、多维数组
数组下标在2个或2个以上时,该数组为多维数组 int a[2][4][3]={0}; 表示整型的三维数组,2层4行3列,元素个数为2*4*3=24个
三维数组的遍历
for(int i = 0; i < 层数; i++){
for(int j = 0; j < ⾏行数; j++){
for(int k = 0; k < 列数; k++){
a[ i ][ j ][ k ] = xxx;
}
}
}