数组
数组
数组的学习:
1.一维数组
2.二维数组
3.多维数组
数组属于===>数据结构!!!
数据结构:就是帮助我们更好的管理与使用数据!!!
数组:帮助我们存储一组相同类型的数据
定义
类型名 变量名[数字]
中括号里面的数字就表示当前这个数组能够存储的数据个数
一维数组
#include<stdio.h>
int main(){
int x[5];//数组的名字叫做x,这个数组能够帮助我们存储5个int类型的数据 还没有存储数据!!!
//如何才能把数组里面的数据拿出来使用呢???
// 10 20 30 40 50
//数组的下标/索引/可以理解为编号 0 1 2 3 4
//定义数组的同时为数组的成员初始化值
intx[5]={10,20,30,40,50};//第一种
printf("%d\n",x[0]); //10
printf("%d\n",x[1]); //20
printf("%d\n",x[2]); //30
printf("%d\n",x[3]); //40
printf("%d\n",x[4]); //50
return 0;
}
//将数组的前三个元素赋值,其余元素置为0
int x[5]={10,20,30};//第二种
printf("%d\n",x[0]); //10
printf("%d\n",x[1]); //20
printf("%d\n",x[2]); //30
printf("%d\n",x[3]); //0
printf("%d\n",x[4]); //0
//将数组所有的元素都置为0
int x[5]={0};
printf("%d\n",x[0]); //0
printf("%d\n",x[1]); //0
printf("%d\n",x[2]); //0
printf("%d\n",x[3]); //0
printf("%d\n",x[4]); //0
第一次小优化电子钢琴
#include <sdio.h>
#include <windows.h>
#include <mmsysem.h>
#pragma comment(lib,"winmm.lib")
int main(){
int x;
//有乐谱!!! 小星星 1155665 4433221 5544332 5544332
int Music[31]={
1,1,5,5,6,6,5,0,
4,4,3,3,2,2,1,0,
5,5,4,4,3,3,2,0,
5,5,4,4,3,3,2 };
int i;
for(i=0;i<31;i++){
if(Music[i]){ //Music[i]值是0就不会执行switch里的语句
switch (Music[i]){ //自动化的电子钢琴
case 1:mciSendString("close 1.mp3", 0, 0, 0); mciSendString("play 1.mp3", 0, 0, 0); break;
case 1:mciSendString("close 2.mp3", 0, 0, 0); mciSendString("play 2.mp3", 0, 0, 0); break;
case 1:mciSendString("close 3.mp3", 0, 0, 0); mciSendString("play 3.mp3", 0, 0, 0); break;
case 1:mciSendString("close 4.mp3", 0, 0, 0); mciSendString("play 4.mp3", 0, 0, 0); break;
case 1:mciSendString("close 5.mp3", 0, 0, 0); mciSendString("play 5.mp3", 0, 0, 0); break;
case 1:mciSendString("close 6.mp3", 0, 0, 0); mciSendString("play 6.mp3", 0, 0, 0); break;
case 1:mciSendString("close 7.mp3", 0, 0, 0); mciSendString("play 7.mp3", 0, 0, 0); break;
}
}
Sleep(300);//单位是毫秒 0.3秒 播放一次
}
return 0;
}
二维数组
#include <stdio.h>
int main(){
int x[5]={10,20,30,40,50};
// 行 列
int data[4][3]={//列0 1 2 //行
{5,10,20}, // 0
{20,5, 5}, // 1
{30,100,20}, // 2
{50,20,60}}; // 3
printf("%d\n", data[2][1]);//100
//我想计算 第二列的所有值的和 怎么搞???
//[0][2] [1][2] [2][2] [3][2]
int sum=0,i;
for(i=0;i<4;i++){
sum+=data[i][2];
}
printf("sum=%d\n",sum);
return 0;
}
#include <stdio.h>
int main(){
int data[3][3]={
{5,10,20},
{20,5,5},
{30,100,20}};
//计算5,5,20这条斜线
int sum=0,i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(j==i){
sum+=data[i][j];
}
}
}
printf("sum=%d\n",sum);
return 0;
}
#include <stdio.h>
#include <conio.h>
int main(){
int Map[6][5]={
1,1,1,1,1,
1,0,0,0,1,
1,0,1,0,1,
1,0,1,0,1,
1,0,1,2,1,
1,0,3,1,1}; //地图数据化
int i,j;
//人物的移动就是这个数字2的移动
//人物向下 数字2 行号+1
//人物向上 数字2 行号-1
//人物向左 数字2 行号-1
//人物向右 数字2 行号+1
//通过W,S,A,D 4个按键对应上下左右
for(i=0;i<6;i++){
for(j=0;j<5;j++){
switch(Map[i][j]){
case 0:printf(" ");break;
case 1:printf("▇");break;
case 2:printf("♀");break;
case 3:printf("★");break;
}
}
printf("\n");
}
//第一步.确定人物的位置
int dx,dy;
for (dy=0;dy<6;dy++){
int flag=0;//标记
for (dx=0;dx<5;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<6;i++){
for(j=0;j<5;j++){
switch(Map[i][j]){
case 0:printf(" ");break;
case 1:printf("▇");break;
case 2:printf("♀");break;
case 3:printf("★");break;
}
}
printf("\n");
}
}
return 0;
}
浙公网安备 33010602011771号