C语言是结构化的程序设计语言,它主要的结构包括顺序,分支,循坏结构。
1.顺序结构
顺序结构顾名思义就是按顺序执行,一步一步的往下执行,是C语言中最普遍的一种结构,比较简单,相信大家都能够理解。
2.分支结构
分支结构表示做一件任务有不同的选择,我们具备什么样的能力,达到什么样的条件就做出与之对应的选择。那么,在C语言中,分支结构该怎么实现呢?
2.1:if语句
在C语言中可以用i语句来实现分支结构。它的语法形式如下:
if(表达式)
语句;
如果表达式为真,则语句执行,如表达式为假,则语句不执行。注:C语言中0表示假,1表示真,if语句中,非零即为真。
2..2:else语句
if else语句一般是一起使用的,else语句一般表示与if语句相反的情况 。例如输入一个整数,并判断是奇数还是偶数。代码如下:
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d\n",&num);
if(num%2==0)
{
printf("%d是偶数\n",num);
}
else
{
printf("%d是奇数\n",num);
}
return 0;
}
2.3:分支中包含多条语句
if和else语句一般默认控制一条语句,所以当if else中有多条语句要执行时,使用{}将这些语句放在一起,尽管if else只控制一条语句时,使用{}的形式有利于让你的程序更清晰,逻辑性强去,可读性更高,这是一种好的编程习惯。
2.4:嵌套if
在if else语句中,else可以与另一个if语句连用,形成多重判断。举个例子:输入一个整数,并判断
是正数还是负数,或者为零。代码如下:
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d\n",&num);
if(num == 0)
{
printf("输入的整数为0“);
}
else if(num > 0)
{
printf("输入的整数为正数");
}
else
{
printf("输入的数为负数");
}
return 0;
}
此种结构能够实现更多复杂性的逻辑判断.
2.5:if else语句的匹配问题
如果有多个if和else,记住else总是跟它最接近的if匹配,初学者容易犯的小错误就是认为else是与它对齐的if进行匹配。
3.分支结构中的switch语句
switch语句是C语言提供的另外一种实现分支结构的语句,它是一种特殊的if else语句结构,用来判断用多个选择时的情况,比嵌套if更加易用,可读。
3.1:switch语句的语法形式
switch(表达式)
{
case 0:
语句;
break;
case 1:
语句;
break;
case 1:
语句;
break;
default :
语句;
break;
}
在执行switch语句时,会根据switch中表达的值,然后执行相应的表达式语句,即case分支,如果找不到对应的值,就执行default分支。
注意:
1.switch语句中表达式的值必须是整形常量表达式
2.case后的值,也必须是整形常量表case
3.case和后面的数字之间必须有空格并且数字后面的符号是:不要写成;
4.每一个case语句中的代码执行完毕后,需要加上break,才能跳出这个switch语句,但是也要根据设计程序所要的要求,在相应位置加上break语句;
举个例子:输入一个1~7的数字,打印对应的星期几
1.输入1~5,输出的是工作日
2.输入6~7,输出的是休息日
3.若输入的不是1~7,则输入输入错误
代码如下
#include<stdio.h>
int main()
{
int num = 0;
scanf_s("%d\n", &num);
switch (num)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default :
printf("输入错误\n");
}
return 0;
}
最后,switch语句中的case和default语句是不分先后顺序的,不过由于编程习惯,一般把case语句放前面。
4.循环结构
循坏结构就是在满足一定条件下,重复的去做某一件事,直到不满足条件为止。在C语言中,使用for,while,do while语句来实现循坏结构。
4.1 while循坏
while语句的形式和if语句非常相似,它的语句语法形式如下:
while(表达式)
{
语句;
}
当whlie语句中的表达式值为零时循坏结束,当表达式值不为零时,则一直重复循坏体中的语句,执行完毕后在进行判断。
举个例子:打印1~10之间的数。代码如下
int main()
{
int i = 1;
while(i<=10){
printf("%d ",i);
i++;
}
return 0;
}
4.2 for循坏
除while循坏外,for循坏也是实现循坏的一种语句,它的语法形式如下;
for(表达式1;表达式2;表达式3)
{
循坏体语句;
}
表达式1用来给循坏变量初始化;
表达式2用来判断,表示循坏是否结束;(判断为真,执行循环体语句,判断为假,跳过循坏)
表达式3用于循坏变量的调整;
举个例子:用while循坏中的例子用for循坏实现
int main()
{
int i = 0;
for(i=1;i<=10;i++)
{
printf("%d ",i);
}
return 0;
}
4.3 do while循坏
我们来看实现循环结构都最后一种语句形式,它在循环语句中一般用的最少,其语句语法形式如下
do{
循环体语句;
}whlie(表达式)
do while语句不像while和for循环一样,要先进行判断才进入循坏体语句;但是do while语句开始直接就进入循坏体语句,不管条件是否满足。再进行判断。
举个例子,还是打印1~10的数;
代码如下:
int main()
{
int i=1;
do{
printf("%d ",i);
}while(i<=10)
return 0;
}
5.break语句和continue语句
在C语言中,我们有时可能会遇到提前终止循环的情况,C语言中提供了break和continue语句来帮助我们提前中止循环。
5.1 break语句
break的作用是永久的终止循环,只要break执行,直接跳出循坏,继续往后执行。
break语句在循坏结构中的作用就是跳出循坏,在上述三个循环语句中基本没有任何区别,这里小编不在进行验证,请读者下来自行完成验证。小编为大家重点讲解continue语句在上述三个循环语句中的作用。
5.2 continue语句
continue语句的作用是跳过本次循环中continue后面的代码,继续下一次循坏的判断。
举个例子
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d ", i);
i++;
}
}
此处continue语句跳过了i++语句,导致了i的值一种为5,给程序造成了死循坏。
接下来我们看看for循坏中的continue语句如何,举个例子
此处for中的continue语句跳过了printf语句,但是由于i++在for循坏内,continue并没有跳过i++;i的值改变了,所以没有陷入死循坏,当i=5时,没有打印5.
do while循坏中的continue语句和while循坏中的基本一致,请读者下来自行验证。
今天的分享结束啦,希望对大家有帮助,不要忘记点赞哦。