1. 检查闰年
判断闰年的逻辑很简单:年份能被4整除但不能被100整除,或者能被400整除。这段代码展示了如何将用户输入转换为整数并进行条件判断。
using System;
class LeapYear {
static void Main() {
Console.WriteLine("Enter a year: ");
int year = Convert.ToInt32(Console.ReadLine());
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
Console.WriteLine("Leap Year");
else
Console.WriteLine("Not a Leap Year");
}
}
2. 反转数组
借助 Array.Reverse 方法,一行代码就能完成数组反转。当然,理解其背后的原理对深入学习算法与数据结构会有很大帮助。
using System;
class ArrayReverse {
static void Main() {
int[] arr = { 1, 2, 3, 4, 5 };
Array.Reverse(arr);
Console.Write("Reversed Array: ");
foreach (int element in arr) {
Console.Write(element + " ");
}
}
}
3. 回文检查
回文串正读反读都一样。这个例子先将字符串转为字符数组并反转,再与原始字符串比较,同时通过 StringComparison.OrdinalIgnoreCase 忽略了大小写,让判断更灵活。
using System;
class Palindrome {
static void Main() {
Console.WriteLine("Enter a string: ");
string input = Console.ReadLine();
char[] charArray = input.ToCharArray();
Array.Reverse(charArray);
string reversedString = new string(charArray);
if (input.Equals(reversedString, StringComparison.OrdinalIgnoreCase))
Console.WriteLine("Palindrome");
else
Console.WriteLine("Not a Palindrome");
}
}
4. 打印字符的ASCII值
每个字符在计算机中都对应一个整数编码,也就是ASCII值。通过强制类型转换 (int)ch,你可以轻松拿到想要的结果。
using System;
class ASCIIValue {
static void Main() {
Console.WriteLine("Enter a character: ");
char ch = Convert.ToChar(Console.ReadLine());
int asciiValue = (int)ch;
Console.WriteLine("ASCII Value: " + asciiValue);
}
}
5. 生成随机数
Random 类提供了一种生成伪随机数的简便方式。下面的循环会打印5个1到100之间的随机整数,这在模拟、测试等场景中很常用。
using System;
class RandomNumbers {
static void Main() {
Random random = new Random();
Console.WriteLine("Random Numbers: ");
for (int i = 0; i < 5; i++) {
Console.WriteLine(random.Next(1, 100));
}
}
}
6. 检查阿姆斯特朗数
阿姆斯特朗数(也叫自恋数)指的是一个n位数,其各位数字的n次方之和等于它本身。以下代码仅针对三位数做了计算:取余、立方、累加,最后比对。
using System;
class ArmstrongNumber {
static void Main() {
Console.WriteLine("Enter a number: ");
int num = Convert.ToInt32(Console.ReadLine());
int originalNumber, remainder, result = 0;
originalNumber = num;
while (originalNumber != 0) {
remainder = originalNumber % 10;
result += remainder * remainder * remainder;
originalNumber /= 10;
}
if (result == num)
Console.WriteLine("Armstrong Number");
else
Console.WriteLine("Not an Armstrong Number");
}
}
7. 冒泡排序
冒泡排序是最直观的排序算法之一。它像水里的气泡一样,把较大的元素逐步“浮”到数组末尾。尽管时间复杂度不占优势,但写起来非常直接。
using System;
class BubbleSort {
static void Main() {
int[] arr = { 64, 34, 25, 12, 22, 11, 90 };
for (int i = 0; i < arr.Length - 1; i++) {
for (int j = 0; j < arr.Length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
Console.Write("Sorted Array: ");
foreach (int element in arr) {
Console.Write(element + " ");
}
}
}
8. 二分查找
二分查找要求数组必须是有序的。它每次都将搜索范围缩小一半,效率远高于逐个遍历。注意 mid 的计算方式避免了潜在的溢出问题。
using System;
class BinarySearch {
static int Search(int[] arr, int x) {
int left = 0, right = arr.Length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] < x)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
static void Main() {
int[] arr = { 2, 3, 4, 10, 40 };
int x = 10;
int result = Search(arr, x);
if (result == -1)
Console.WriteLine("Element not present");
else
Console.WriteLine("Element found at index " + result);
}
}
9. 检查字符串是否为变位词
如果两个字符串包含完全相同的字符(忽略大小写),只是排列顺序不同,那它们就是变位词。这里用排序对齐后再比较,思路清晰。
using System;
class AnagramCheck {
static void Main() {
Console.WriteLine("Enter the first string: ");
string str1 = Console.ReadLine();
Console.WriteLine("Enter the second string: ");
string str2 = Console.ReadLine();
char[] charArray1 = str1.ToLower().ToCharArray();
char[] charArray2 = str2.ToLower().ToCharArray();
Array.Sort(charArray1);
Array.Sort(charArray2);
string sortedStr1 = new string(charArray1);
string sortedStr2 = new string(charArray2);
if (sortedStr1.Equals(sortedStr2))
Console.WriteLine("Anagrams");
else
Console.WriteLine("Not Anagrams");
}
}
10. 打印ASCII表
这个示例会遍历0到255,输出每个数值及其对应的字符。控制台可能会显示很多空白或特殊符号——想一想,为什么有些“字符”看起来什么也没打印?
using System;
class ASCIITable {
static void Main() {
Console.WriteLine("ASCII Table: ");
for (int i = 0; i < 256; i++) {
Console.WriteLine("ASCII Value: " + i + ", Character: " + (char)i);
}
}
}
动手抄一遍这些基础代码,比光看不练有效得多。如果你正在系统性地巩固 C# 编程基础,云栈社区也整理了不少关于面向对象与程序开发的实战心得,遇到问题时多查多问,成长的瓶颈往往就是这样慢慢突破的。