C语言第五天课堂笔记<详细+注释>

**// 需求: 定义一个三行四列的二位数组
// int array[3][4] = {
// {1, 6, 112, 15 },
// {12, 17, 18, 22},
// {14, 11, 16, 12}};

// // 访问二位数组中的元素
// printf(“%d “,array[1][2]);
// printf(“%d “,array[2][1]);

// // 改变其中的一个值,赋值
// array[1][3] = 33;
// printf(“%d “,array[1][3]);

// // 声明一个4列五行整形二位数组 并且随机赋值[20, 100]之间的数;
// int array1[4][5] = {0};
// for (int i = 0; i < 4; i++) {
// for (int j = 0; j < 5; j++) {
// array1[i][j] = arc4random() % 81 + 20;
// printf(“%d “,array1[i][j]);
//
// }
// printf(“\n”);
// }
// printf(“\n”);
// for (int i = 0; i < 4; i++) {
// for (int j = 0; j < 5; j++) {
// printf(“%d “,array1[i][j]);
// }
// printf(“\n”);
// }

// 先随机赋值[10, 50]的数 ,再将一个3行6列二位数组的行和列交换后存储到另一个二位数组

// int Rows = 0;
// int Columns = 0;
// int a[100][100] = {0};
// int b[100][100] = {0};
// printf(“请输入二维数组的行数和列数:”);
// scanf(“%d%d”,&Rows,&Columns);
// for (int i = 0; i < Rows; i++) {
// for (int j = 0; j < Columns; j++) {
// a[i][j] = arc4random() % 41 +10;
// printf(“%d “,a[i][j]);
// }
// printf(“\n”);
// }
// for (int i = 0; i < Columns; i++) {
// for (int j = 0; j < Rows; j++) {
// b[i][j] = a[j][i];
// printf(“%d “,b[i][j]);
// }
// printf(“\n”);
// }

// 有一个3行4列的二维数组 要求编程找出最大元素,并输出所在的行和列
// 定义最小值 注意给初值 最好给数组中的一个数 或者给定大于数组中最大值的一个数

// int a[3][4] = {0},PositionRow = 0,PositionColumn = 0,
// MaxValue = 0,MinValue = 0;
// for (int i = 0; i < 3; i++) {
// for (int j = 0; j < 4; j++) {
// a[i][j] = arc4random() % 41 + 10;
// printf(“%d “,a[i][j]);
// if (MaxValue < a[i][j]) {
// MaxValue = a[i][j];
// PositionRow = i;
// PositionColumn = j;
// }
//
// }
// printf(“\n”);
// }
// printf(“最大元素是:%d”,MaxValue);
// printf(“\n它所在的行和列分别是:%d %d”,PositionRow + 1,PositionColumn + 1);
//
// // 定义最小值 注意给初值 最好给数组中的一个数 或者给定大于数组中最大值的一个数
// MinValue = a[0][0];
// for (int i = 0; i < 3; i++) {
// for (int j = 0; j < 4; j++) {
// if (MinValue > a[i][j]) {
// MinValue = a[i][j];
// PositionRow = i;
// PositionColumn = j;
// }
//
// }
// }
// printf(“\n最小元素是:%d”,MinValue);
// printf(“\n它所在的行和列分别是:%d %d”,PositionRow + 1,PositionColumn + 1);

// 字符串数组

// char str1[] = {‘i’, ‘p’, ‘h’}; // 字符数组
// char str2[] = “iph”;

//  这个字符串数组 保存了三个字符串且每个字符串长度是20个字符
//  注意:声明时 第二维下标代表每个字符串的长度 切记不要越界

// char str3[3][20] = {“wanglong”, “wuyuchen”, “zhuangyong”};
//
// // 取出字符串数组中 某一个字符串
// // 用一维下标取出整个字符串 从0开始
printf(“%s”,str3[1]);

// // 取出字符串数组中 单个字符
// printf(“%c”,str3[1][2]);
// printf(“\n%c”,str3[2][7]);
//
// // 赋值字符串
// // 字符串在进行赋值的时候需要使用字符串拷贝
// strcpy(str3[0], “lutaotao”);
// printf(“\n%s”,str3[0]);
//
// 1、创建⼀个字符串数组(内容是你周围⼀圈⼈的姓名),输出最⻓字符串的⻓度。
// char str[7][20] = {
// “liuhang”,
// “qiaodi”,
// “matingting”,
// “yangbingqi”,
// “zangjie”,
// “mazegong”,
// “lutaotao”
// };
// // 定义一个最大行数
// int max = (int)strlen(str[0]);
// // 定义一个最大值的位置
// int maxposition = 0;
// for (int i = 1; i < 7; i++) {
// if (max < strlen(str[i]))
// {
// max = (int)strlen(str[i]);
// maxposition = i;
// }
// }
// printf(“%s”,str[maxposition]);
// printf(“\n%d”,max);

//  2、创建⼀个字符串数组(内容是你周围⼀圈⼈的姓名),对字符串(英⽂)从⼩到⼤排序。
/**
 *  思路:
           1.声明字符串
           2.冒泡排序
           3.字符串比较
           4.字符串的交换
           5.打印结果

 */

// // 声明字符串
// char str[7][20] = {
// “liuhang”,
// “qiaodi”,
// “matingting”,
// “yangbingqi”,
// “zangjie”,
// “mazegong”,
// “lutaotao”
// };
//
// // 冒泡排序
// for (int i = 0; i < 6; i++) {
// for (int j = 0; j < 6 - i; j++) {
// // 字符串比较
// if (strcmp(str[j], str[j + 1]) > 0){
// // 字符串交换
// char temp[20] = {0};
// strcpy(temp, str[j]);
// strcpy(str[j], str[j + 1]);
// strcpy(str[j + 1], temp);
//
// }
//
//
// }
// }
// // 打印结果
// for (int i = 0; i < 7; i++) {
// printf(“%s\n”,str[i]);
// }
//
// // 声明一个两层三行四列的整形数组
// int array[2][3][4] = {
// {
// {10, 11, 12, 13},
// {45, 14, 8, 22},
// {47, 78, 99, 55},
// },
// {
// {17, 48, 48, 212},
// {15, 15, 84, 99},
// {77, 55, 66, 44},
// }
// };
//
// // 打印其中一个元素
// printf(“%d “,array[1][1][2]);
// printf(“%d “,array[1][2][1]);
//
// // 赋值三维数组中的元素
// array[1][2][1] = 42;
// printf(“%d “,array[1][2][1]);

//   需求: 声明一个三维数组 3层5行3列 随机赋值 [50-100]之间
/**
 *  思路: 1.声明一个三维数组
         2.遍历三维数组
         3.产生随机数赋值
         4.注意换行问题
 */

// int a[3][5][3] = {0};
// for (int i = 0; i < 3 ; i++) {
// for (int j = 0; j < 5; j++) {
// for (int k = 0; k < 3; k++) {
// a[i][j][k] = arc4random() % 51 + 50;
// printf(“%d “,a[i][j][k]);
// }
// printf(“\n”);
// }
// printf(“\n”);
// }
//
// 三维数组计算元素个数 下标相乘
//
/**
* 定义数组是可以不给第一维的个数
// 但是有三种情况
1.初值不够一行时 系统自动补齐一行,补0
2.初值刚刚够一行时 啥也不补
3.初值超过1行不足2行时 自动补齐第二行 补0
*/

//   用二维数组写一个简单的迷宫地图
/**
 *  思路:
    1.定义一个字符型的二维数组,明确大小
 */
char map[10][10] =
{
    {'#','#','#','#','#','#','#','#','#','#'},//0
    {'#','0',' ',' ',' ','#',' ','#',' ',' '},//1
    {'#','#',' ','#','#','#',' ','#',' ','#'},//2
    {'#','#',' ',' ',' ',' ',' ','#',' ','#'},//3
    {'#','#','#',' ','#','#',' ','#',' ','#'},//4
    {'#',' ','#',' ',' ','#',' ','#',' ','#'},//5
    {'#',' ','#',' ',' ','#',' ','#',' ','#'},//6
    {'#',' ','#',' ',' ','#',' ','#',' ','#'},//7
    {'#',' ',' ',' ',' ','#',' ',' ',' ','#'},//8
    {'#','#','#','#','#','#','#','#','#','#'},//9
    //0   1   2   3   4   5   6   7   8   9
};
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        printf("%c",map[i][j]);
    }
    printf("\n");
}
int a = 1;
int b = 1;
printf(" w 向上 s 向下 a 向左 d 向右\n");
printf("\n请输入方向:");
while(map[1][9] != '0'){
    char direction = 0;
    scanf("%c",&direction);
    if (direction == 'w') {
        if (map[a - 1][b] != '#') {
            char temp = map[a][b];
            map[a][b] = map[a - 1][b];
            map[a - 1][b] = temp;
            //  记录新的a,b
            a = a - 1;

            }
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                printf("%c",map[i][j]);
            }
            printf("\n");
        }
        printf("\n请输入方向:");
    }
    else if(direction == 's')
        {
            if (map[a + 1][b] != '#') {
                char temp = map[a][b];
                map[a][b] = map[a + 1][b];
                map[a + 1][b] = temp;
                a = a + 1;

                }
            for (int i = 0; i < 10; i++) {
                for (int j = 0; j < 10; j++) {
                    printf("%c",map[i][j]);
                }
                printf("\n");
            }
            printf("\n请输入方向:");
        }
        else if (direction == 'a')
        {
            if (map[a][b - 1] != '#') {
                char temp = map[a][b];
                map[a][b] = map[a][b - 1];
                map[a][b - 1] = temp;
                b =  b - 1;

                }
            for (int i = 0; i < 10; i++) {
                for (int j = 0; j < 10; j++) {
                    printf("%c",map[i][j]);
                }
                printf("\n");
            }
            printf("\n请输入方向:");
        }
        else if(direction == 'd')
        {
            if (map[a][b + 1] != '#') {
                char temp = map[a][b + 1];
                map[a][b + 1] = map[a][b];
                map[a][b] = temp;
                b = b + 1;

                }
            for (int i = 0; i < 10; i++) {
                for (int j = 0; j < 10; j++) {
                    printf("%c",map[i][j]);
                }
                printf("\n");
            }
            printf("\n请输入方向:");
        }



}
printf("你太牛逼了....");

    return 0;

}**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值