找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3680

积分

0

好友

492

主题
发表于 2 小时前 | 查看: 3| 回复: 0

从计算整数位数到打印帕斯卡三角,掌握一门编程语言的最佳途径莫过于亲手实践。如果你是 C# 与 .NET 的初学者,这 10 个浓缩了循环、条件判断与数学逻辑的经典小程序,或许能帮你打通任督二脉。别眼高手低,试着不看答案,先自己敲一遍,看看会卡在哪一步。

1. 计算整数的位数

这是一个基础练习,关键在于如何用 while 循环剥离每一位数字。

using System;

class CountDigits {
    static void Main() {
        Console.WriteLine("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());
        int count = 0;
        while (num != 0) {
            num /= 10;
            count++;
        }
        Console.WriteLine("Number of digits: " + count);
    }
}

2. 检查完全平方数

在这个例子中,你会学到 Math.Sqrt 的用法。将开方后的结果强制转回 int,再平方比对,是一个经典的小技巧。

using System;

class PerfectSquareCheck {
    static void Main() {
        Console.WriteLine("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());
        int sqrt = (int)Math.Sqrt(num);
        if (sqrt * sqrt == num)
            Console.WriteLine("Perfect Square");
        else
            Console.WriteLine("Not a Perfect Square");
    }
}

3. 检查回文数

回文数检查要反转数字并对比原值,很考验对取模 % 和除法 /= 运算的理解。

using System;

class PalindromeNumber {
    static void Main() {
        Console.WriteLine("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());
        int originalNumber = num;
        int reversedNumber = 0;
        while (num > 0) {
            int remainder = num % 10;
            reversedNumber = reversedNumber * 10 + remainder;
            num /= 10;
        }
        if (originalNumber == reversedNumber)
            Console.WriteLine("Palindrome Number");
        else
            Console.WriteLine("Not a Palindrome Number");
    }
}

4. 实现选择排序

这段代码会让你体会到双层 for 循环的威力。选择排序通过不断寻找最小值并交换,完成数组的原地排序。

using System;

class SelectionSort {
    static void Main() {
        int[] arr = { 64, 25, 12, 22, 11 };
        for (int i = 0; i < arr.Length - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < arr.Length; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            int temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
        }
        Console.Write("Sorted Array: ");
        foreach (int element in arr) {
            Console.Write(element + " ");
        }
    }
}

5. 生成简单金字塔图案

利用空格和星号的数量关系构建图案,是锻炼嵌套循环与空间想象力的绝佳方式。你能一眼看出 2 * i - 1 这个公式的含义吗?

using System;

class PyramidPattern {
    static void Main() {
        Console.WriteLine("Enter the number of rows: ");
        int rows = Convert.ToInt32(Console.ReadLine());
        for (int i = 1; i <= rows; i++) {
            for (int j = 1; j <= rows - i; j++) {
                Console.Write(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                Console.Write("*");
            }
            Console.WriteLine();
        }
    }
}

6. 计算矩形的面积和周长

这个程序展示了 double 类型的输入处理与基本的算术运算,简单却实用。

using System;

class Rectangle {
    static void Main() {
        Console.WriteLine("Enter length: ");
        double length = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Enter breadth: ");
        double breadth = Convert.ToDouble(Console.ReadLine());
        double area = length * breadth;
        double perimeter = 2 * (length + breadth);
        Console.WriteLine("Area: " + area);
        Console.WriteLine("Perimeter: " + perimeter);
    }
}

7. 反转数字

反转数字的逻辑和回文检查有异曲同工之妙,但这里更纯粹地关注数字本身的重构过程。

using System;

class NumberReverse {
    static void Main() {
        Console.WriteLine("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());
        int reversedNumber = 0;
        while (num > 0) {
            int remainder = num % 10;
            reversedNumber = reversedNumber * 10 + remainder;
            num /= 10;
        }
        Console.WriteLine("Reversed Number: " + reversedNumber);
    }
}

8. 打印帕斯卡三角形

帕斯卡三角形引入了组合数的概念。请注意 number = number * (i - j) / (j + 1) 这一行,它巧妙地在循环内递推计算了每一项的值。

using System;

class PascalTriangle {
    static void Main() {
        Console.WriteLine("Enter the number of rows: ");
        int rows = Convert.ToInt32(Console.ReadLine());
        for (int i = 0; i < rows; i++) {
            int number = 1;
            Console.Write(new string(' ', rows - i));
            for (int j = 0; j <= i; j++) {
                Console.Write(number + " ");
                number = number * (i - j) / (j + 1);
            }
            Console.WriteLine();
        }
    }
}

9. 计算数字的幂

不必自己费劲写循环了,直接调用 Math.Pow 即可高效完成指数运算。

using System;

class Power {
    static void Main() {
        Console.WriteLine("Enter the base: ");
        double baseNum = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Enter the exponent: ");
        int exponent = Convert.ToInt32(Console.ReadLine());
        double result = Math.Pow(baseNum, exponent);
        Console.WriteLine("Result: " + result);
    }
}

10. 检查 Disarium 数

判断一个数是否等于其每一位的“位次方”之和的 Disarium 数逻辑没那么直观。这段代码展示了如何混合使用字符串与数学方法来拆解问题。

using System;

class DisariumNumber {
    static void Main() {
        Console.WriteLine("Enter a number: ");
        int num = Convert.ToInt32(Console.ReadLine());
        string numString = num.ToString();
        int sum = 0;
        for (int i = 0; i < numString.Length; i++) {
            sum += (int)Math.Pow(int.Parse(numString[i].ToString()), i + 1);
        }
        if (sum == num)
            Console.WriteLine("Disarium Number");
        else
            Console.WriteLine("Not a Disarium Number");
    }
}

这些短小精悍的程序片段就像乐高积木,虽然基础,却是构建复杂系统不可或缺的部分。在 云栈社区,还有很多和你一样热衷于钻研技术底层的同道中人,欢迎常来交流心得,一起在编程的道路上稳步成长。




上一篇:复杂指令集CISC的前世今生:为何它曾是CPU设计的必然选择?
下一篇:嵌入式轻量INI解析库minIni:零动态内存,适配任意文件系统
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-6-1 05:36 , Processed in 0.956746 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表