[C语言]菜鸟的一些理解-数组2

来源:互联网 发布:北明软件怎么样 编辑:程序博客网 时间:2024/05/17 01:19
二维数组是一维数组的演变。

int a[3][4] ;// 3个可以存储4个int型元素的一维数组

double d[4][4]; //4个可以存储4个double型元素的一维数组



二维数组储存方式

m[0][0] m[0][1] m[0][2]

m[1][0] m[1][1] m[1][2]

m[2][0] m[2][1] m[2][2]




把二维数组看做教室的桌子,而学生看做所储存的元素(用学号表示一个学生)

列 0 1 2 3
0 1201 1208 1215 1222
1 1202 1209 1216 1223
2 1203 1210 1217 1224
3 1204 1211 1218 1225
4 1205 1212 1219 1226
5 1206 1213 1220 1227
6 1207 1214 1221 1228
把行看做排   列看做组
假如你要找  1210  首先你要知道他在几行几列.


二维数组的定义和赋值
其标准形式如下:
数据类型 数组名[一维容量][二维容量]
int a[3][3] ;//定义一个可以存储9个int型元素的二维数组

char c[2][5];//定义一个可以存储10个char型元素的二维数组

int a[3,3];//错误

注意:二维数组的容量  ==  一维容量  *  二维容量

还有数组容量必须为常量。

二维数组的赋值

1.用花括号把数值分开。这样比较直观,有利于可读性,管理。
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

2.跟一维数组一样的赋值方式,但是这样方式,不利于可读,管理
int a[3][3] = {1,2,3,4,5,6,7,8,9};

3.只部分的元素赋值。剩余的编译器会自动初始化为零。
int a[3][3] = {1,2,3,5};
int a[3][3] = {{1,2},{4},{7,8}};

二维数组的应用

1.二维数组的输入输出
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
int main(void)
{
    int i = 0,j = 0;
    int a[3][3] = {0};
     
    for(i = 0;i < 3;++i)
    {
        for(j = 0;j < 3;++j)
        {
            printf("a[%d][%d]=",i,j);
            scanf("%d",&a[i][j]);
        }
    }
    for(i = 0;i < 3;++i)
    {
        for(j = 0;j < 3;++j)
            printf("%d\t",a[i][j]);
        printf("\n");
    }
    return 0;
}

2.查找二维数组中的最小的元素
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    int i = 0,j = 0,min = 0;
    int a[4][4] = {0};
     
    srand ((unsigned)time(NULL));
    for(i = 0;i < 4;++i)
    {
        for(j = 0;j < 4;++j)
            a[i][j] = rand();//为其赋值随机数 
    }
     
    for(i = 0;i < 4;++i)//打印数组 
    {
        for(j = 0;j < 4;++j)
            printf("%d\t",a[i][j]);
        printf("\n");
    }
     
    min = a[0][0];
    for(i = 0;i < 4;++i)//判断最小值 
    {
        for(j = 0;j < 4;++j)
            if(min > a[i][j])
                min = a[i][j];
    }
     
    printf("\nmin = %d\n",min);
    return 0;
}

3.使用两个数组实现矩阵转置输出。
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
 
int main(void)
{
    int i = 0,j = 0;
    int a[3][3] = {1,2,3,4,5,6,7,8,9};
    int t[3][3] = {0};
     
    printf("输出原数组:\n");
    for(i = 0;i < 3;++i)
    {
        for(j = 0;j < 3;++j)
            printf("%d\t",a[i][j]);
        printf("\n");
    }
     
    for(i = 0;i < 3;++i)
    {
        for(j = 0;j < 3;++j)
            t[j][i] = a[i][j];
    }
 
    printf("输出转置后的数组:\n"); 
    for(i = 0;i < 3;++i)
    {
        for(j = 0;j < 3;++j)
            printf("%d\t",t[i][j]);
        printf("\n");
    }
    return 0;
}

4.在一个数组中实现矩阵转置输出。
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
 
int main(void)
{
    int i = 0,j = 0,t = 0;
    int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
                     
    printf("输出原数组:\n");
    for(i = 0;i < 3;++i)
    {
        for(j = 0;j < 3;++j)
            printf("%d\t",a[i][j]);
        printf("\n");
    }
     
    for(i = 0;i < 3;++i)
    {
        for(j = i + 1;j < 3;++j)
        
            t = a[j][i];
            a[j][i] = a[i][j];
            a[i][j] = t;
        }
    }
     
    printf("输出转置后的数组:\n");
    for(i = 0;i < 3;++i)
    {
        for(j = 0;j < 3;++j)
            printf("%d\t",a[i][j]);
        printf("\n");
    }
    return 0;
}


 
多维数组

int a[2][3][6]; //定义一个可以存储36个int型的多维数组。

其定义和赋值方式跟二维数组一样。
书上关于多维数组的只有一页,是不是多维数组在C语言中用的少,还是基本不用。

原创粉丝点击