------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;
}