C#语句分支

using System;

namespace _分支语句 {
	class MainClass {
		public static void Main (string[] args) {
			#region 单分支语句if
//			// 语句的表达式:if(条件){语句块1;语句块2}
//			// 如果我们if语句只有一条语句,那么可以省略{}
//			if(0 == 0){
//				Console.WriteLine ("111");
//			}
//
//			//练习一:比较两个数的大小
//			Console.WriteLine ("请输入两个数比较大小");
//			int a = int.Parse(Console.ReadLine());
//			int b = int.Parse(Console.ReadLine());
//			if(a>b){
//				Console.WriteLine ("a的值比b大,a的值为{0}",a);
//			}	

			#endregion

			#region 双分支if...else
//			if(0 == 0){
//				Console.WriteLine ("成立!");
//			}else{
//				Console.WriteLine ("不成立");
//			}

			//练习二:比较三个数的大小
//			Console.WriteLine ("请输入三个数比较大小");
//			int intNum1 = int.Parse(Console.ReadLine());
//			int intNum2 = int.Parse(Console.ReadLine());
//			int intNum3 = int.Parse(Console.ReadLine());
//			if(intNum1 > intNum2 && intNum1 > intNum3){
//				Console.WriteLine ("最大值为{0}",intNum1);
//			}else if(intNum2 > intNum1 && intNum3 > intNum2){
//				Console.WriteLine ("最大值为{0}",intNum3);
//			}else{
//				Console.WriteLine ("最大值为{0}",intNum2);
//			}
//
//			if(intNum1 > intNum2){
//				Console.WriteLine (intNum1 > intNum3 ? intNum1:intNum3);
//			}else{
//				Console.WriteLine (intNum2 > intNum3 ? intNum2:intNum3);
//			}
			#endregion

			#region 多重分支语句if..else  if...else..if..-->switch
//			int intTemp = 10;
//			if(intTemp > 10){
//				Console.WriteLine ("111");
//			}else if(intTemp == 10){
//				Console.WriteLine ("222");
//			}else{
//				Console.WriteLine ("333");
//			}
//				
//			// 练习三:战斗积分排行榜,从键盘获取玩家的分数,如果分数>10000分显示为金牌,如果
//			// 该分数8000<分数<10000,显示为银牌;5000<分数<8000,显示为铜牌;分数<5000,显示未上榜
//			Console.WriteLine ("请输入你的得分数");
//			int score = int.Parse(Console.ReadLine());
//			if(score > 10000){
//				Console.WriteLine ("你获得了金牌!");
//			}else if(score < 10000 && score > 8000){
//				Console.WriteLine ("你获得了银牌!");
//			}else if(score < 8000 && score > 5000){
//				Console.WriteLine ("你获得了铜牌!");
//			}else{
//				Console.WriteLine ("很遗憾你没有上榜!");
//			}
//
//			// 练习四:输入一个年份,判断是否是闰年,如果是输出该年是闰年,不是输出不是闰年
//			// 闰年:能被400整除或者(能被4整除,但是不能被100整除)
//			Console.WriteLine ("输入你要查询的年份");
//			int year = int.Parse(Console.ReadLine());
//			if(year % 400 == 0 || (year % 4 ==0 && year % 100 != 0)){
//				Console.WriteLine (year + "年是闰年");
//			}else{
//				Console.WriteLine (year + "年不是闰年");
//			}
			#endregion

			#region switch语句块
//			char charTemp = 'A';
//			switch (charTemp) {
//			case 'A':
//				Console.WriteLine ("用户输入的是A");
//				break;
//			case 'B':
//				Console.WriteLine ("用户输入的是B");
//				break;
//			default:
//				Console.WriteLine ("default分支");
//			break;
//			}
//
//			// 练习五:从控制台输入1~7,对应的星期几打印出应该干什么。
//			Console.WriteLine ("请输入1~7之间的数");
//			int intDay = int.Parse(Console.ReadLine());
//			switch (intDay) {
//			case 1:
//				Console.WriteLine ("星期一是上课时间哦!");
//				break;
//			case 2:
//				Console.WriteLine ("星期二是上课时间哦!");
//				break;
//			case 3:
//				Console.WriteLine ("星期三是上课时间哦!");
//				break;
//			case 4:
//				Console.WriteLine ("星期四是上课时间哦!");
//				break;
//			case 5:
//				Console.WriteLine ("星期五是上课时间哦!");
//				break;
//			case 6:
//				Console.WriteLine ("星期六是上课时间哦!");
//				break;
//			case 7:
//				Console.WriteLine ("星期天是休息时间哦!");
//				break;
//			default:
//				Console.WriteLine ("小朋友呀;回去读一年级吧!!!");
//			break;
//			}
			#endregion

			/*
			 * 1.while循环
			 * 2.do..while循环
			 * 3.for循环
			 * 4.foreach循环
			 * 
			*/
			#region 循环语句之while循环
			// while循环的语法格式

			//while(表达式){
			//	语句块;
			//}

//			// 练习1:输出10句Hello World
//			int a = 0;
//			while (a < 10) {
//				Console.WriteLine ("Hello World");
//				a++;
//			}
//
//			// 练习2:累加1~100的和
//			int b = 1;
//			int sum = 0;
//			while (b <= 100) {
//				sum = sum +b;
//				b++;
//			}
//			Console.WriteLine (sum);

//			// 练习3:输出1~100之间的偶数和
//			int c = 1;
//			int evenSum = 0;
//			while (c <= 100) {
//				if(c % 2 == 0){
//					evenSum += c;
//				}
//				c++;
//			}
//			Console.WriteLine (evenSum);
//			// 练习4:输出1~100之间的所有的数字
//			int d = 1;
//			while (d <= 100) {
//				Console.WriteLine (d);
//				d++;
//			}
//			// 练习5:输出1~100之间所有能整除4的数
//			int e = 1;
//			while (e <= 100) {
//				if(e % 4 == 0){
//					Console.WriteLine (e);
//				}
//				e++;
//			}
//			// 练习6:输出1~100之间所有的奇数和
//			int f = 1;
//			int oddSum = 0;
//			while (f <= 100) {
//				if(f % 2 == 1){
//					oddSum += f;
//				}
//				f++;
//			}
//			Console.WriteLine (oddSum);

//			// 练习7:随机数
//			int stuNumber = new Random().Next(1,18);
//			Console.WriteLine ("请{0}号同学上来回答问题",stuNumber);
			#endregion

			#region  循环语句之 do..while循环
//			int a = 0;
//			do{
//				Console.WriteLine ("该语句只会被输出一次");
//			}while(a < 0);
//
			// 练习7:输出1~100之间所有能被3整除但是不能被4整除的所有奇数
			// 练习8:将之前的while循环的练习用do..while写一遍
//			int intNum3 = 1;
//			do {
//				if(intNum3 % 2 != 0 && intNum3 % 3 == 0){
//					Console.WriteLine (intNum3);
//				}
//				intNum3++;
//			} while (intNum3 <= 100);
			#endregion

			#region 循环语句 for
//			while (true) {
//				Console.WriteLine ("死循环");
//			}
//			for (; ;) {
//				Console.WriteLine ("死循环");
//			}
//			// for循环语句格式
//			for(初始化变量; 判断条件;自加或自减){
//				语句块1;
//			}
			// for循环的执行顺序
			// 1.初始化条件
			// 2.执行条件判断
			// 3.语句块1
			// 4.自加或自减或者其他要求的条件
			// 5.回到第二步
			// 6.条件不满足跳出for循环

//			// 练习9:求和1~100,使用for循环完成
//			int sum = 0;
//			for(int i=1; i <= 100; i++){
//				sum += i;
//			}
//			Console.WriteLine (sum);
//
			//练习10:输出1~100之间所有的奇数
//			for(int i = 1;i <= 100; i++){
//				if(i % 2 != 0){
//					Console.WriteLine (i);
//				}
//			}
			// 练习11:打印000~999之间所有的数字
//			for(int i = 1; i < 10; i++){
//				for (int j = 1; j < 10; j++) {
//					for (int k = 0; k < 10; k++) {
//						Console.WriteLine ("{0}{1}{2}",i,j,k);
//					}
//				}
//			}
			// 练习12:打印9*9乘法表
//			for(int i = 1; i <= 9; i++){
//				for(int j = 1; j <= i; j++){
//					Console.Write ("{0}x{1}={2}\t",j,i,i*j);
//				}
//				Console.WriteLine ();
//			}
			// 练习13:打印任意三角形 用*代替
//			for(int i = 1; i <= 3; i ++){
//				for(int j = 1; j <= i; j++){
//					Console.Write ("*");
//				}
//				Console.WriteLine ();
//			}
			// 练习14:输出
			/*
			 * 1
			 * 12
			 * 123
			*/
//			for(int i = 1; i <= 3; i++){
//				for(int j = 1; j <= i; j++){
//					Console.Write (j);
//				}
//				Console.Write ("\n");
//			}

//			Console.Write ("请输入要显示的行数:");
//			int lineNum = int.Parse(Console.ReadLine());
//			for (int i = 1; i <= lineNum; i++) {
//				for (int j = 1; j <= i; j++) {
//					Console.Write (j);
//				}
//				Console.WriteLine ();
//			}
			#endregion

			#region break关键字的用法
			// break:作用就是跳出当前循环
			// 1.break的用法
//			int sum = 0;
//			int index = 0;
//			for (int i = 1; i <= 100; i++) {
//				sum += i;
//				if(sum > 1000){
//					index = i;
//					break;
//				}
//			}
//			Console.WriteLine (sum - index);

			// 练习15:输出结果是什么?
//			for (int i = 0; i < 9; i++) {
//				for (int j = 0; j < 9; j++) {
//					break;
//					Console.WriteLine ("*****");
//				}
//				Console.WriteLine ("------");
//			}

			// 练习16:输出结果是什么?
//			for (int i = 1; i <= 100; i++) {
//				if(i % 2 == 0){
//					break;
//				}
//				Console.WriteLine ("-----");
//			}
			#endregion

			#region continue关键字的作用
			// contin:作用跳出剩下语句块,进入下一次循环
//			for (int i = 1; i <= 100; i++) {
//				if(i % 2 != 0){
//					continue;
//					Console.WriteLine ("该语句块永远不会执行");
//				}
//				Console.WriteLine (i);
//			}
			// 练习17:求整数1~100的累加值,排除个位为3的数
//			int sum = 0;
//			for (int i = 1; i <= 100; i++) {
//				sum += i;
//				if (sum % 10 == 3) {
//					continue;
//				}
//				Console.WriteLine (sum);
//			}
//
			// 练习18:输出1~100之间的所有整数和,当和值超过1500的时候停止,并输出该值
//			int sum = 0;
//			for (int i = 1; i <= 100; i++) {
//				if (sum > 1500) {
//					continue;
//				}
//				sum += i;
//			}
//			Console.WriteLine (sum);
			// 练习19:计算1~100的奇数累加和小于1000,打印该数
//			int sum = 0;
//			int index = 0;
//			for (int i = 1; i <= 100; i++) {
//				if (i % 2 != 0) {
//					if (sum > 1000) {
//						continue;
//					}
//					sum += i;
//					index = i;
//				}
//			}
//			Console.WriteLine (sum - index);
			// 练习20:打印输出平方值小于20000的最大整数
			// 方式1:
//			int i = 1;
//			while (i*i<20000) {
//				i++;
//			}
			// 方法2:
//			int i = 0;
//			for (i = 1; i * i < 20000; i++) {
//			}
//			Console.WriteLine (i-1);
			#endregion
		}
	}
}

<think>我们被要求回答关于C#分支语句的使用方法和示例,特别是if和switch语句。根据用户提供的引用,我们有关于switch语句的详细信息和一些if语句的示例。我们将结合这些信息,并参考用户之前的问题(关于if语句的详解)来构建回答。 回答结构: 1. 介绍分支语句的概念。 2. 分别详细介绍if语句和switch语句的语法、用法和示例。 3. 比较if和switch的适用场景。 4. 提供一些最佳实践和常见错误。 注意:引用[1][2][3]主要关于switch,引用[4]是关于if和switch的,引用[5]提供了switch的一些高级用法(如case穿透、模式匹配等)。同时,用户之前的问题中我们已经详细介绍了if语句,这里可以适当简化,重点放在switch上,并补充一些if和switch的对比。 开始回答:</think>### C# 分支语句详解与示例 分支语句是控制程序执行路径的核心结构,C# 主要提供 `if-else` 和 `switch` 两种分支语句。以下是详细用法及最佳实践: --- #### 一、`if-else` 语句 **语法结构**: ```csharp if (condition1) { // 条件1为 true 时执行 } else if (condition2) // 可选 { // 条件2为 true 时执行 } else // 可选 { // 所有条件为 false 时执行 } ``` **典型场景**: - 处理连续范围值(如成绩评级) - 需要组合多个逻辑条件时 **示例**:成绩评级系统 ```csharp int score = 85; if (score >= 90) { Console.WriteLine("A"); } else if (score >= 70) // 隐含 score < 90 { Console.WriteLine("B"); // 输出:B } else if (score >= 60) { Console.WriteLine("C"); } else { Console.WriteLine("D"); } ``` --- #### 二、`switch` 语句 **语法结构**: ```csharp switch (expression) { case value1: // 匹配 value1 时执行 break; case value2: // 可多个 case 合并 case value3: // 匹配 value2 或 value3 时执行 break; default: // 可选 // 无匹配时执行 break; } ``` **关键特性**: 1. **精确匹配**: ```csharp int day = 3; switch (day) { case 1: Console.WriteLine("周一"); break; case 2: Console.WriteLine("周二"); break; default: Console.WriteLine("其他"); break; } ``` 2. **Case 穿透**(需显式声明): ```csharp int month = 2; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: Console.WriteLine($"{month}月有31天"); // 合并相同操作 break; case 2: Console.WriteLine($"{month}月有28天"); break; default: Console.WriteLine($"{month}月有30天"); break; } ``` 3. **模式匹配**(C# 7.0+): ```csharp int a = 5; switch (a) { case int n when (n > 0 && n < 10): // 区间匹配 Console.WriteLine("a在0~10之间"); break; default: Console.WriteLine("a不在区间内"); break; } ``` --- #### 三、`if-else` vs `switch` 适用场景 | **特性** | `if-else` | `switch` | |------------------------|------------------------------------|-----------------------------------| | **条件类型** | 任意布尔表达式 | 整数、枚举、字符串 | | **条件范围** | 连续区间(如 `score > 60`) | 离散值(如固定枚举值) | | **可读性** | 简单条件时清晰 | 多分支时更简洁 | | **高级功能** | 支持复杂逻辑组合 | 支持模式匹配(C# 7.0+) | > **最佳实践**: > - 超过 3 个离散值分支时优先用 `switch` 提升可读性 > - 使用 `when` 关键字实现带条件的模式匹配[^5] > - 始终添加 `default` 分支处理意外值 --- #### 四、常见错误规避 1. **`switch` 漏写 `break`**: ```csharp // 错误:缺少 break 导致编译失败 case 1: Console.WriteLine("Monday"); // 正确:必须添加 break 或 return case 1: Console.WriteLine("Monday"); break; // 或 return/goto ``` 2. **`if` 条件误加分号**: ```csharp // 错误:分号使 if 失效 if (isValid); // 空语句 { Execute(); // 始终执行 } ``` --- **附:综合应用示例** ```csharp // 根据用户权限和状态输出信息 string role = "Admin"; int status = 2; switch (role) { case "Admin" when (status >= 1): // 带条件的模式匹配 Console.WriteLine("管理员已激活"); break; case "User": if (status == 0) Console.WriteLine("用户未激活"); else Console.WriteLine("用户正常"); break; default: Console.WriteLine("角色无效"); break; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值