一、循环嵌套
1.二维数组
for (int r = 0; r < 3; r++) //行
{
for (int c = 0; c < 3; c++)//列
{
Console.Write("老宋\t");
}
Console.WriteLine();
}
练习:
//外层4行 内层每次加一
/*
* #
* ##
* ###
* ####
*/
for (int r = 0; r < 4; r++)
{
for (int c = 0; c < r + 1; c++)
{
Console.Write("#");
}
Console.WriteLine();
}
/*
* ####
* ###
* ##
* #
*/
for (int r = 0; r < 4; r++)
{
for (int c = 0; c < r; c++)
Console.Write(" ");
for (int c = 0; c < 4 - r; c++)
Console.Write("#");
Console.WriteLine();
}
2.排序算法
/*
* 自定义排序算法(冒泡算法,相邻比较后换,选择算法,比较完后换)
* 2 8 6 1
* 将第一个元素设置为最小值
* 使用第一个元素 依次与后面元素 进行比较
* 1 8 6 2
* 将第二个元素设置为最小值
* 使用第二个元素 依次与后面元素 进行比较
*/
①冒泡算法
private static int[] SortArray01(int[] array)
{
for (int c = 0; c < array.Length - 1; c++)
{
for (int i = c + 1; i < array.Length; i++)
{
if (array[c] > array[i])
{
int tempt = array[c];
array[c] = array[i];
array[i] = tempt;
}
}
}
return array;
}
②.选择算法
private static int[] SortArray02(int[] array)
{
for (int c = 0; c < array.Length - 1; c++)
{
int minIndex = c;
for (int i = c + 1; i < array.Length; i++)
{
if (array[minIndex] > array[i])
{
minIndex = i;
}
}
if (minIndex != c)
{
int tempt = array[c];
array[c] = array[minIndex];
array[minIndex] = tempt;
}
}
return array;
}
3.练习
//定义检查数组中是否存在相同元素的方法
private static bool IsRepeating(int[] array)
{
for (int c = 0; c < array.Length - 1; c++)
{
for (int i = c + 1; i < array.Length; i++)
{
if (array[c] == array[i])
{
return true;
}
}
}
return false;
}
二、二维数组定义
//二维数组 [行,列]
int[,] array = new int[5, 3];
array[0, 2] = 6;
获取二维数组所有元素
foreach (int x in array)
{
Console.WriteLine(x);
}
array.GetLength(0) 行的长度
array.GetLength(1) 列的长度
for (int i = 0; i < array.GetLength(0); i++)
{
for (int c = 0; i < array.GetLength(1); c++)
{
Console.Write(array[i, c] + "\t");
}
Console.WriteLine();
}
1.练习:按行列打印数组
private static void PrintDoubleArray(int[,] Array)
{
for (int i = 0; i < Array.GetLength(0); i++)
{
for (int c = 0; c < Array.GetLength(1); c++)
{
Console.Write(Array[i, c] + "\t");
}
Console.WriteLine();
}
}
2.练习:录入不同学生不同科目成绩
/*
*在控制台中录入成绩
*请输入学生总数
*请输入科目数
*请输入第1个学生的第1门成绩:
*。。。。。。
*/
private static float[,] CreatScoreArray()
{
Console.WriteLine("请输入学生数");
int studentCount = int.Parse(Console.ReadLine());
Console.WriteLine("请输入科目数");
int subjectCount = int.Parse(Console.ReadLine());
float[,] scoreArray = new float[studentCount, subjectCount];
for (int i = 0; i < scoreArray.GetLength(0); i++)
{
for (int c = 0; i < scoreArray.GetLength(1); c++)
{
Console.WriteLine("请输入第{0}个人第{1}门成绩:", i + 1, c + 1);
scoreArray[i, c] = float.Parse(Console.ReadLine());
}
}
return scoreArray;
}
三、2048
1.算法思路
* 思路
* 上移
* --获取从上到下列数据,形成一维数组
* --合并数据
* --去零:将零元素移到末尾
* --相邻相同,则合并(将后一个元素累加到前一个元素,后一个元素清零)
* --去零:将零元素移到末尾
* --将一维数组元素 还原至原列
*
* 下移
* --获取从下到上列数据,形成一维数组
*--合并数据
* --去零:将零元素移到末尾
* --相邻相同,则合并(将后一个元素累加到前一个元素,后一个元素清零)
* --去零:将零元素移到末尾
* --将一维数组元素 还原至原列
*
* 左移
*
*
* 右移
2.算法编码所需方法
* 编码
* 1.定义去零方法(针对一维数组):将0元素移到末尾