C#中的流程控制语句

流程控制语句:分支语句迭代语句跳转语句三类

1、分支语句

1.1 if语句

csharp 复制代码
Console.WriteLine("请输入数值,判断它与10的关系:");
int a = int.Parse(Console.ReadLine());
//int.Parse用于将屏幕输入的语句转换为整型
if(a<10){
Console.WriteLine("a小于10");
}
else if(a==10){
Console.WriteLine("a等于10");
}
else{
Console.WriteLine("a大于10");
}
Console.ReadKey();
csharp 复制代码
Console.WriteLine("请输入1-7判断是星期几:");
int week = int.Parse(Console.ReadLine());
//int.Parse用于将屏幕输入的语句转换为整型
if(week == 1) Console.WriteLine("星期一");
if(week == 2) Console.WriteLine("星期二");
if(week == 3) Console.WriteLine("星期三");
if(week == 4) Console.WriteLine("星期四");
if(week == 5) Console.WriteLine("星期五");
if(week == 6) Console.WriteLine("星期六");
if(week == 7) Console.WriteLine("星期日");
Console.ReadKey();

1.2 switch语句

csharp 复制代码
Console.WriteLine("请输入1-7判断是星期几:");
int week = int.Parse(Console.ReadLine());
//int.Parse用于将屏幕输入的语句转换为整型
switch(week){
case 1:Console.WriteLine("星期一");berak;
case 2:Console.WriteLine("星期二");berak;
case 3:Console.WriteLine("星期三");berak;
case 4:Console.WriteLine("星期四");berak;
case 5:Console.WriteLine("星期五");berak;
case 6:Console.WriteLine("星期六");berak;
case 7:Console.WriteLine("星期日");berak;
default:Console.WriteLine("输入有误!");berak;
}
Console.ReadKey();
csharp 复制代码
//判断2023年每个月份的天数
//31天:1 3 5 7 8 10 12
//30天:4 6 9 11
//28天:2

Console.WriteLine("请输入1-12判断月份天数:");
int month = int.Parse(Console.ReadLine());
//int.Parse用于将屏幕输入的语句转换为整型
switch(month){

case 2:Console.WriteLine("本月有28天");berak;
case 4:
case 6:
case 9:
case 11:
Console.WriteLine("本月有30天");berak;
default:
Console.WriteLine("本月有31天");berak;
}
Console.ReadKey();

1.3 三元运算符

条件判断表达式?成立时执行的语句:不成立时执行的语句

csharp 复制代码
Console.WriteLine("请输入数值,判断它与10的关系:");
int num = int.Parse(Console.ReadLine());
//int.Parse用于将屏幕输入的语句转换为整型
Console.WriteLine(num<10?"您输入的数值小于10":"您输入的数值大于等于10");
Console.ReadLine();

2、迭代语句:

2.1 while语句

csharp 复制代码
while(条件表达式)
{
代码语句
}
 
//输出1...50
int num = 1;
while(num<=10)
 {
Console.WriteLine(num);
 num ++ ;
}

2.2 do...while语句

csharp 复制代码
do
{
循环体语句;
}while(条件表达式);

特点:无论while中条件表达式是否成立,循环体至少会执行一次

csharp 复制代码
 Console.WriteLine("do...while语句实现:");
		  int num = 1;
		  do
		  {
		  
		  Console.WriteLine(num);
			  	num ++ ;		  
		  }while(num<=5);
csharp 复制代码
   //银行存款问题
	  double Balance = 0;
	  double Rate = 0;
	  int Year = 0;
	  double TargetBalance = 0;
	  Console.WriteLine("请输入存款本金:");
	  Balance = double.Parse(Console.ReadLine());
	  Console.WriteLine("请输入当前利率百分比:");
	  Rate = double.Parse(Console.ReadLine())/100;
	  Console.WriteLine("请输入目标收益:");
	  TargetBalance = double.Parse(Console.ReadLine());
	  do
	  {
		  if(TargetBalance<=Balance)
			  Console.WriteLine("Eorr:目标收益小于等于本金!重新输入!");
	  }while(TargetBalance<=Balance);
	  
	  do
	  {
		  Balance *= (Rate+1);
		  Year++;
	  }while(Balance<TargetBalance);
	  Console.Write("将会在{0}年内,达到收益{1}元。",Year,Balance);
	  Console.ReadLine();

2.3 for语句

语法:

csharp 复制代码
for(初始条件;判断条件;循环条件)
{
循环体语句;
}
csharp 复制代码
//for循环求阶乘
//1!=1 2!=2*1 3!=3*2*1
Console.WriteLine("输入要求的阶乘数值:");
int a = int.Parse(Console.ReadLine());
int jc = 1;		  
for(int i=1;i <= a;i++)
{
jc *= i;
}
Console.WriteLine("{0}!的结果是:{1}",a,jc);
Console.ReadLine();
csharp 复制代码
 //for循环呈现九九乘法表
		  Console.WriteLine("=========================九九乘法表==========================");
		  for(int i = 1;i<=9;i++){
		  	for(int j = 1;j<=i;j++){
				Console.Write("{0}*{1}={2} ",j,i,i*j);
				if(i*j<10)
				    Console.Write(" ");
			}
			Console.WriteLine("");
		  }
		  Console.WriteLine("==============================================================");
		Console.ReadLine();

2.4 foreach语句

csharp 复制代码
//输入一个语句,将语句识别为单词并逐行输出
//语句用string类型 字母用char
string str = Console.ReadLine();
foreach (char word in str)
{
if(char.IsWhiteSpace(word))
{
Console.WriteLine();	//仅换行
}
else
{
Console.Write(word);	//遇到空格前不换行输出
}
}

3、跳转语句:break语句 continue语句 goto语句 return语句

3.1 break 语句

csharp 复制代码
//输出1-100的数字,每行10个,同时为3、4、5的倍数时退出
Console.WriteLine("输出1-100的数字,每行10个,同时为3、4、5的倍数时退出:");
        for(int i=1;i<101;i++)
        {
            if ((i % 3 == 0)&&(i % 4 == 0)&&(i % 5 == 0))
                break;
            if (i % 10 == 0) 
            Console.WriteLine(i);
            else {
                if(i<10)
                    Console.Write(" "+i+" ");
                else 
                    Console.Write(i+" ");
            }
            
        }

3.2 continue 语句

csharp 复制代码
//输出1-100的数字,每行10个,同时为3、4的倍数时跳过,用**取代
        Console.WriteLine("输出1-100的数字,每行10个,同时为3、4的倍数时跳过:");
        for(int i=1;i<101;i++)
        {
            if ((i % 3 == 0)&&(i % 4 == 0)) //&&(i % 5 == 0)
            {
                if(i % 10 == 0)
                Console.WriteLine("**"+" ");
                else
                Console.Write("**"+" ");
                continue;
            }
            if (i % 10 == 0) 
            Console.WriteLine(i);
            else {
                if(i<10)
                    Console.Write(" "+i+" ");
                else 
                    Console.Write(i+" ");
            }
            
        }

3.3 return 语句

说明:
return语句只能出现在方法当中,当调用方法时,执行到return语句时,直接跳转到Main( )函数。

---------------return 返回值;

csharp 复制代码
using System;
namespace return语句
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("输入三个数求平均值");
            Console.WriteLine("输入第一个数:");
            int num1 = int.Parse(Console.ReadLine());
            Console.WriteLine("输入第二个数:");
            int num2 = int.Parse(Console.ReadLine());
            Console.WriteLine("输入第三个数:");
            int num3 = int.Parse(Console.ReadLine());

            //double avg = (num1 + num2 + num3) / 3;
            double avg = fun_avg(num1,num2,num3);
            Console.WriteLine("三个数的平均值是:" + avg);
            Console.ReadKey();
        }

	//1、return有返回值时
        static double fun_avg(int a,int b,int c) {
            return (a+b+c) / 3;
        }

    }
}

运行结果:

csharp 复制代码
输入三个数求平均值
输入第一个数:
45
输入第二个数:
28
输入第三个数:
77
三个数的平均值是:50

------------------- return;

csharp 复制代码
static void Main(string[] args)
{
    Console.WriteLine("输入三个数求平均值");
    Console.WriteLine("输入第一个数:");
    int num1 = int.Parse(Console.ReadLine());
    Console.WriteLine("输入第二个数:");
    int num2 = int.Parse(Console.ReadLine());
    Console.WriteLine("输入第三个数:");
    int num3 = int.Parse(Console.ReadLine());

    //double avg = (num1 + num2 + num3) / 3;
    //double avg = fun_avg(num1,num2,num3);
    //Console.WriteLine("三个数的平均值是:" + avg);
    fun_avg(num1,num2,num3);

    Console.ReadKey();
}

/*1、return有返回值时
 * 
static double fun_avg(int a,int b,int c) {
    return (a+b+c) / 3;
}
*/

//2、return不带返回值时
static void fun_avg(int a, int b, int c)
{
    Console.WriteLine("三个数的平均值是:{0}", (a + b + c) / 3);
    return;
}

3.4 goto语句

说明:

goto 语句是一种跳转语句,用于将程序的控制转移到指定的标签处,从而改变执行流程。虽然 goto 语句在某些情况下可以提供一种跳转的方式,但由于容易造成代码结构混乱和可读性差的问题,一般不建议过多使用

goto 语句的语法:

csharp 复制代码
goto label;
// ...
label: statement;

语法说明:
label 是一个标签,用于标记代码中的位置。它由一个冒号和标识符组成,标识符可以是任意有效的名称。statement 是要执行的语句。

【示例】打印1-5:

csharp 复制代码
int i = 0;
start:
i++;
Console.WriteLine(i);
if (i < 5)
    goto start;

goto 语句来实现了一个简单的循环。程序使用标签 start 标记循环的入口,在每次迭代后通过 goto start; 语句将控制转移到标签处,从而实现了循环的目的。goto 语句可以实现代码跳转,但过多使用会对代码的可读性和维护性产生负面影响。建议在大多数情况下使用结构化的控制流语句 (如 ifforwhiledo-while),它们提供了更清晰和易于理解的代码结构。只在极少数情况下,当必要时再使用 goto 语句。

为了提高代码的可读性和可维护性,应该遵循一致的代码风格和最佳实践,并避免滥用 goto 语句。

相关推荐
考虑考虑1 天前
Jpa使用union all
java·spring boot·后端
用户3721574261351 天前
Java 实现 Excel 与 TXT 文本高效互转
java
浮游本尊1 天前
Java学习第22天 - 云原生与容器化
java
渣哥1 天前
原来 Java 里线程安全集合有这么多种
java
间彧1 天前
Spring Boot集成Spring Security完整指南
java
间彧1 天前
Spring Secutiy基本原理及工作流程
java
Java水解1 天前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆1 天前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学1 天前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole1 天前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端