3.C# —— 变量运算、位运算、条件判断

目录

[一、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;
}

六、核心知识点总结

  1. 基础操作Console.ReadLine()接收输入,int.Parse()转类型,变量交换优先用临时变量法
  2. 位运算 :直接操作二进制,<<=×2ⁿ,>>=÷2ⁿ,&全 1 为 1,|有 1 为 1。
  3. if 分支 :单分支 / 双分支 / 多分支 / 嵌套,适合范围判断
  4. switch 分支 :适合固定值判断,支持数字、字符串、枚举,代码更简洁。
  5. 实用技巧 :三目运算符简化简单if...else,取模%判断奇偶,枚举优化固定值代码
相关推荐
未来超低端科技研究所1 小时前
大恒工业相机c#开发,NET8跨平台使用(armlinux和x86linux)
linux·c#·工业相机·net8·大恒图像·跨平台开发
海盗12341 小时前
C#中使用MiniExcel 快速入门:读写 .xlsx 文件
开发语言·windows·c#
c#上位机1 小时前
C#项目中打包文件的三种方式
开发语言·c#
祀爱16 小时前
Asp.net core+ Layui 项目中编辑按钮传递数据的方法
前端·c#·asp.net·layui
雪豹阿伟21 小时前
C# —— 上位机行业解析与完整学习规划
c#·上位机
一念春风1 天前
记事本(C#)
开发语言·c#
wangl_921 天前
初探 C# 15 的 Union Types
java·开发语言·算法·c#·.net·.net core
雪豹阿伟1 天前
C# 与 .NET 生态系统概述
c#·上位机