【學習ios之路:C語言】② 二維.三維陣列.字串陣列的應用
阿新 • • 發佈:2019-02-11
二.三維陣列
例如:
int a[2][4][3] = {0};
2.隨機生成一個三維陣列,程式設計求深度的平均值,儲存在一個二維數中。
字串陣列:存放多個字串,每一個字串都是用一個一維的字元陣列儲存.本質上:字串陣列就是有多個一維字元陣列組成.
當定義字串陣列時,列數一定要大於等於最長的字串長度 + 1.
例如:
int a[2][4][3] = {0};
表⽰示整型的三維陣列,2層4⾏3列。元素個數為2*4*3 = 24個.例:隨機產生一個三維陣列,求三維陣列的和.
例題:輸入6個字串,並對它們按從小到大的順序排序後輸出.
例如:
int a[2][4][3] = {0};
表⽰示整型的三維陣列,2層4⾏3列。元素個數為2*4*3 = 24個.例:隨機產生一個三維陣列,求三維陣列的和.
<span style="font-size:14px;">for (int i = 0; i < 3; i++) { //第一層控制層 printf("------第%d層-----\n",i+1); for (int j = 0; j < 4; j++) { //第二層控制行 for (int k = 0; k < 3; k++) { //第三層控制列 m[i][j][k] = arc4random() % ( 40 - 20 + 1) +20; printf("%d ", m[i][j][k] ); sum += m[i][j][k]; } printf("\n");//換行 } printf("\n");//換層 } printf("sum = %d \n",sum);</span>
2.隨機生成一個三維陣列,程式設計求深度的平均值,儲存在一個二維數中。
3.字串陣列<span style="font-size:14px;"> int a[3][4][5] = {0};//定義一個3層4行5列的三維陣列.取值範圍 10 - 20 //隨機獲取值 for (int i = 0; i < 3; i++) {//層 for (int j = 0; j < 4; j++) {//行 for (int k = 0; k < 5; k++) { //列 a[i][j][k] = arc4random() % (20 - 10 + 1) + 10; printf("%d ", a[i][j][k]); } printf("\n"); } printf("\n"); } //求對應深度平均值 int m[4][5] = {0};//定義一個4行5列的二維陣列,用來儲存深度的和. //分析:先層,後列,後行. 先 即在內層. for (int i = 0; i < 4; i++) { //行 for (int j = 0; j < 5; j++) { //列 for ( int k = 0; k < 3; k++) {//層 m[i][j] += a[k][i][j]; } printf("%.2f ",m[i][j] * 1.0 / 3);//深度平均值 // printf("%d ", m[i][j]); } printf("\n"); } </span>
字串陣列:存放多個字串,每一個字串都是用一個一維的字元陣列儲存.本質上:字串陣列就是有多個一維字元陣列組成.
當定義字串陣列時,列數一定要大於等於最長的字串長度 + 1.
char str[4][6] = {"my333", "you", "hedr", "me"}; //輸出字串陣列中的單個字元 printf("%c \n", str[3][1]);//e //如何訪問字串? 只用訪問到行索引即可. printf("%s\n", str[3]);//me,訪問到行數即可. //交換 you 和 me 的位置; char temp[10] = {0}; //儲存臨時字串. //temp[i] = str[1];字串不能直接賦值,所以用到拷貝. strcpy(temp, str[1]); //將me拷貝到you裡面 strcpy(str[1], str[3]); //將temp拷貝到str[3]中. strcpy(str[3], temp);</span> //輸出字串(訪問字串,只獲取行索引,不用獲取列索引) for (int i = 0; i < 4; i++) { printf("%s \n",str[i]); // my dme hder you } //求字串陣列str中字串的最長長度 unsigned long max = 0;long len = 0; int index = 0; for (int i = 0 ; i < 4; i++) { len = strlen(str[i]); if (max < len) { max = len ; index = i; } } printf("最長字串為 :%s, 長度為: %ld",str[index], max);
例如:
int a[2][4][3] = {0};
表⽰示整型的三維陣列,2層4⾏3列。元素個數為2*4*3 = 24個.例:隨機產生一個三維陣列,求三維陣列的和.
for (int i = 0; i < 3; i++) { //第一層控制層
printf("------第%d層-----\n",i+1);
for (int j = 0; j < 4; j++) { //第二層控制行
for (int k = 0; k < 3; k++) { //第三層控制列
m[i][j][k] = arc4random() % ( 40 - 20 + 1) +20;
printf("%d ", m[i][j][k] );
sum += m[i][j][k];
}
printf("\n");//換行
}
printf("\n");//換層
}
printf("sum = %d \n",sum);
2.隨機生成一個三維陣列,程式設計求深度的平均值,儲存在一個二維數中。
i<span style="font-size:14px;">nt a[3][4][5] = {0};//定義一個3層4行5列的三維陣列.取值範圍 10 - 20
//隨機獲取值
for (int i = 0; i < 3; i++) {//層
for (int j = 0; j < 4; j++) {//行
for (int k = 0; k < 5; k++) { //列
a[i][j][k] = arc4random() % (20 - 10 + 1) + 10;
printf("%d ", a[i][j][k]);
}
printf("\n");
}
printf("\n");
}
//求對應深度平均值
int m[4][5] = {0};//定義一個4行5列的二維陣列,用來儲存深度的和.
//分析:先層,後列,後行. 先 即在內層.
for (int i = 0; i < 4; i++) { //行
for (int j = 0; j < 5; j++) { //列
for ( int k = 0; k < 3; k++) {//層
m[i][j] += a[k][i][j];
}
printf("%.2f ",m[i][j] * 1.0 / 3);//深度平均值
// printf("%d ", m[i][j]);
}
printf("\n");
}
</span>
例題:輸入6個字串,並對它們按從小到大的順序排序後輸出.
char str[5][10] = {0};//定義一個字串陣列
printf("請輸入五個字串:\n");
for (int i = 0; i < 5; i++) {
scanf("%s", str[i]); //str[i]就代表地址.
}
for (int i = 0; i < 5; i++) {
printf("%s ", str[i]);
}
printf("\n");
int max = 0;
char temp[10] = {0};
for (int i = 0; i < 5 - 1; i++) {
for (int j = 0; j < 5 - i - 1; j++) {
max = strcmp(str[j], str[j + 1]); //vv ,aa 3,4 //字串比較,只比較首字母.
if (max > 0) {
strcpy(temp, str[j]);
//將me拷貝到you裡面
strcpy(str[j], str[j + 1]);
//將temp拷貝到str[3]中.
strcpy(str[j + 1], temp);
}
}
}
for (int i = 0; i < 5; i++) {
printf("%s ", str[i]);
}