从计算整数位数到打印帕斯卡三角,掌握一门编程语言的最佳途径莫过于亲手实践。如果你是 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");
}
}
这些短小精悍的程序片段就像乐高积木,虽然基础,却是构建复杂系统不可或缺的部分。在 云栈社区,还有很多和你一样热衷于钻研技术底层的同道中人,欢迎常来交流心得,一起在编程的道路上稳步成长。