C-二维数组,多维数组

-----二维数组

->在数组定义当中,行数和列数需要用常量定义

->在定义的时候如果没有数值进行填充,则补零

->第一个数是行,第二个数是列

->行可以不写,但必须定义列

        int array [4][3] = {1,2,3,4,5,6,7,8,9,0,1,2};
        int array1[4][3] = {{11,12,13},{14,15,16},{17,18,19},{20}};

        printf("%d",array[0][0]);
        printf("\t%d",array1[3][0]);

        int a = 0 ;
        int b = 0 ;
        array[a][b] = 0;
        printf("\t%d",array[0][0]);

        int array[][4] = {1,2,3,4,5,6,7,8,9};

        int array[][4] = {1,2,3,4,5,6,7,8,9};
        printf("%lu",sizeof(array));

        int array[][4] = {1,2,3,4,5,6,7,8,9};
       // printf("%lu",sizeof(array));

        for (int i = 0; i < 3; i ++) {
            for (int j = 0; j < 4; j++) {
                printf("%d ",array[i][j]);
            }
            printf("\n");
        }

->所占用的内存空间

        int array[][4] = {1,2,3,4,5,6,7,8,9};
        printf("%lu",sizeof(array));

        int array[][4] = {1,2,3,4,5,6,7,8,9};
        printf("%lu",sizeof(array));

->二维数组打印的话需要两层循环的配合,第一层代表行,第二层代表列

        int array[4][5];
        for (int i = 0; i < 4; i ++) {
            for (int j = 0; j < 5; j ++) {
                array[i][j] = arc4random() % 101;
                printf("%d\t",array[i][j]);
            }
            printf("\n");
        }
    

->数组求和练习

        int sum = 0;
        for (int i = 0; i < 4; i++) {
            sum = sum + array[0][i];

        }
        printf("\n第0行总和:%d",sum);
        int sum1 = 0    ;
        for (int i = 0; i < 3; i ++) {
            for (int j = 0; j < 4; j++) {
                sum1 =  sum1 + array[i][j];
            }
            printf("\n第%d行的总和:%d",i ,sum1);
            sum1 = 0;
        }
        printf("\n");
        int sum2 = 0;
            for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 3; j++) {
                    sum2 = sum2 + array[j][i];//谁变化的快就放到内层循环
                }
                printf("\n第%d列的总和:%d",i,sum2);
                sum2 = 0;
            }

——字符串数组(字符数组)

->存储多个字符串

->char string[i][j] 可以保存i个字符串,每个字符串不能大于j-1个

第一位度表示可以放几个字符串,第二维度每个字符串表示最大长度-1;

->可以用一个下标访问,访问的是整个字符串

->两个下标访问的是字符

->不能直接替换

->得用strcpy

        char string[3][10] = {"maoyuanbo","maomao","hahahaha"};
        printf("%c",string[0][1]);
        printf("\n%s",string[1]);

        char string[3][10] = {"iphone","android","winphone"};

        printf("%c",string[0][1]);
        printf("\n%s",string[0]);
        strcpy(string[0], "nokia");
        printf("\n%s",string[0]);
    

>冒泡排序

 1         char string[5][20] = {0};
 2         for (int i = 0; i < 5; i++) {
 3             scanf("%s",string[i]);
 4         }
 5
 6         for (int i = 0; i < 4; i++) {
 7             for (int j = 0; j < 4 - i; j++) {
 8                 if (strcmp(string[j], string[j+1]) > 0) {
 9                     char name[20] = {0};
10                     strcpy(name, string[j]);
11                     strcpy(string[j], string[j+1]);
12                     strcpy(string[j+1], name);
13                 }
14             }
15         }
16         for (int i = 0; i < 5; i++) {
17             printf("\n%s",string[i]);
18         }
19     

->选择排序

 1         char string[5][20] = {0};
 2         int minindex = 0;//设最小值为第一个数
 3         for (int i = 0; i < 5; i++) {
 4             scanf("%s",string[i]);
 5         }
 6         for (int i = 0; i < 4; i++) {
 7             for (int j = i + 1; j < 5; j++) {
 8                 if (strcmp(string[minindex], string[j]) > 0) {
 9                     minindex = j;
10                 }
11
12             }
13             if (minindex != i) {
14                 char name[20] = {0};
15                 strcpy(name, string[i]);
16                 strcpy(string[i], string[minindex]);
17                 strcpy(string[minindex], name);
18             }
19         }
20         for (int i = 0; i < 5; i++) {
21             printf("\n%s",string[i]);
22         }
23     

->求最大字符串长度

 1         char string[5][20] = {0};
 2         unsigned long maxworld = 0;//定义一个最大的字符串长度
 3         for (int i = 0; i < 5; i++) {
 4             scanf("%s",string[i]);
 5         }
 6         //求出最长长度
 7         for (int i = 0; i < 5; i++) {
 8             if (strlen(string[i]) > maxworld) {
 9                 maxworld =  strlen(string[i]);
10             }
11         }
12         printf("最长长度为:%ld\n",maxworld);
13         for (int i = 0; i < 5; i++) {
14             if (strlen(string[i]) == maxworld) {
15                 printf("%s\t",string[i]);
16             }
17         }
18
19
20         char array[5][20] = {0};
21         unsigned long maxworld = 0;
22         for (int i = 0; i < 5; i++) {
23             scanf("%s",array[i]);
24         }
25         for (int i = 0; i < 5; i++) {
26             if (strlen(array[i]) > maxworld) {
27                 maxworld = strlen(array[i]);
28             }
29         }
30         printf("最长长度:%ld\n",maxworld);
31         for (int i = 0; i < 5; i ++) {
32             if (strlen(array[i]) == maxworld) {
33                 printf("%s  ",array[i]);
34             }
35         }
36         

——多维数组

    int a[2][2][2] = {0};
    int sum = 0,sum1 = 0;
    for (int i = 0; i < 2; i ++) {
        for (int j = 0; j < 2; j ++) {
            for (int k = 0; k < 2; k++) {
                a[i][j][k] = arc4random() % 11;
                printf("%d\t",a[i][j][k]);
                sum1 =a[i][j][k] +sum1;
                sum = a[i][j][k] +sum;
            }
            printf("每一行总和:%d",sum1);
            sum1 = 0;
            printf("\n");
        }
        printf("每一层总和:%d",sum);
        sum = 0;
        printf("\n\n");
    }
时间: 2024-07-29 12:03:38

C-二维数组,多维数组的相关文章

java数组(一维数组,二维数组)

数组初始化: 1,动态初始化:数组定义与为数组分配空间和赋值的操作分开进行 2,静态初始化:在定义数组的同时就为数组元素分配空间并赋值 3,默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此,数组分配空间之后 每个元素也被按照成员的规则被隐士的初始化值 ------------------------------------------------. 一维数组: package day06; import java.util.Date; /*** * 数组演示 * 数组的声明: * t

环形二维数组最大子数组的和

设计思路: 因为之前做过二维数组的和环形一维数组的,所以第一感觉就是能不能把这两种整改一下结合起来,所以采用的做法就是将二维环形变化为一维环形,在此采用的方法是从第一行开始,第一行计算出最大子数组,然后第一行和第二行相加为一维计算最大子数组,然后第一行.第二行和第三行,以此类推,最后将各子数组的最大值进行比较,得到最大的即为子数组和的最大值. 实验代码: //环形一维数组求最大子数组 package erwei; public class oneArray { private int i; pu

二维数组,矩形数组 集合

二维数组,矩形数组 集合 二维数组,矩形数组集合 一.二维数组: 一维数组----豆角 二维数组----表格 1)定义: 一维数组: 数据类型[] 数组变量名 = new 数据类型[数组长度]; 数据类型[] 数组变量名 = new 数据类型[数组长度]{1,2,3....}; 2)二维数组: 数据类型[,] 数组变量名 = new 数据类型[行数,列数]; int[,] a = new int[3,4]; 赋值: a[行下标,列下标] = 值       下标都是从0开始的 取值: a[行下标

二维数组,锯齿数组和集合

一.二维数组 二维数组:一维数组----豆角二维数组----表格 定义:1.一维数组:数据类型[] 数组变量名 = new 数据类型[数组长度];数据类型[] 数组变量名 = new 数据类型[数组长度]{1,2,3....}; 2.二维数组:数据类型[,] 数组变量名 = new 数据类型[行数,列数];int[,] a = new int[3,4]; 赋值: a[行下标,列下标] = 值 下标都是从0开始的取值: a[行下标,列下标] 题目:一个班6个人,从键盘输入每个学号语文,数学,外语成

一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式

 打印数组中的每个元素,打印每个元素的地址: #include <stdio.h> #include <stdlib.h> void main(void) { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int *p = a; p < a + 10;p++)  //指针类型决定4个字节 { printf("\n%p,%d", p, *p); } getchar(); } 指针数组 #inclu

数组(一维数组、二维数组)

数组概述 C# 数组从零开始建立索引,即数组索引从零开始.C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似.但还有一些差异应引起注意. 这些其实和泛型有些类似,数组的操作没有泛型方便,但是性能却不是泛型所能比拟的 声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面.在 C# 中,将方括号放在标识符后是不合法的语法. int[] table; // not int table[]; 另一细节是,数组的大小不是其类型的一部分,而在 C 语言中它却是数组类型的一部分.这使您可

将二维数组转为一维数组的2种方法

如何将下面的二维数组转为一维数组. 代码如下: $msg = array( array( 'id'=>'45', 'name'=>'jack' ), array( 'id'=>'34', 'name'=>'mary' ), array( 'id'=>'78', 'name'=>'lili' ), ); 第一种方法: 代码如下: foreach($msg as $k => $v){ $ids[] = $id; $names[] = $name; } 第二种方法: 代

20160423 二维数组,锯齿数组和集合

2016-04-23  20:46:26 一.二维数组: 一维数组----豆角 二维数组----表格 1)定义: 一维数组: 数据类型[] 数组变量名 = new 数据类型[数组长度]; 数据类型[] 数组变量名 = new 数据类型[数组长度]{1,2,3....}; 2)二维数组: 数据类型[,] 数组变量名 = new 数据类型[行数,列数]; int[,] a = new int[3,4]; 赋值: a[行下标,列下标] = 值       下标都是从0开始的 取值: a[行下标,列下标

C语言第五讲:二维数组,多维数组

一.二维数组 二维数组的定义:数据类型  数组名[常量表达式1][常量表达式2] = {值1, 值2,....值n}; 例如: int array[3][3] = {{1, 2, 3}, {2, 1, 3}, {3, 1, 2}}; 二维数组array[3][3] 相当于是由三个含有三个元素的一维数组所组成的. 数组元素个数怎么求:两个维度的下标相乘 访问二维数组中的元素:双下标 多维数组 : 三维数组:数组名[常量表达式1][常量表达式2][常量表达式3] = {值1, 值2,....值n};

软件工程概论---环状二维数组最大子数组和

1,题目要求 根据软件工程概论--<环状一维数组最大子数组和>和<二维数组最大子数组和>两篇博客,求环状二维数组的和. 2,思路设计 根据前面两篇博客思路做参考.在二维数组的基础上扩充二维数组的列为2*col-1.再进行二维数组的求和即可. 3,代码 #include <iostream> #include<time.h> using namespace std; #define max(a,b) ((a)>(b)?(a):(b)) #define M