目录
[一、C# 基础练习:输入输出与变量操作](# 基础练习:输入输出与变量操作)
[1. 控制台输入输出 + 公式计算](#1. 控制台输入输出 + 公式计算)
[2. 梯形面积计算](#2. 梯形面积计算)
[3. 变量交换(两种方法)](#3. 变量交换(两种方法))
[二、C# 位运算:二进制底层运算](# 位运算:二进制底层运算)
[6 种核心位运算速查](#6 种核心位运算速查)
[三、if 条件判断:逻辑分支核心](#三、if 条件判断:逻辑分支核心)
[1. 单分支 if](#1. 单分支 if)
[2. 双分支 if...else](#2. 双分支 if...else)
[3. 多分支 if...else if...else](#3. 多分支 if...else if...else)
[4. 嵌套 if](#4. 嵌套 if)
[四、if 实战案例:4 个经典场景](#四、if 实战案例:4 个经典场景)
[1. 判断奇偶数](#1. 判断奇偶数)
[2. 基础闰年判断(简化版)](#2. 基础闰年判断(简化版))
[3. 完整闰年判断](#3. 完整闰年判断)
[4. 停车费计算(+ 三目运算符)](#4. 停车费计算(+ 三目运算符))
[五、switch 条件判断:多分支优化](#五、switch 条件判断:多分支优化)
[1. 基础 switch(数字判断)](#1. 基础 switch(数字判断))
[2. 多 case 合并](#2. 多 case 合并)
[3. switch 支持字符串](#3. switch 支持字符串)
[4. switch + 枚举](#4. switch + 枚举)
一、C# 基础练习:输入输出与变量操作
这部分是 C# 控制台程序的入门操作,核心掌握控制台输入输出 、数学公式计算 、变量交换三大基础技能。
1. 控制台输入输出 + 公式计算
通过Console.ReadLine()接收用户输入,int.Parse()将字符串转为整数,实现简单公式运算:
cs
// 需求:输入三个数,计算 (a + b) * c
Console.WriteLine("请输入第一个数:");
int num1 = int.Parse(Console.ReadLine()); // 读取输入并转整型
Console.WriteLine("请输入第二个数:");
int num2 = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第三个数:");
int num3 = int.Parse(Console.ReadLine());
Console.WriteLine((num1 + num2) * num3); // 输出计算结果
2. 梯形面积计算
套用数学公式,用变量存储上底、下底、高,计算后输出:
cs
// 梯形面积公式:(上底 + 下底) × 高 ÷ 2
int 上底 = int.Parse(Console.ReadLine());
int 下底 = int.Parse(Console.ReadLine());
int 高 = int.Parse(Console.ReadLine());
int 面积 = ((上底 + 下底) * 高) / 2;
Console.WriteLine(面积);
3. 变量交换(两种方法)
变量交换是编程基础,分为临时变量法 (通用)和运算交换法(无中间变量):
cs
int a = 3, b = 5;
// 方法1:临时变量法(最常用,推荐)
int temp = a; // temp存储a的值
a = b; // a赋值为b
b = temp; // b赋值为原a的值
// 方法2:加减法交换(无中间变量,仅适用于数字)
a = a + b; // a = 3+5=8
b = a - b; // b = 8-5=3
a = a - b; // a = 8-3=5
Console.WriteLine($"a={a},b={b}"); // 输出:a=5,b=3
二、C# 位运算:二进制底层运算
位运算直接对二进制位操作,执行效率极高,常用于底层开发、算法优化。先把数字转二进制,再按规则计算。
6 种核心位运算速查
| 运算符 | 名称 | 运算规则 | 示例 | |
|---|---|---|---|---|
<< |
左移 | 左移 n 位 = 原数 × 2ⁿ | 3 << 2 = 12 |
0000 0011 =>0000 1100 |
>> |
右移 | 右移 n 位 = 原数 ÷ 2ⁿ(取整) | 5 >> 2 = 1 |
0000 0101=>0000 0001 |
& |
按位与 | 同位全 1 才为 1 | 3 & 5 = 1 |
0011 & 0101 => 0001 |
| | | 位或 | 只要一个为1就为1 | 3|5 = 7 | 0011 | 0101 => 0111 |
^ |
按位异或 | 同位不同为 1 | 3 ^ 5 = 6 |
0011 ^ 0101 = 0110 |
~ |
按位非 | 0 变 1,1 变 0 | ~8 = -9 |
~8=-8-1=-9 |
代码示例
cs
// 左移:3<<2 → 3×2²=12
Console.WriteLine(3 << 2); // 输出12
// 右移:5>>2 → 5÷2²=1
Console.WriteLine(5 >> 2); // 输出1
// 按位与
Console.WriteLine(3 & 5); // 输出1
// 按位或
Console.WriteLine(3 | 5); // 输出7
// 按位异或
Console.WriteLine(3 ^ 5); // 输出6
// 按位非(快速公式:~x = -x-1)
Console.WriteLine(~8); // 输出-9
Console.WriteLine(~-8); // 输出7
三、if 条件判断:逻辑分支核心
if是最常用的条件流程控制,满足条件才执行对应代码,支持单分支、双分支、多分支、嵌套。
1. 单分支 if
仅满足条件时执行代码:
cs
int age = 20;
if (age > 18)
{
Console.WriteLine("已成年");
}
2. 双分支 if...else
二选一执行:
cs
int score = 85;
if (score >= 90)
{
Console.WriteLine("等级A");
}
else
{
Console.WriteLine("等级A-");
}
3. 多分支 if...else if...else
多条件逐一判断:
cs
int age = 30;
if (age >= 0 && age <= 14)
Console.WriteLine("总角");
else if (age > 14 && age <= 24)
Console.WriteLine("弱冠-豆蔻");
else if (age > 24 && age <= 40)
Console.WriteLine("三十而立");
else
Console.WriteLine("其他年龄段");
4. 嵌套 if
条件内再套条件,适合多维度判断:
cs
int age = 20;
string sex = "男";
if (sex == "男")
{
// 外层满足:是男生,再判断年龄
if (age >= 18)
Console.WriteLine("成年男性");
else
Console.WriteLine("未成年男性");
}
else
{
Console.WriteLine("女性");
}
四、if 实战案例:4 个经典场景
结合实际需求,用if解决业务逻辑,包含奇偶判断、闰年判断、停车费计算。
1. 判断奇偶数
用取模运算%,余数为 0 是偶数:
cs
int num = 9;
if (num % 2 == 0)
Console.WriteLine("偶数");
else
Console.WriteLine("奇数");
2. 基础闰年判断(简化版)
能被 4 整除就是闰年(不考虑 400 整除):
cs
int year = 2024;
if (year % 4 == 0)
Console.WriteLine("可能是闰年");
else
Console.WriteLine("不是闰年");
3. 完整闰年判断
规则:能被 4 整除且 不能被 100 整除,或能被 400 整除:
cs
int year = 2000;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
Console.WriteLine($"{year}是闰年");
else
Console.WriteLine($"{year}是平年");
4. 停车费计算(+ 三目运算符)
需求:轿车 5 元 / 小时,卡车 10 元 / 小时,摩托车 3 元 / 小时,不足 1 小时按 1 小时算。用三目运算符 简化if...else:
cs
Console.WriteLine("请输入车辆类型:");
string type = Console.ReadLine();
Console.WriteLine("请输入停车时长:");
double hour = double.Parse(Console.ReadLine());
// 不足1小时按1小时算
if (hour < 1) hour = 1;
// 三目运算:简化多条件赋值
double sum = type == "轿车" ? 5 * hour :
type == "卡车" ? 10 * hour : 3 * hour;
Console.WriteLine($"总费用:{sum}元");
五、switch 条件判断:多分支优化
switch专门用于固定值多分支判断 ,比if...else if更简洁,支持数字、字符串、枚举。
1. 基础 switch(数字判断)
匹配变量的固定值,default处理不匹配情况:
cs
int day = 3;
switch (day)
{
case 1:
Console.WriteLine("星期一");
break;
case 2:
Console.WriteLine("星期二");
break;
case 3:
Console.WriteLine("星期三");
break;
default:
Console.WriteLine("输入错误");
break;
}
2. 多 case 合并
多个值执行相同代码,可合并case:
cs
int month = 1;
switch (month)
{
// 1/3/5/7/8/10/12月都是31天,合并case
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
Console.WriteLine("31天");
break;
case 4:
case 6:
case 9:
case 11:
Console.WriteLine("30天");
break;
case 2:
Console.WriteLine("28/29天");
break;
}
3. switch 支持字符串
cs
string name = "张三";
switch (name)
{
case "张三":
case "小张":
Console.WriteLine("正确");
break;
default:
Console.WriteLine("错误");
break;
}
4. switch + 枚举
枚举是固定值集合,完美适配switch:
cs
// 定义季节枚举
enum Season { Spring, Summer, Autumn, Winter }
// 使用枚举
Season now = Season.Summer;
switch (now)
{
case Season.Spring:
Console.WriteLine("春天");
break;
case Season.Summer:
Console.WriteLine("夏天");
break;
default:
break;
}
六、核心知识点总结
- 基础操作 :
Console.ReadLine()接收输入,int.Parse()转类型,变量交换优先用临时变量法。 - 位运算 :直接操作二进制,
<<=×2ⁿ,>>=÷2ⁿ,&全 1 为 1,|有 1 为 1。 - if 分支 :单分支 / 双分支 / 多分支 / 嵌套,适合范围判断。
- switch 分支 :适合固定值判断,支持数字、字符串、枚举,代码更简洁。
- 实用技巧 :三目运算符简化简单
if...else,取模%判断奇偶,枚举优化固定值代码