流程控制语句:分支语句 、迭代语句 、跳转语句三类
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
语句可以实现代码跳转,但过多使用会对代码的可读性和维护性产生负面影响。建议在大多数情况下使用结构化的控制流语句 (如 if
、for
、 while
或 do-while
),它们提供了更清晰和易于理解的代码结构。只在极少数情况下,当必要时再使用 goto
语句。
为了提高代码的可读性和可维护性,应该遵循一致的代码风格和最佳实践,并避免滥用 goto
语句。