1. 程式人生 > >15周作業(二維數組)

15周作業(二維數組)

數組長度 [1] 二維數組賦值 log ati std 數組初始化 2-2 輸入

本周學習內容總結

    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個nn的方陣,然後將該方陣轉置(行列互換)後輸出。
    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>.計算日期
    技術分享圖片

    代碼:

    <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 嗎?
    技術分享圖片

  • 字符串的存儲

    技術分享圖片

  • 對字符串的操作
    技術分享圖片

    技術分享圖片

  • 字符串的存儲-賦值和輸入
    技術分享圖片

  • 使用字符串編程

    技術分享圖片

    技術分享圖片

    技術分享圖片

    本周學習進程
    技術分享圖片

    技術分享圖片技術分享圖片

15周作業(二維數組)