您的位置:首页 > 编程语言 > C语言/C++

C语言——分支语言和循环语句

2019-08-09 13:31 295 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/YIUECHEN/article/details/96361054

流程控制语句:用来控制程序中各语句执行顺序的语句。 C语言中由一个分号(:)隔开的就是一条语句。

分支语句
·if
·switch
循环语句
·while
·for
·do while

分支语句

if语句
if语句的结构:

if(表达式)
语句;

if(表达式)
语句1; else(表达式)
语句2;

//多分支 if(表达式1)
语句1; else if(表达式2)
语句2; else
语句3; 注意:如果表达式的结果为真

,则语句1执行,否则表达2执行。
C语言中0表示假,非0表示真。
代码演示:

#include<stdio.h>
int main(){
int coding=0;
printf("你会好好学习吗?(选择1or2):");
scanf("%d",&coding);
if(coding==1){
printf(“坚持就是胜利!\n”);
}
else{
printf("废物!\n");
}
return 0;
}

注意:适当使用{}可以使代码的逻辑更加清楚。

switch语句
switch语句也是一种分支语句,常用于分支情况。
比如:
输入1,输出星期一;
输入2,输出星期二;
输入3,输出星期三;
输入4,输出星期四;
输入5,输出星期五;
输入6,输出星期六;
输入7,输出星期七;
switch语句的结构

switch(整型表达式)
{
case 整型常量表达;
语句;
}

#include<stdio.h>
int main(){
int day=0;
switch(day)
{ case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
}

break语句的实际效果是把语句列表划分为不同的部分。在最后一个 case 语句的后面加上一条 break语句。 (之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)。

default子句
如果表达的值域所有的case标签的值都不匹配那么所有的语句都会被跳过。 程序并不会终止,也不会报错,因为这种情况在C中并不认为适合错误。 但是,如果你并不想忽略不匹配所有标签 的表达式的值时可以在语句列表中增加一条default子句,把下面的标签 default: 写在任何 一个case标签可以出现的位置。
当 switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位 置,而且语句流会像贯穿一个case标签一样贯穿default子句。

循环语句

while循环

我们已经掌握了,if语句:

if(条件)
语句;

当条件满足的情况下,if语句后的语句执行,否则不执行。但是这个语句只会执行一次。
但是我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。 C语言中给我们引入了:while语句,可以实现循环。

while(表达式)
循环语句;

比如我们实现:
用while循环在屏幕上打印1-10的字。

#include<stdio.h>
int main(){
int i=1;
while(i<=10){
printf("%d ",i);
i++;
}
return 0;
}

while语句中的break和continue
break介绍

#include<stdio.h>
int main(){
int i=1;
while(i<=10){
if(i==5)
break;
printf("%d ",i);
i++;
}
return 0;
}

输出结果是:1 2 3 4
总结:在while循环中只要碰到break,就停止后期所有的循环,直接终止循环,所以break是用对于永久终止循环的。
countinue介绍:

#include<stdio.h>
int main(){
int i=1;
while(i<=10){
i++
if(i==5)
continue;
printf("%d ",i);
}
return 0;
}

输出结果是:2 3 4 6 7 8 9 10
总结:在while循环中continue的作用就是终止本次循环,就是本次循环中continue后面的代码不再执行,直接跳转到while语句的判断部分进行下一次循环。

for循环
语法

for(表达式1;表达式2;表达式3)
循环语句

表达式1为初始化部分,用于初始化循环变量;表达式2为条件判断部分,用于判断循环终止时候;表达式3为调整部分,用于循环部分的调整。
比如我们实现:
用for循环在屏幕上打印1-10的字。

#include<stdio.h>
int main(){
int i=0;
for(i=0;i<=10;i++){
printf("%d ",i);
}
return 0;
}

可以发现在while和for循环中都存在循环的三个必须条件,但是由于风格的问题在while循环中使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。所以,for循环的风格更胜一筹。for循环使用的频率也最高。
在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。

一些建议:
1. 不可在for 循环体内修改循环变量,防止for 循环失去控制。
2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{}
//两边都是闭区间
for(i=0; i<=9; i++)
{}

一些for循环的变种

#include <stdio.h>
int main(){
//变种1
for(   ;   ;  ){
printf("hehe\n");
}
//变种2
int x, y;
for(x = 0, y = 0; x<2 && y<5; ++x, y++){
printf("hehe\n");
}
return 0;
}

do…while()循环
语法:

do
循环语句;
while(表达式);语法:

循环至少执行一次,使用的场景有限,所以不是经常使用

#include <stdio.h>
int main(){
int i = 10;
do{
printf("%d\n", i);
}while(i<10);
return 0;
}

goto语句
C语言中提供了可以随意滥用的goto语句和标记跳转的标号。
从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次
跳出两层或多层循环。
这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。
下面是使用goto语句的一个例子:
一个关机程序

#include <stdio.h>
int main()
{
char input[10] ={0};
system("shutdown -s -t 60");
again:
printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
scanf("%s", input);
if(0 == strcmp(input, "我是猪"))
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: