C#快速入门(五):顺序结构、分支结构、循环结构、三元表达式

一、程序结构

结构化程序设计的原则可表示为:程序=(算法)+(数据结构)。
结构化程序设计的三种基本结构是:顺序结构、选择结构和循环结构。

1.1 顺序结构

顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。

C#的基本结构就是顺序结构,除非特别指明,否则就都按照先后顺序一句一句执行,它是最简单的算法结构。

语句与语句之间都是按照从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,顺序结构是任何一个算法都离不开的一种基本算法结构。

int a = 10;
int b = 20;
int c = a + b;
Console.WriteLine(c);

这段代码首先定义了两个变量 a 和 b,然后计算它们的和,最后输出结果 c。这就是一个典型的顺序结构。

1.2 分支结构

分支结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。

1.2.1 if结构

(1)if单选择结构

当我们需要判断一个东西是否可行,如果可行我们就会执行一些语句的时候,我们就会用if单选择语句来表示,语法如下:

if(布尔表达式){
	//如果布尔表达式的值为true时将执行的语句
}

 

int a = 10;
int b = 10;

if (a == b)
{
    Console.WriteLine("a 等于 b");
}

(2)if双选择结构

当我们需要判断一个东西是否可行,如果可行我们就需要执行一段语句,如果不可行我们就需要执行另一段语句时,我们就会用if双选择语句来表示,语法如下:

if (布尔表达式)
{
    //如果布尔表达式的值为true时将执行的语句
}
else
{
    //如果布尔表达式的值为false时将执行的语句
}

int a = 20;
int b = 10;

if (a > b)
{
    Console.WriteLine("a 大于 b");
}
else
{
    Console.WriteLine("a 小于 b");
}

(2)if多选择结构

当我们需要判断一个东西是否满足多种不同的条件,如果条件一满足我们就需要执行语句一,如果条件二满足我们就需要执行语句二,如果条件三满足我们就需要执行语句三 … 我们就会用if多选择语句来表示,语法如下:

if (布尔表达式1)
{
    //如果布尔表达式1的值为true时将执行的语句
}
else if (布尔表达式2)
{
    //如果布尔表达式1的值为false时,并且布尔表达式2为true时将执行的语句
}
...
else
{
    //如果布尔表达式2的值为false时将执行的语句
}

int score = 61;

//判断成绩
if (score <= 100 && score >= 90)
{
    Console.WriteLine("优");
}
else if (score < 90 && score >= 80)
{
    Console.WriteLine("良");
}
else if (score < 80 && score >= 60)
{
    Console.WriteLine("及格");
}
else if (score < 60 && score >= 0)
{
    Console.WriteLine("不及格");
}
else
{
    Console.WriteLine("成绩不合法");
}

这里的程序就会根据用户输入的不同数据而执行不同的语句。

if语句是可以嵌套的,嵌套时注意程序的整体结构,{和}需要对应。

1.2.2 switch结构

switch 结构允许你基于不同的条件执行不同的代码块。例如:

switch(表达式){
	case value1:
		//语句1
		break;//可选
	case value2:
		//语句2
		break;//可选
	...
	case valuen:
		//语句n
		break;//可选
	default: //可选
		//语句n+1
}

case语句中的value值应该与对应的switch语句的表达式的值一致,当switch表达式的值“命中”某条case语句的值时,就会执行对应case语句中的代码,然后按照顺序结构来执行,直到break语句出现或者switch语句的结束来结束这个switch语句。

break语句表示结束,中止的意思,它在switch语句中表示结束这个switch语句,它在switch语句中一般都会与case配对,如不配对,就可能会出现case穿透现象。

default语句不需要vaule值,因为它只有它对应的switch的表达式未“命中”case语句。

char grade = 'A';

switch (grade)
{
    case 'A': //匹配到A执行
        Console.WriteLine("优");
        break; //结束switch语句
    case 'B': //匹配到B执行
        Console.WriteLine("良");
        break;
    case 'C': //匹配到C执行
        Console.WriteLine("及格");
        break;
    case 'D': //匹配到D执行
        Console.WriteLine("不及格");
        break;
    default: //未匹配到时执行
        Console.WriteLine("等级有误!");
        break;
}

上述代码会根据grade值的不同执行不同的代码。

case穿透:因为switch表达式命中case语句之后,如果后续并未遇到break语句,它就会按照顺序结构执行下去,这个现象就称作case穿透(上述代码中去掉break就可明显观察到case穿透现象)。

1.3 循环结构

循环结构表示程序反复执行某个或某些操作,直到某条件为真(或为假)时才可终止循环。

在 C# 中,有三种主要的循环结构:while、do-while 和 for。

1.3.1 while循环

while 结构允许你重复执行代码块,直到条件不再满足。

语法为:

while(布尔表达式)
{
	//循环内容
}

只要布尔表达式的值为true,这个布尔表达式就是循环条件,只要它一直满足条件,它就会一直循环。
大部分情况下都会让循环结束,我们就需要有一个让表达式为false的时候。

注意,一定要有结束条件,否则就会陷入死循环,可能导致内存溢出。

例如:

int i = 0;
 
while (i < 5)
{
    Console.WriteLine(i);
    i++;
}

1.3.2 do while循环

语法为:

do
{
	//循环代码
} while(布尔表达式);

do while循环与while循环相似,但唯一不同的是,do while循环至少会执行一次循环代码。

while与do while的区别:

while是先判断,后执行。do while是先执行,再判断。
所以说do while会至少执行一次循环语句。

int i = 0;

while (i < 0)
{
    Console.WriteLine(i);
    i++;
}

Console.WriteLine("-------------");

do
{
    Console.WriteLine(i);
    i++;
} while (i < 0);

其执行结果如下:

我们发现,相对于条件不满足的情况,while未执行循环语句,但是do while执行了一次循环语句,这就是这两个循环的唯一区别。

1.3.3 for循环

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。

语法为:

for(初始化语句; 布尔表达式; 更新语句)
{
	//循环语句
}

配合上面的流程图,我们就知道for循环的执行流程了,我们这里直接使用例子:

//打印 1~100的整数
for (int i = 1; i <= 100; i++)
{
    Console.WriteLine(i);
}

我们可以把这段代码与上述的while循环代码对比,发现我们使用for循环更为简洁。

1.4 三元表达式

三元表达式用于代替简单if-else结构。

格式:

条件表达式1?表达式2:表达式3;

条件表达式1如果为true,则返回表达式2的结果,否则返回表达式为3的结果

int a = 12;
int b = 15;
int c = 0;

//1.if-else写法
//if (a > b)
//{
//    c = a;
//}
//else
//{
//    c = b;
//}

//2.三元表达式写法
c = a > b ? a : b;
Console.WriteLine(c);
  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值