六.数组
前言
1.一维数组
2.二维数组
3.多维数组
数组属于数据类型中的一种
数据结构:就是帮助我们更好的管理与使用数据!!!
变量 数组 结构体 链表 队列 栈 堆 hash 树 图...
什么是变量??? 存储一个数据!!! 数据类型
人物属性 体重: 40kg 变化后45kg
int x=40; x=45; 用一个x变量去表示人物的体重
那如果我想表示50个人物的体重数据 怎么玩???
int x,x1,x2,x3....x49;//50个变量去存储50个人物的体重数据 很繁琐 很麻烦!!!
数组:帮助我们存储一组相同类型的数据
1.定义
用法: 类型名 变量名[数字]
中括号里面的数字就表示当前这个数组能够存储的数据个数
数据初始化:
int x[5] = { 10, 20, 30, 40, 50 };//第一种
printf("%d\n",x[0]);
printf("%d\n",x[1]);
printf("%d\n",x[2]);
printf("%d\n",x[3]);
printf("%d\n",x[4]);
这个是数据在数组中的状态,数据在数组中有各自的存储空间,需要通过小标的方式将它提取出来!
int x[5] = { 10, 20, 30};//表示将数组的前三个元素赋值,其余的用0补齐
printf("%d\n",x[0]);
printf("%d\n",x[1]);
printf("%d\n",x[2]);
printf("%d\n",x[3]);
printf("%d\n",x[4]);
int x[5] = { 0 };//将数组中的所有元素全部置零
printf("%d\n",x[0]);
printf("%d\n",x[1]);
printf("%d\n",x[2]);
printf("%d\n",x[3]);
printf("%d\n",x[4]);
-
二维数组定义与使用
int array[2][3];//定义了一个二维数组,有两个array[3]
-
二维数组初始化
int a[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
案例1,自动版电子钢琴
#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
int main()
{ //有乐谱!!! 小星星 1155665 4433221 5544332 5544332
int i;
int Music[31]
{//0-27 28个音符
1, 1, 5, 5, 6, 6, 5,
4, 4, 3, 3, 2, 2, 1,
5, 5, 4, 4, 3, 3, 2,
5, 5, 4, 4, 3, 3, 2
};
for (i = 0; i < 31; i++)//选出数组里面第i个元素所代表的值
{
switch (Music[i])
{
if (Music[i])
{ //Music[i]值是0 严谨!!!
case 1: mciSendString("close 1.mp3", 0, 0, 0); mciSendString("play 1.mp3", 0, 0, 0); break;
case 2: mciSendString("close 2.mp3", 0, 0, 0); mciSendString("play 2.mp3", 0, 0, 0); break;
case 3: mciSendString("close 3.mp3", 0, 0, 0); mciSendString("play 3.mp3", 0, 0, 0); break;
case 4: mciSendString("close 4.mp3", 0, 0, 0); mciSendString("play 4.mp3", 0, 0, 0); break;
case 5: mciSendString("close 5.mp3", 0, 0, 0); mciSendString("play 5.mp3", 0, 0, 0); break;
case 6: mciSendString("close 6.mp3", 0, 0, 0); mciSendString("play 6.mp3", 0, 0, 0); break;
case 7: mciSendString("close 7.mp3", 0, 0, 0); mciSendString("play 7.mp3", 0, 0, 0); break;
}
}
Sleep(350);//毫秒 0.35秒 播放一次
}
return 0;
}
案例2,求数组中数据的和
先看辅对角线的数组分别对应的坐标是(0,0)(1,1)(2,2)(3,3)可以看出是行=列
再看主对角线的数组分别对应的坐标是(0,3)(1,2)(2,1)(3,0)可以看出是行+列=3
所以代码如下:`
int main()
{ // 行 列 列:0 1 2 3 行
int data[4][4] = { 35, 46, 88, 97,// 0
75, 104, 89, 65,// 1
65, 14, 684, 99,// 2
78, 65, 58, 25 // 3
};//行和列都是从0开始计数的!
int sum1 = 0, sum2 = 0, i, j;
//这个其实是简写的表示定义了两个变量sum1,sum2,并用行i列j来赋值并初始化sum1,2
//0是可以不算的,只是用来初始化的
//就是定义了2个变量,分别存储对应对角线的值
for (i = 0; i <= 3; i++)
{ //行号
for (j = 0; j <= 3; j++)
{ //列号
if (j == i)
{
sum1 += data[i][j];
}
else if (j == 3 - i)
{
sum2 += data[i][j];
}
}
}
printf("sum1=%d\n",sum1);
//这段代码就被简化了
//int sum2 = 0 , a , b;
//for (a=0;a<=3;a++)
//{
// for (b = 0; b <=3 ; b++)
// {
// if (b==3-a)
// {
// sum2 += data[a][b];
// }
// }
//}
printf("sum2=%d\n", sum2);
int SUM = sum1 + sum2;
printf("SUM=%d\n",SUM);
案列3,简单的小游戏—人物移动
白色 数字1 障碍
蓝色 数字0 道路
五角星 数字2 终点
♀ 数字3 人物
‘w’:人物向上移动 行号-1
‘s’:人物向下移动 行号+1
‘a’:人物向左移动 列号-1
‘d’:人物向右移动 列号+1
人物移动就是数字4的移动
#include <stdio.h>
#include <conio.h>
int main()
{//绘制地图
int Map [8][13] = {1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,1,1,1,1,1,1,1,1,1,0,1,
1,0,1,0,0,0,0,0,0,0,1,0,1,
1,0,1,0,1,1,1,1,1,2,1,0,1,
1,0,1,0,1,1,1,1,1,1,1,0,1,
1,0,1,0,0,0,0,0,0,0,0,0,1,
1,3,1,1,1,1,1,1,1,1,1,1,1,
};
int i, j;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 13; j++)
{
switch (Map[i][j])
{
case 0:printf(" ");break;
case 1:printf("■");break;
case 2:printf("♀");break;
case 3:printf("★");break;
}
}
printf("\n");
}
int dy, dx;
//1.确定人物的位置
for (dy = 0; dy < 8; dy++) //行
{
int flag = 0;//标记
for (dx = 0; dx < 13; dx++) //列
{
if (Map[dy][dx] == 2)
{
flag = 1;
break;
}
}
if (flag)break;
}
printf("%d,%d\n", dy, dx); //就是人物的坐标位置
while(1)
{
switch (getch())
{
case 'w':
Map[dy][dx] = 0;
dy = dy - 1;
Map[dy][dx] = 2;
break;
case 's':
Map[dy][dx] = 0;
dy = dy + 1;
Map[dy][dx] = 2;
break;
case 'a':
Map[dy][dx] = 0;
dx = dx - 1;
Map[dy][dx] = 2;
break;
case 'd':
Map[dy][dx] = 0;
dx = dx + 1;
Map[dy][dx] = 2;
break;
}
for (i = 0; i < 8; i++)
{
for (j = 0; j < 13; j++)
{
switch (Map[i][j])
{
case 0:printf(" "); break;
case 1:printf("■"); break;
case 2:printf("♀"); break;
case 3:printf("★"); break;
}
}
printf("\n");//换行
}
}
标签:case,dx,int,dy,笔记,break,数组,printf,第六次
From: https://www.cnblogs.com/sys2410/p/16741014.html