引言
c语言当中有顺序结构、选择结构、循环结构,当我们仔细分析,不仅仅c语言中有这些结构,当我们仔细分析,实际生活中的事情也能拆分这三种结构,接下来就让我们看看C语言当种的这些结构吧。
在c语言中0为假,非0为真
#include <stdio.h>
int main()
{
int a = 4;
int b = 1;
int c = a > b;
int d = a < b;
printf("%d,%d",c,d);
return 0;
}
以上代码的结果为1,0,因为a>b该表达式为真,所以c取1(当为真时默认为1),而a<b该表达式为假,所以d取值为0.
分支
在c语言中我们可以用if,else,switch等等语句来实行分支结构。
if
if(表达式)
{
语句
}
#include<stdio.h>
int main()
{
int age = 0;
printf("请输入你的年龄:");
scanf("%d", &age);
if(age >18)
{
printf("可以谈恋爱\n");
}
return 0;
}
if语句的使用格式如上所示,如果表达式为真即执行大括号当中的语句,若表达式为假则会跳过大括号当中的语句。
if语句使用时大括号也不是一定要加,但若不加仅仅只能执行if下的一条语句,若该分支有多条语句时一定要加大括号。
else
else的使用需要与if配合使用,使用格式如下所示:
if(表达式)
{
语句1
}
else
{
语句2
}
#include<stdio.h>
int main()
{
int age = 0;
printf("请输入你的年龄:");
scanf("%d", &age);
if(age > 18)
{
printf("可以谈恋爱\n");
}
else
{
printf("不可以谈恋爱\n");
}
return 0;
}
如果表达式为真,则执行语句1,若表达式为假则执行语句2。
跟if同理大括号也并非必须要加。
else if
else if使用格式如下:
if(表达式1)
{
语句1
}
else if(表达式2)
{
语句2
}
#include<stdio.h>
int main()
{
int age = 0;
printf("请输入你的年龄:");
scanf("%d", &age);
if (age > 18)
{
printf("可以谈恋爱\n");
}
else if(age==18)
{
printf("刚刚好可以谈恋爱\n");
}
else
{
printf("不可以谈恋爱\n");
}
return 0;
}
else if与else相比多了一个(表达式2),也多了一个限制条件,若想执行语句2则必须表达式1为假,而表达式为真才能执行。
switch
switch的使用常常需要case与break,default配合使用, 使用格式如下:
switch(整型表达式)
{
case 整形常量表达式:
语句1(可以是多条语句)
break;
case 整形常量表达式:
语句2(可以是多条语句)
break;
default:
语句3(可以是多条语句)
break;
}
使用代码案例如下所示:
#include <stdio.h>
int main()
{
int a=0;
scanf("%d",&a);
switch (a)
{
case 1:
printf("1\n");
break;
case 2:
printf("2\n");
break;
default:
printf("default\n");
break;
}
return 0;
}
输出结果:
以上代码输出结果如上图所示,可知当表达式等于哪个常数就执行哪的语句,当表达式中没有相等的常数时若有default则执行default当中的语句。
delault
通过以上代码,我们可以了解到当case当中的常数没有与表达式当中对应时,这时要不就不处理,要不我们就可以加入default。
switch当中的break
当我们去掉以上代码当中的break会发生什么呢,让我们看看吧。
#include <stdio.h>
int main()
{
int a=0;
scanf("%d",&a);
switch (a)
{
case 1:
printf("1\n");
case 2:
printf("2\n");
default:
printf("default\n");
}
return 0;
}
运行结果如上图所示,当没有break时,代码会继续往下执行,有可能会执行到其他case当中的语句。这是为什么呢?原来break在switch当中取得作用是跳出这整个switch语句,因此是否加入break语句,这个就要根据实际情况了。
swich使用的注意事项
1.switch当中得顺序问题
在switch语句中delault一定要放在最后面吗?其实并没有这个规则,delault,和case得顺序可以随意调换,但通常都是将delault放在最后面。
2.switch的使用
1、case后边必须要是整形常量表达式
2、case和后边的数字必须用空格隔开
3、switch后的表达式必须是是整型表达式
4、每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。
循环
在c语言中循环语句有while语句和do......while语句和for语句三种语句让我们看看这三种语句如何使用吧。
while
while与if语句的格式一样但作用不同如下:
while(表达式)
{
语句
}
#include<stdio.h>
int main()
{
int a = 0;
while(a<10)
{
a++;
printf("%d ",a);
}
return 0;
}
while为循环语句顾名思义即执行循环的语句,当表达式为真时而执行while当中的语句直到表达式的值为假的时候而停止执行。跟if同理没有大括号只能循环一条语句
do......while
do......while的使用格式如下:
do
{
语句
}
while(表达式);//注意这后面有分号
#include<stdio.h>
int main()
{
int a = 0;
do
{
a++;
printf("%d ",a);
}
while(a<10);
return 0;
}
do......while与while都是执行循环的语句,但二者的进行顺序不同,while是先判断表达式真假,若为真则执行while当中的语句,若为假则停止循环,而do......while与while相反,do......while是先执行当中的语句在判断表达式的真假,若do......while当中表达式为真则继续循环,若为假则停止循环。同理若没有大括号只能循环一条语句。
for
for循环与while和do......while相比就更为的复杂了使用格式如下:
for(表达式1;表达式2;表达式3)
{
语句
}
#include<stdio.h>
int main()
{
int a = 0;
for(a=1;a<=10;a++)
{
printf("%d ",a);
}
}

表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整
for循环首先执行表达式1初始化变量,然后执行表达式2判断是否符合循环的条件,然后在去执行循环中的语句,最后执行表达式3,调整循环变量,然后在执行表达式二判断是否在进行循环,如此往复,直到表达式2为假时,循环停止。
循环当中的break和continue
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i;
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
运行结果:
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i;
for (i = 0; i < 10; i++)
{
if (arr[i] == 6)
break;
printf("%d ", arr[i]);
}
return 0;
}
运行结果:
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i;
for (i = 0; i < 10; i++)
{
if (arr[i] == 6)
continue;
printf("%d ", arr[i]);
}
return 0;
}
在以上代码中可以看出若加上break被执行,则与原来相比5后面的数都没有打印出来,而若是continue被执行也就仅仅6没有被打印出来因为break 的作⽤是⽤于永久的终⽌循环,continue是跳过本次的循环中后边的代码。