C#中的流程控制语句

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

1、分支语句

1.1 if语句

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();
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语句

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();
//判断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 三元运算符

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

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

2、迭代语句:

2.1 while语句

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

2.2 do…while语句

do
{
循环体语句;
}while(条件表达式);

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

 Console.WriteLine("do...while语句实现:");
		  int num = 1;
		  do
		  {
		  
		  Console.WriteLine(num);
			  	num ++ ;		  
		  }while(num<=5);
   //银行存款问题
	  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语句

语法:

for(初始条件;判断条件;循环条件)
{
循环体语句;
}
//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();
 //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语句

//输入一个语句,将语句识别为单词并逐行输出
//语句用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 语句

//输出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 语句

//输出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 返回值;

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;
        }

    }
}

运行结果:

输入三个数求平均值
输入第一个数:
45
输入第二个数:
28
输入第三个数:
77
三个数的平均值是:50

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

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 语句的语法:

goto label;
// ...
label: statement;

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

【示例】打印1-5:

int i = 0;
start:
i++;
Console.WriteLine(i);
if (i < 5)
    goto start;

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

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

你可能感兴趣的:(c#,开发语言,java)