*************** 二维数组 ***************

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------



//  二维数组

//

//  Created by 李佳乐 on 15-3-15.

//  Copyright (c) 2015 gongsimingzi. All rights reserved.

//


/*

 c语言中,如果某一个数据需要用两个数据才能表示,可以使用二维数组

 语法

 

 数组数据类型 数组名[常量表达式][常量表达式]

 

    元素类型 数组名[行数][列数]

 

 */

#include <stdio.h>


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

    //定义一个二维数组

    int nums[2][2];

    

    /*  逻辑结构

     |------|------|

     |  0,0 |  0,1 |

     |      |      |

     |------|------|

     | 1,0  |  1,1 |

     |      |      |

     |------|------|

     */

    


    return 0;

}




//  二维数组元素的引用

//

//  Created by 李佳乐 on 15-3-15.

//  Copyright (c) 2015 gongsimingzi. All rights reserved.

//


#include <stdio.h>


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

  

    //定义一个二维数组(3 * 4)

    

    int num[3][4];

    

    //初始化

    //1 定义后进行初始化

    //int num1[3][4];

    num1[0][0] = 1;

    num1[2][3] = 2;

    int input = 0;

    

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

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

            //初始化

            num[i][j] = input;

            input++;

        }

    }

    

    //行与列调换

    

    int input = 0;

    

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

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

            //初始化

            num[j][i] = input;

            input++;


    // 2 定义时进行初始化

            

    //1> 完全初始化

     //       int num2[3][4] = {};

    //相当于一个只有三个元素的一维数组

    //而每一个一维数组又是一个具有4个元素的一维数组{1,2,3,4}

    

            int num2[3][4] ={

                {1,2,3,4},

                {5,6,7,8},

                {9,10,11,12}

            };

            

            int num3[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

            

       //一维数组的下标可以省略

        //二维数组可以省略第一个下标

            //多维数组

            //int num[2][3][4];

            

            int num4[][4] = {

                1,2,3,4,

                5,6,7,8,

                9,10,11,12

            }

            

    return 0;

}




//  二维数组练习,求平均分

//

//  Created by 李佳乐 on 15-3-15.

//  Copyright (c) 2015 gongsimingzi. All rights reserved.

//


#include <stdio.h>


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

    

    

    //定义变量和

    int sum = 0;

    

    //对数组初始化


    

   /*

    

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

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

            sum += nums[i][j];

        }

    }

    

    */

    int nums[3][5] = {

        80,61,59,85,76,

        75,65,63,87,77,

        92,71,88,90,76};


    

    

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

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

            sum += nums[j][i];

        }

        

        

        

   

        printf("%d个人的平均成绩为%lf\n", i + 1,sum * 1.0 / 3);

    }

    

    

    

    return 0;

}




//  二维数组的内存结构

//

//  Created by 李佳乐 on 15-3-15.

//  Copyright (c) 2015 gongsimingzi. All rights reserved.

//


#include <stdio.h>

/*

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

    // 定义一个二维数组

    int nums[2][3];

    

    //将地址一次打印出来

    

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

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

            printf("[%d][%d]\t%p\n",i,j,&nums[i][j]);

        }

    }

    

    

    // 二维数组的第一个元素与子数组与二维数组的首地址一样

    printf("nums\t\t = \t%p\n",nums);

    printf("nums[0]\t = \t%p\n",nums[0]);

    printf("nums[0][0]\t = \t%p\n",&nums[0][0]);

    

    printf("nums[1]\t  =\t%p\n", nums[1]);

    printf("nums[1][0] =\t%p\n", &nums[1][0]);

    

    printf("%lu\n",sizeof(nums));

    printf("%lu\n",sizeof(0));

    printf("%lu\n",sizeof(1));

    return 0;

}

*/


#include <stdio.h>


int main()

{//定义一个二维数组

    int nums[2][3];

    //遍历数组

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

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

            //打印数组元素地址

            printf("nums[%d][%d]\t%p\n",i,j,&nums[i][j]);

          


        }

    }

    

    return 0;

}




//  二维数组作为参数

//

//  Created by 李佳乐 on 15-3-15.

//  Copyright (c) 2015 gongsimingzi. All rights reserved.

//

/*

#include <stdio.h>


void printArray(int arr[][3],int rows,int columns){

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

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

            printf("%d\t",arr[i][j]);

        }

        printf("\n");

    }

}


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

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

    

    printArray(nums,2,3);

    return 0;

}

*/



#include <stdio.h>


//定义一个遍历函数


void printArray(int arr[][3],int rows,int columns)

{

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

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

            printf("%d\t",arr[i][j]);

        }

        printf("\n");

    }

}


int main()

{

    //定义一个函数组

    int nums[2][3] = {7,8,6,5,4,3};

    

    printArray(nums, 2, 3);

    return 0;

}



//  练习-输入数字创建二维数组

//

//  Created by 李佳乐 on 15-3-15.

//  Copyright (c) 2015 gongsimingzi. All rights reserved.

//

/*

#include <stdio.h>


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

    //定义变量rows,cols

    int rows,cols;

    //提示输入

    printf("请输入两个数字\n");

    //接收输入

    scanf("%d",&rows);

    scanf("%d",&cols);

    

    //定义数组

    int nums[rows][cols];

    

    //利用循环初始化

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

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

            

            scanf("%d",&nums[i][j]);

        }


    }

    //打印输入结果

    printf("输入完毕,打印结果为\n");

    

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

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

            printf("%d\t",nums[i][j]);

        }

        printf("\n");

    }

    

    return 0;

}

*/


#include <stdio.h>


int main(){

    //提示用户输入

    printf("请输入两个数字\n");

    //定义变量rows,cols

    int rows,cols;

    //接收输入

    scanf("%d",&rows);

    scanf("%d",&cols);

    //定义数组

    int nums[rows][cols];

    

    //利用循环对数组进行初始化

    

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

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

            scanf("%d",&nums[i][j]);

        }

    }

    

    printf("输入完毕,打印结果为\n");

    //利用循环对数组元素打印

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

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

            printf("%d\t",nums[i][j]);

        }

        printf("\n");

    }

    

    

    return 0;

}



迷宫

//

//  Created by 李佳乐 on 15-3-15.

//  Copyright (c) 2015 gongsimingzi. All rights reserved.

//



#include <stdio.h>

#define ROW 6

#define COL 6


void printMap(char map[][6]) {

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

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

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

        }

        printf("\n");

    }

}



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

    

    // 1,设计字符数组,用于显示地图与玩家的位置

    char map[ROW][COL]={

        {'#','#','#','#','#','#'},

        {'#','O','#','#',' ',' '},

        {'#',' ','#','#',' ','#'},

        {'#',' ',' ','#',' ','#'},

        {'#','#',' ',' ',' ','#'},

        {'#','#','#','#','#','#'}

    };

    

    char c, cTemp, temp;

    int i = 1, j = 1;

    

    while(1) {

        

        system("clear");

        

        // 2,打印地图

        printMap(map);

        // 判断用户是否赢了

        if(j == COL - 1) break;

        

        // 3,提示用户输入

        printf("请玩家操作:w(),s(),a(),d()\n");

        // 4,获取用户数组

        scanf("%c", &c);

        scanf("%c", &cTemp);

        // 5,判断wsad进行处理

        switch (c) {

            case 'w': // 向上  i - 1

                // 6,判断下一个位置是否可以走

                //      如果可以就走过去(交换空格与0的位置)

                // 7,判断是否已经走出来了

                if(map[i - 1][j] == ' ') {

                    // 可以走

                    // 先将 i,j i-1,j 进行交换

                    temp = map[i][j];

                    map[i][j] = map[i - 1][j];

                    map[i - 1][j] = temp;

                    

                    i--;

                }

                

                break;

            case 's': // 向下  i + 1

                if(map[i + 1][j] == ' ') {

                    temp = map[i][j];

                    map[i][j] = map[i + 1][j];

                    map[i + 1][j] = temp;

                    

                    i++;

                }

                

                break;

            case 'a': // 向左  j - 1

                if(map[i][j - 1] == ' ') {

                    temp = map[i][j];

                    map[i][j] = map[i][j - 1];

                    map[i][j - 1] = temp;

                    

                    j--;

                }

                

                break;

            case 'd': // 向右  j + 1

                if(map[i][j + 1] == ' ') {

                    temp = map[i][j];

                    map[i][j] = map[i][j + 1];

                    map[i][j + 1] = temp;

                    

                    j++;

                }

                

                

                break;

        }

        

    }

    

    printf("恭喜你通关\n");

    

    return 0;

}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值