c語言(⼆二維數組、字符串數組、多維數組)課堂筆記加作業


//

//  main.m

//  1-19課程筆記

//  二維數組、字符串數組、多維數組

//  講師:小輝

//  筆者:王學文

//  Created by lanouhn on 15/1/19.

//  Copyright (c) 2015年 lanouhn. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

int main(int argc, const char * argv[]) {

    /*

    //一維數組

    int a[10] = {1, 2, 3, 4, 5};

    //二維數組,比起一維數組,多了一個維度(多了一個元素下標)

    int b[2][3] = {1, 2, 3, 4, 5, 6};

    

    //二維數組的定義

    //格式:

    //數據類型  數組名[行數][列數] = {值1,值2,…};

    

    // 二維數組的元素個數 = 行數 * 列數;

    

    //定義的其他形式

    //1.賦值的時候可以省略,默認值為0

    int array1[2][3] = {1, 2, 3};

    //2.行數可以省略,由賦值的元素個數 與 列數 決定;

    int array2[][3] = {1, 2, 3, 4};

    

    //列數是不能省略的

    //int array3[2][] = {1, 2, 3, 4, 5}; //error

    //int array4[][] = {1, 2, 3, 4}; //error

    

 

    //二位數組的使用

    //元素的獲取格式

    //數組名[行數][列數]

    //注:行數和列數從0開始

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

    

    //獲取元素

//    array[0][0];

//    array[0][1];

//    array[1][0];

//    array[1][1];

//    array[2][0];

//    array[2][1];

    for (int i = 0; i < 3; i++) {

        for (int j = 0; j < 2; j++) {

            printf("array[%d][%d] = %d\n", i, j, array[i][j]);

        }

    }

     

    

    //給數組的某個元素賦值

    //定義一個5行6列的數組,並隨機給每個數組賦值,取值范圍[55,88],並求出最大值和最小值所在的位置

    

    //清理緩存command + shift + k;

    int a[5][6] = {0};

    int max = 0, min = 89;

    for (int i = 0; i < 5; i++) {

        for (int j = 0; j < 6; j++) {

            a[i][j] = arc4random() % 34 + 55;

            printf("a[%d][%d] = %d ", i, j, a[i][j]);

            if (max < a[i][j]) {

                max = a[i][j];

            }

            if (min > a[i][j]) {

                min = a[i][j];

            }

          }

    }

   for (int i = 0; i < 5; i++) {

        for (int j = 0; j < 6; j++) {

            

            if (max == a[i][j]) {

                printf("\n最大值a[%d][%d] = %d\n", i, j, a[i][j]);

            }

            if (min == a[i][j]) {

                printf("最小值a[%d][%d] = %d\n", i, j, a[i][j]);

            }

        }

    }

    

    

    int a[3][4] = {0};

    int b[4][3] = {0};

    for (int i = 0; i < 3; i++) {

        for (int j = 0; j < 4; j++) {

            a[i][j] = arc4random() % 11 + 50;

            printf("a[%d][%d] = %d ", i, j, a[i][j]);

            

        } printf("\n");

    }

    printf("交換后:\n");

    for (int j = 0; j < 4; j++) {

        for (int i = 0; i < 3; i++) {

           b[j][i] = a[i][j];

            printf("b[%d][%d] = %d ", j, i, b[j][i]);

        }printf("\n");

    }

     

    //字符數組;數組內容存放的元素是字符(char)

    //字符串數組:數組內存放的元素是字符串

    //字符數組,又叫字符串

    //字符串數組:數組內存放的元素是字符數組,數組套數組,所以字符串數組是一個二維的數組

    

    //字符數組

    char string1[6] = {'a', 'p', 'p', 'l', 'e', '\0'};

    //字符串

    char string2[6] = "apple";

    //字符串數組

    char string3[3][7] = {"apple", "xiaomi", "nokia"};

    

    //輸出字符串數組

    

    printf("%s\n", string1);

    //1.字符輸出

    for (int i = 0; i < 2; i++) {

        for (int j = 0; j < 7 && string3[i][j] != '\0'; j++) {

            printf("%c", string3[i][j]);

        }printf("\n");

    }

    printf("%s\n", string2);

    for (int i = 0; i < 3; i++) {

         printf("%s\n",string3[i]);

    }

   

    //創建一個數組,用於存放周圍同學的姓名,並求出誰的名字最長。

    char a[4][20] = {"weizijian", "wanhao", "yaochengzheng", "wangxuewen"};

    unsigned long max = 0;

    for (int i = 0; i < 4;i++) {

        if (max < strlen(a[i])) {

             max = strlen(a[i]);

            }

    }

    for (int i = 0; i < 4; i++) {

        if (max == strlen(a[i])) {

            printf("姓名最長的時:%s\n", a[i]);

        }

    }

    //輸入字符串

    char c = 0;

    scanf("%c", &c);

    

    //輸入字符串

    char m[10] = {0};

    scanf("%s", m); //不需要加&,

    

    //輸入字符串數組

    char k[3][10] = {0};

    for (int i = 0; i < 3; i++) {

        scanf("%s", k[i]);

    }

    

    scanf("%s %s %s", k[0], k[1], k[2]);

    

    //對周圍的學生姓名,進行排序

    char name[][20] = {"wanhao", "weizijian", "wangxuewen", "yaochengzheng"};

    

    for (int i = 0; i < 4 - 1; i++) {

        for (int j = 0; j < 4- 1 - i; j++) {

            if (strcmp(name[i], name[i+1]) > 0) {

                char a[20] = {0};

                strcpy(a, name[i]);

                strcpy(name[i], name[i + 1]);

                strcpy(name[i + 1], a);

            }

        }

    }

    //輸出結果

    for (int i = 0; i < 4; i++) {

        printf("%s\n", name[i]);

    }

    

    

    //冒泡排序

    int array[5] = {12, 33, 22,1, 20};

    for (int i = 0;i < 5 - 1; i++) {

        for (int j = 0; j < 5 - 1 - i; j++) {

            if (array[j] > array[j + 1]) {

                int temp = array[j];

                array[j] = array[j + 1];

                array[j + 1] = temp;

            }

        }

    }

    for (int i = 0; i < 5; i++) {

        printf("%d\n", array[i]);

    }

    */

    //1、(**)有一個 3 行 4 列的二維數組,要求編程找出最大的元素,並輸出所 在的行和列。

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

//    int max = 0;

//    for (int i = 0; i < 3; i++) {

//        for (int j = 0; j < 4; j++) {

//            if (max < a[i][j]) {

//                max = a[i][j];

//            }

//        }

//    }

//    for (int i = 0; i < 3; i++) {

//        for (int j = 0; j < 4; j++) {

//            if (max == a[i][j]) {

//                printf("最大值在%d行%d列\n", i + 1, j+ 1);

//            }

//        }

//    }

  //2、(**)輸入 6 個字符串,並對它們按從小到大的順序排序后輸出。

//    char a[6][20] = {0};

//    printf("請輸入6個字符串:");

//    for (int i = 0; i < 6; i++) {

//        scanf("%s", a[i]);

//    }

//    for (int i = 0; i < 6 - 1; i++) {

//        for (int j = 0; j < 6 - 1 - i; j++) {

//            if (strcmp(a[j], a[j + 1])) {

//                char b[20] = {0};

//                strcpy(b, a[j]);

//                strcpy(a[j], a[j + 1]);

//                strcpy(a[j + 1], b);

//            }

//        }

//    }

//    for (int i = 0; i < 6; i++) {

//        printf("%s\n", a[i]);

//    }

    

    

    //3、(**)隨機生成一個三維數組,編程求深度的平均值,保存在一個二維數組 中(相當於一個魔方從上面看)。

//    int a[4][5][6] = {0};

//    float b[4][5] = {0};

//    

//    for (int i = 0; i < 4; i++) {

//        for (int j = 0; j < 5; j++) {

//            for (int k = 0; k < 6; k++) {

//                a[i][j][k] = arc4random() % 20;

//                printf("a[%d][%d][%d] = %3d ", i, j, k, a[i][j][k]);

//                }printf("\n");

//        }

//    }

//    for (int j = 0; j < 5; j++) {

//        for (int k = 0; k < 6; k++) {

//            float sum = 0.0;

//            for (int i = 0; i < 4; i++) {

//                sum = sum + a[i][j][k];

//                b[j][k] = sum;

//            }

//         printf("b[%d][%d] = %5.2f ", j, k, b[j][k] / 4);

//        }printf("\n");

//    }

   return 0;

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM