C#学习之旅--Day05-循环嵌套--二维数组-2048

一、循环嵌套

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元素移到末尾

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值