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;

}

 

转载于:https://www.cnblogs.com/xiaoxuetongxie/p/4234260.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值