C语言是结构化的程序设计语言,这里的结构是只顺序结构,选择结构,循环结构。在C语言中能够实现这三种结构的,if、switch实现选择结构,for、while、 do while实现循环结构。
==================================================================================
if 语句
if语句的语法格式为:
if(表达式)
语句
if()中,表达式为真,则语句执行。若表达式为假,则语句不执行。
C语言中,非0为真,0为假。如果表达式结果为0,则语句不执行。若表达式为非0,则语句执行。
else的使用
else与if搭配一起使用,表示满足if条件则不执行else,满足else条件则不执行if。
if(表达式)
语句1
else
语句2
分支中包含多条语句
在默认的情况下,if()语句和else都只控制一条语句。想要控制两条或者多条语句就要使用" {} "括起来。
#include<stdio.h>
int main()
{
int g=0
scanf("%d",&g);
if(g<=6)
{
printf("%d小于6\n",&g);
printf("\n");
}
else
{
printf("%d大于",g);
}
if 语句的嵌套
在if语句中,不仅仅只有if-else,else还可以与另一个if语句相连,构成多重判断。
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num>0)
{
if(num%2 == 0)
printf("偶数\n");
else
printf("奇数\n");
}
else
{
printf("输⼊的值是负数\n");
}
return 0;
}
else 的悬空问题
在代码中如果有多个if 和 else ,else 总是与最近的if语句相匹配。
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
上⾯的代码排版,让 else 和第⼀个 if 语句对⻬,让我们以为 else 是和第⼀个if匹配的,当 if
语句不成⽴的时候,⾃然想到的就是执⾏ else ⼦句,打印 haha ,但实际上 else 是和第⼆个 if
进⾏匹配的,这样后边的 if…else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不
成⽴,嵌套 if 和 else 就没机会执⾏了,最终啥都不打印。
如果代码改成下⾯这样就更加容易理解了
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
}
return 0;
}
switch 语句
除了if语句外 switch语句有也能够实现分支结构。
switch语句是以中特殊的if-else结构,用来判断有多个结果的情况。
switch(表达式)
{
case 变量1:声明;
case 变量2:声明;
default:声明;
}
上述代码中,根据表达式的不同的值,case 执行相应的分支。若是找不到相应的值,则执行default默认分支。
注意:
switch(表达式) 表示必须为整型表达式
case 后的值,必须是整型常量表达式
switch中的break
我们能够发现输出的程序本因该只有工作日,但是运行的结果多了“休息日”和“输入错误”。
这是因为 switch语句中的分支效果是有break来实现的,只有在switch语句中使用break才能跳出所谓提出语句。如果case语句后没有break语句,则代码会一直运行下去,可能会其他case语句中的代码,直到遇到break或者switch语句结束。
因此break语句是switch语句实现分支结构的重要条件。
while循环
while语句的语法结构
while语句和if语句的语法结构十分相似。
while(表达式)
{
语句;
}
while的流程图
⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语
句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。
while 实例
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
for循环
for语句的语法结构
for(表达式1;表达式2;表达式3)
{
语句;
}
注:
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整
for循环的流程图
⾸先执⾏ 表达式1 初始化循环变量,接下来就是执⾏ 表达式2 的判断部分, 表达式2 的结果如果
==0,则循环结束; 表达式2 的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表 达式
3 ,调整循环变量,然后再去 表达式2 的地⽅执⾏判断, 表达式2 的结果是否为0,决定循环是否继
续。
整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循
环。
for循环实例
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
do while循环
do while语句的语法结构
do
{
语句;
}while(表达式);
do while语句流程图
在 do while 循环中先执⾏图上的“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的
结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。
所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。
do while实例
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}while(i<=10);
return 0;
}