首页 > 其他分享 >第六次笔记-数组

第六次笔记-数组

时间:2022-09-29 12:22:23浏览次数:64  
标签:case dx int dy 笔记 break 数组 printf 第六次

六.数组

前言

​ 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

相关文章

  • Scrapy 入门笔记
    scrapy框架scrapyscrapy是什么?Scrapy是一个为了爬取网站数据,提取结构化数据而编写的应用框架。可以应用在包括数据挖掘、信息处理或存储历史数据等一系列的程序中。安......
  • Java基础Day5-数组
    一、数组声明创建首先必须声明数组变量,才能在程序中使用数组。声明数组变量的语法如下:dataType[]arrayRefVar;例如:int[]nums;Java语言使用new操作符来创建数组......
  • 【Kubernetes】K8s笔记(三):Kubernetes 中的核心概念 Pod
    目录0.为什么叫Pod1.Pod是Kubernetes中的核心对象2.使用YAML描述Pod3.使用kubectl操作Pod0.为什么叫PodPod这个词原意是“豌豆荚”,后来又延伸出“舱室......
  • 代码随想录day6● 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的
     哈希表理论基础 C++STL无序容器种类和关联式容器一样,无序容器只是一类容器的统称,其包含有4个具体容器,分别为 unordered_map、unordered_multimap、unordered_set......
  • 从一组数组中,取出某个字段不同的100条数据
    背景:在开发一个项目时,需要展示某个市区的公示信息,后端返回了500条数据,500条数据中包含有9个不同的村镇,产品的意思是500条数据只取100条,但100条数据取不同村镇的。所以最开......
  • 将有序数组转换为二叉搜索树
    给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过......
  • 数据结构与算法(数组&二维数组)
    数组集合、列表和数组集合:一个或多个元素构成的整体,里面的元素类型不一定相同,且是无序的列表:又称线性列表,有顺序且长度是可变的,没有索引有顺序,可以增删改数组:列表的实......
  • JS对象数组使用IndexOf方法得到索引
    获得数组里某一个对象的索引的最佳方法是什么呢?比如如下场景:varhello={hello:'world',foo:'bar'};varqaz={hello:'stevie',foo:'baz'}......
  • WPF 给 Pen 的 DashStyle 设置 0 0 的虚线数组将会让渲染线程消耗大量 CPU 资源
    给WPF的Pen的DashStyle属性设置00的虚线,在绘制几何图形时,绘制的几何图形的尺寸将关联渲染线程所使用的CPU资源。大约在周长大于500时,将可以从任务管理器上看......
  • .NET教程 - 数组(Array)
    更新记录转载请注明出处:2022年9月29日发布。2022年9月28日从笔记迁移到博客。System.Array说明Array类型是所有一维和多维数组的基类System.Array类型实现了ILi......