人类思维--计算机逻辑思维
逻辑思维--代码实现

写书法:
描红——临摹——碑贴——自成一体——草

复习:
数组:一维,二维,多维
一维:豆角。连续,同一类型。
定义:数据类型[] 数组名=new 数据类型[长度]{.,.,.,.};
赋值:数组名[下标] = 值
取值:数组名[下标]
灵活运用:与for循环的结合应用。
1.求最大值,最小值。
2.求总和,平均。
3.随机(生成下标)抽值。

数组的应用:
(一).冒泡排序。
1.冒泡排序是用双层循环解决。外层循环的是趟数,里层循环的是次数。
2.趟数=n-1;次数=n-趟数。
3.里层循环使用if比较相临的两个数的大小,进行数值交换。

作业:
1.先把冒泡排序写一遍。
int[] a = new int[8] { 9, 12, 7, 5, 15, 2, 1, 8 };
//冒泡排序。
for(int i=1;i<=a.Length-1;i++) //趟数
{
for (int j = 1; j <= a.Length - i; j++)//次数
{
if(a[j-1] > a[j])
{
int t = a[j - 1];
a[j - 1] = a[j];
a[j] = t;
}
}
}

//显示
for(int k=0;k<a.Length;k++)
{
Console.WriteLine(a[k]);
}
2.使用冒泡排序,做青歌赛的打分程序。要求去掉两个最高,两个最低分,求平均得分。
int[] a = new int[10] { 10, 12, 6, 9, 5, 4, 3, 17, 1, 15 };
int i, j, temp = 0, sum = 0;
double avg = 0.0;

for (i = 1; i < a.Length; i++)
{
for (j = 1; j <= a.Length - i; j++)
{
if (a[j - 1] < a[j])
{
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
}
}
Console.WriteLine("去掉两个最高分,去掉两个最低分后分别得:");
for (i = 2; i <= a.Length - 3; i++)
{
Console.Write(a[i] + "分\t");
sum += a[i];
}
Console.WriteLine();
avg = 1.0 * sum / (a.Length - 4);
Console.WriteLine("得分总和为" + sum + "分。\t");
Console.WriteLine("平均分为" + avg + "分。\t");

(二).折半查找。
前提:数组必须是有序的。
思路:用两个变量分别代表上限(top)和下限(bottom)的下标,再用一个变量代表中间(mid)的下标。
1.求中间下标:mid = (top+bottom)/2
2.上限下标下移:top = mid+1. 假设数组是升序排列。
3.下限下标上移:bottom = mid-1;
4.循环条件是:bottom>=top
static void Main(string[] args)
{
int[] a = new int[] { 3, 5, 7, 9, 11, 13, 14, 18 };

Console.Write("请输入要找的数:");
int find = Convert.ToInt32(Console.ReadLine());

int top, bottom, mid; //上限下标,下限下标,中间下标
top = 0;
bottom = a.Length - 1;

while(bottom>=top) //只要下限下标还在上限下标的下面,就循环,否则没找到就结束。
{
//算中间下标
mid = (top + bottom) / 2;
//取中间的值
int n = a[mid];
if(n < find)
{
top = mid + 1; //调整上限的下标
}
else if(n>find)
{
bottom = mid - 1;// 调整下限的下标。
}
else
{
Console.WriteLine("找到了,在第" + mid + "个元素上");
break;
}
}
}

二维数组:
表格的模型。
定义:
数据类型[,] 数组名 = new 数组类型[维度长度,维度长度];
int[,] a = new int[3,4];
int[,] a = new int[3, 4]
{
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 0, 9, 8 }
};
赋值:
数组名[下标,下标] = 值;
a[0,0] = 5;
a[2,3] = 10;
取值:
数组名[下标,下标];
应用:
1.输入学生的学号语文数学成绩

int[,] a = new int[3, 4];
//输入
for(int i=0;i<3;i++)
{
//自动生成学号
a[i, 0] = i+1;
//语文成绩
Console.Write("语文:");
a[i, 1] = Convert.ToInt32(Console.ReadLine());
//数学成绩
Console.Write("数学:");
a[i, 2] = Convert.ToInt32(Console.ReadLine());
//计算总分
a[i, 3] = a[i, 1] + a[i, 2];
}

//显示
Console.WriteLine("学号\t语文\t数学\t总分");
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
Console.Write(a[i, j] + "\t");
}
Console.WriteLine();
}

2.推箱子

int[,] map = new int[10, 10]
{
{1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,1,0,0,0,1},
{1,8,2,0,0,1,0,0,0,1},
{1,0,0,0,0,1,1,1,0,1},
{1,0,0,0,0,0,0,1,0,1},
{1,0,0,0,1,0,0,1,0,1},
{1,0,0,0,1,0,0,0,0,1},
{1,1,1,1,1,0,0,0,0,1},
{1,0,0,0,0,0,0,0,9,1},
{1,1,1,1,1,1,1,1,1,1}
};
// //把地图显示出来。

for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (map[i, j] == 1)
{
Console.Write("■");
}
else if (map[i, j] == 0)
{
Console.Write(" ");
}
else if (map[i, j] == 2)
{
Console.Write("□");
}
else if (map[i, j] == 9)
{
Console.Write("★");
}
else if (map[i, j] == 8)
{
Console.Write("♀");
}
}
Console.WriteLine();
}

转载于:https://www.cnblogs.com/Claires/p/4190971.html

c#(6)——数组的应用和二维数组相关推荐

  1. 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )

    文章目录 一.抽象 二维数组 业务函数 1.二维数组 打印函数 2.二维数组 排序函数 二.完整代码示例 一.抽象 二维数组 业务函数 1.二维数组 打印函数 注意 , 二维数组 作为 函数参数 输入 ...

  2. 减小程序规模!稀疏数组Sparsearray,数据结构二维数组与稀疏数组转换,Java实现

    文章目录 基本介绍 应用实例 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方法是: ①记录数组一共有几行几列,有多少个不同的值(0除外) ...

  3. java 二维数组位置_java 找到二维数组指定元素的位置

    这个是代码编译时没有问题运行出错.主要功能是首先将txt格式文本导入二维数组,然后在二维数组中查找指定元素的行号和列号.运行结果出错显示为:importjava.util.*;importjava.i ...

  4. c语言二维数组 ppt,C语言二维数组与指针.ppt

    C语言二维数组与指针.ppt 好好考,全国计算机等级考试 二级C语言,第12讲 二维数组与指针,二维数组的定义 数组元素的引用及初始化 二维数组和指针 二维数组名和指针数组作为实参 二维数组程序举例 ...

  5. 13.请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。

    13.请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中.二维数组中的数已在主函数中 ...

  6. C 二维数组,以及自定义二维数组

    C 二维数组,以及自定义二维数组 我们通常情况下是这样定义一个二维数组的: int a[10][15]; 我们分别查看一下a,a[0],*a 都是一样的值吧 我们可以这么理解: a是一个数组的数组 a ...

  7. Java 数组(三)二维数组

    如果一维数组的各个元素仍然是一个数组,那么它就是一个二维数组.二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,第二个下标代表所在的列. 一.二维数组的创建 1.先声明, ...

  8. Java二维数组详解:二维数组的声明和初始化,以及获取二维数组的值

    为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来.二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列.下面 ...

  9. C语言编程>第七周 ⑧ 请编一个函数void fun(int a[M][N],int b[N]),c指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入b所指一维数组中。

    例题:请编一个函数void fun(int a[M][N],int b[N]),c指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入b所指一维数组中.二维数组中的数己在主函数中赋予. ...

  10. js一维数组,api,二维数组

    1.定义数组 空数组 1.数组字面量:[ ] var 变量名 = [ ]://定义一个空的数组把数组保存到变量中 2.新的数组对象 var 变量名 = new Array()://定义一个新的数组对象 ...

最新文章

  1. ping不通是不是就真不通?
  2. ORACLE SQL开发where子句之case-when
  3. python 语言教程(2)基础语法之标识符
  4. 华为重磅反击,鸿蒙来了!
  5. dll侧加载_win7系统开机提示xxxdll模块已加载但找不到入口点的解决方法
  6. EXTJS+JSP上传文件带进度条
  7. 某大厂外包员工在工作群抢新年红包,却被要求退回...
  8. java怎么查问题,java线上问题排查(日志、资源、代码定位)
  9. linux lsof 端口 字母,linux lsof/netstat查看进程和端口号相关命令:
  10. 微信小程序遇到的程序异步执行导致数据库读写异常的问题
  11. 求生之路4的联机方法和秘籍
  12. 【计算机网络】3-20假定1km长的CSMA/CD网络的数据率为1Gbit/s。设信号在网络上的传播速率为200000 km/s。求能够使用此协议的最短帧长。
  13. NYOJ -1364 (第十一届河南省赛)
  14. bootloader相关
  15. ubuntu16.04 配置远程桌面
  16. 载图工具snipaste
  17. squeeze的意义
  18. Nginx服务器概述
  19. 中职教资证计算机应用,中职计算机教师资格证只能教中职学校的吗
  20. 家乡的春节html,家乡的春节作文(通用10篇)

热门文章

  1. CondLaneNet | 使用动态卷积核预测每个车道线实例
  2. 商汤校招 | 春笋计划”
  3. 只限女生!谷歌 2020 Women Techmakers 奖学金项目申请开启!
  4. 更好也更快!最先进的图像去模糊算法DeblurGAN-v2
  5. Scrapy网络爬虫框架实际案例讲解,Python爬虫原来如此简单!
  6. 收藏 | 使用Pytorch从头实现Canny边缘检测
  7. CVPR2021 | 最新CVPR2021论文抢先看,附全部下载链接!
  8. 最近目标检测新范式汇总SparseRCNN,OneNet,DeFCN等
  9. linux git 发邮件,gitlab发邮件基于sendmail
  10. java 微信证书文件,CertificateDownloader