首页 > 技术文章 > 15周作业(二维数组)

blueblog6 2017-12-04 11:31 原文

本周学习内容总结

    1.二维数组

    1).二维数组的定义和引用

  • 定义 类型名 数组名[行长度][列长度]

    int a[3][2];
    定义1个二维数组 a,3 行 2 列,6 个元素

    int b[5][10];
    定义1个二维数组 b,5 行 10 列, 50 个元素

  • 引用
    先定义,后使用
    数组元素的引用:
    数组名[行下标] [列下标]
    行下标和列下标:整型表达式
    行下标的取值范围是[0,行长度-1]
    列下标的取值范围是[0,列长度-1]

    int a[3][2]; 3 行 2 列, 6个元素
    a[0][0] a[0][1]
    a[1][0] a[1][1]
    a[2][0] a[2][1]

    2). 二维数组的初始化

  • 分行赋初值 int a[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; static int b[4][3] = { {1, 2, 3}, { }, {4, 5} };

    数组a
    1 2 3
    4 5 6
    7 8 9

    数组b
    1 2 3
    0 0 0
    4 5 0
    0 0 0

  • 顺序赋初值
    int a[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    static int b[4][3] = { 1, 2, 3, 0, 0, 0, 4, 5 };

  • 在对数组全部元素赋初值时,不可以省略行数,但能省略列数
    省略行长度
    对全部元素都赋了初值
    int a[ ][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    或分行赋初值时,在初值表中列出了全部行
    static int b[ ][3] = { {1, 2, 3}, { }, {4, 5}, { } }

    3).使用二维数组编程
    <1>.方阵转置
    输入一个正整数n (1<n≤6),根据下式生成1个n*n的方阵,然后将该方阵转置(行列互换)后输出。
    a[i][j] = i * n + j + 1 (0 ≤ i ≤ n-1,0 ≤ j ≤ n-1)
    分析:int a[6][6]; n=3时

    代码为:

    #include <stdio.h>
    int main(void)
    {   int i, j, n, temp;
        int a[6][6];
     
        printf ( "Enter n: “ );   scanf ( "%d", &n ); 
        /* 给二维数组赋值  略…… */
    
       /* 行列互换 */
      for ( i = 0; i < n; i++ )
            for ( j = 0; j < n; j++ )
                if ( i <= j ){             /* 只遍历上三角阵 */
            temp = a[i][j]; a[i][j] = a[j][i]; a[j][i] = temp;
                }
    
        /* 按矩阵的形式输出a  略…… */
        return 0;
    } 
    

    <2>.计算日期 ![](https://images2018.cnblogs.com/blog/1238300/201712/1238300-20171203103716413-570143660.png)

    代码:

    <font size=5 color="black">int year,  month,  day;
        int k, leap;
        int tab[2][13] = {					
            {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, 
            {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} 
        };
    	scanf("%d %d %d", &year, &month, &day);
        leap = (year % 4 == 0 && year%100!=0 || year%400==0); 
        for(k = 1; k < month; k++)
        {    	day = day + tab[leap][k];	}       
        printf("day = %d\n", day) ; 
        return 0;
    } 
    

    2.一维字符数组

  • 字符串的存储和运算可以用一维字符数组实现
  • 一维字符数组的定义、引用、初始化与其他类型的一维数组一样。
    char str[80];
    定义一个含有80个字符型元素的数组str
    char t[5]={'H', 'a', 'p', 'p', 'y'};
    初始化数组 t

    1).字符串

  • 字符串的存储-数组初始化
    字符串可以存放在一维字符数组中
    static char s[6] = { 'H', 'a', 'p', 'p', 'y', '\0' };
    字符数组初始化:用字符串常量
    static char s[6] = { "Happy" };
    static char s[6] = "Happy";
    数组长度 ≥ 字符串的有效长度 + 1
    char t[5]; "Happy" 能存入 t 吗?

  • 字符串的存储

  • 对字符串的操作

  • 字符串的存储-赋值和输入

  • 使用字符串编程

    本周学习进程

推荐阅读