作者: 花椒不辣
专栏:《C语言入门》
目录
前言
一、分支与循环
二、分支语句
1.if(条件语句)
(1)if形式
(2)if-else形式
(3)else-if形式
注意:
2.switch(开关语句)
形式:
break:
default:
注意:
三、循环语句
1.while
形式:
2.for
形式:
3.do while
形式:
注意:
四、goto语句
形式:
实例,关机程序:
总结
大家好,我是小花椒。首先很荣幸能被各位大佬垂读这篇文章,以下全是小花椒近期关于分支与循环学习的成果,也希望这篇文章能够帮助到大家,如果有什么不对和不足的地方,还请各位大佬多多雅正!
分支语句
if
switch
循环语句
while
for
do while
goto语句
流程图
if(表达式)
可执行语句
int main()
{
int n = 0;
if (n == 0)
printf("666");//如果n等于0打印666
return 0;
}
作用注释:若表达式成立(为真)执行可执行语句,否则不进行任何操作,执行后面语句。
if(表达式)
可执行语句1
else
可执行语句2
int main()
{
int n = 0;
if (n == 0)
printf("666");//如果n等于0打印666
else
printf("222");//如果n等于1打印222
return 0;
}
作用注释:若表达式为真,则执行可执行语句1,否则执行可执行语句2。
if(表达式1)
可执行语句1
else if(表达式2)
可执行语句2
......
else if(表达式n)
可执行语句n
else
可执行语句n+1
作用注释:若表达式1为真,则执行语句1,否则如果表达式2为真,则执行语句2,......,如果if后面所有的表达式都不为真,则执行N+1。
else会和最近的if进行匹配,不良的代码风格会造成else悬空,以至于没必要的误会,所以大家一定要养成良好的代码风格哦。o((>ω< ))o
switch(表达式)
{
case 常量1:
可执行语句1
break;
case 常量2:
可执行语句2
break;
.....
case 常量n:
可执行语句n
break;
default:
可执行语句n+1
}
作用注释:当问题的讨论情况较多的时候,可以使用开关语句简化程序设计,使一个表达式可以产生不同的结果值。
switch中的break,能帮助我们实现真正的分支。switch语句执行时会从上到下根据括号中表达式的值作比较,当某个case语句中的表达式与此值相同时,就执行这个case语句或语句序列,直到遇到break为止。 break语句是必须有的,它用来结束switch语句的执行。
当所有case语句后面的表达式都不等于switch语句项中case后面整型常量表达式的值,就执行default后面的默认语句序列。不过,default部分是可选的。如果没有这一部分,并遇到所有case语句都不匹配,那么,就不作任何处理而进入后续程序段的执行。
例如下面代码,当输入day的值不同,打印的不同:
#include
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
break;
}
return 0;
}
①switch后圆括号内表达式的值一般为整型、字符型或枚举类型,而且每个 case 后的“常量表达式”的类型都应该与switch后括号内表达式的类型一致。
② 若case 后面的语句省略不写,则表示它与后续 case 执行相同的语句。
③程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的 case常量,找到后则按顺序执行此 case 后的所有语句,包括后续case,而不再进行判断,直到遇到break语句或右花括号}为止。因此,只有switch语句和break语句配合才能形成真正意义上的多分支。也就是说,执行完某个分支后,一般要用break 语句跳出 switch 结构。若所有的case常量都不能与表达式的值相匹配,则执行 default 后面的语句序列 n+1。
④ 因为每个case后的常量只起语句标号(Label)的作用,所以 case 常量的值必须互不相同,不能自相矛盾,而且case 后只能是一个常量,不能是一个区间,也不能出现任何运算符(如关系运算符等)。例如,下面的两种写法都是错误的:
case 90~100: printf("8d--A\n",score); break; //语法错误
case 90<=score<=100: printf("8d--A\n",score); break; //语法错误
⑤ 改变 case常量出现的次序,不会影响程序的运行结果。但从执行效率角度考虑,一般将发生频率高的 case 常量放在前面。
流程图
while(表达式)
{
可执行语句
}
int main()
{
int a = 0;
while (a < 10)//表达式
{
printf("%d\n", a);
a++;
}
return 0;
}
作用注释:执行该语句时,是先判断后执行。先求表达式的值,若其值为非0值(真),表示件成立,则重复执行循环体内的可执行语句序列,直到表达式的值为0(假)时结束循的执行。
for(表达式1;表达式2;表达式3)
{
可执行语句
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d\n", i);
}
return 0;
}
作用注释:其中,表达式1的作用是初始化循环控制变量,即为循环控制变量赋初值:表达式2复行的判断条件,这个条件也用于决定什么时候结束循环;表达式3的作用是给循环控制变量增值,即定义循环控制变量在每次循环结束后按什么方式变化,可以在每次循环时给控制变量增加一个正数值,也可以增加一个负数值。
do
{
可执行语句
}(表达式);
int main()
{
int i = 0;
do
{
printf("%d\n", i);
i++;
}while(i < 10);
return 0;
}
作用注释:与while语句不同的是,do-while语句是先执行后判断。执行do-while语句时,至少先执行一次循环体内的语句,然后才判断while后括号内表达式的值是否为真,若表达式的值为非0值(真),则继续重复执行循环体内的语句,直到表达式的值为0(假)时为止,结束循环。
循环中:continue结束的是本次循环,break结束的是本层循环,而return可以跳出所有循环。
//往前跳
goto 语句标号;
...
语句标号:...
//往后跳
...
goto 语句标号;
for(...)
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
…
error:
if(disaster)
// 处理错误情况
作用注释:
它的作用是无须任何条件,直接使程序转跳到该语句标号所标识的语句处去执行,语句标号代表goto语句转向的目标位置,其命名规则与变量名相同,不能用整数作为句标号。
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;
}
大家小心使用哦~不要设置成立刻关机,让朋友运行§(* ̄▽ ̄*)§
以上就是这段学习分支与循环的成果,有什么不足和错误,还望诸位大佬多多指教。
下次为大家带来操作符的分享,还请佬佬们多多关注,不会太久哦~
期待佬佬们的指点,关注。
下次见┗|`O′|┛ 嗷~~