顺序结构
即语句从上往下依次执行,编译器默认的读取顺序就是顺序结构,从第一条到最后一条一个接着一个完成。
分支结构
在生活中,往往会遇到选择的问题,我们需要凭借选择去完成去实现我们想要的效果,这时,我们会用到分支结构。
分支结构如下图
c语言中也有可以实现上图功能的语句
if语句
if语句多用在只判断一个条件的时候,如果符合条件,那么执行一个效果
在c语言中,0表示假,非0表示真,if()括号中的条件语句若是非0,则if后跟着的语句执行,若是0,则不执行
例如,如果a能够被2整除,那么打印a,代码如下
if(a%2==0)
printf("%d",a)
if else语句
在选择有两种情况时,会用到if-else语句
例如,判断一个数是奇数还是偶数,如果这个数不是奇数,那么他必定是偶数,只有这两种情况,这时,可以用if-else语句,代码如下
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if(num % 2 == 1)
printf("%d是奇数",a)
else
printf("%d是偶数",a)
return 0;
}
if else if else 语句(if嵌套)
如果选择时遇到三种及以上的情况时,那么就需要用到if else if else语句
第一个判断用if,中间的用else if (即在else后再加一个if增加分支条数),最后其他情况用else。
例如,在判断一个数的正负性时,就有三种情况需要分别列举,0、正数、负数,那么这时就要 用到else if,代码如下
#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a)
if(a==0)
printf("%d是0",a)
else if(a>0)
printf("%d是正数",a)
else
printf("%d是负数",a)
return 0;
}
特别注意 :
1.当if或者else if或者else里面要执行的语句大于一条时,要给执行语句加一个{},此时{}里的多条语句被称为复合语句或者叫做程序块。如果不加{}那么第二条往下的语句将不遵从条件语句的判断结果。
2.else会跟最接近它的if组成一个if-else结构,如果程序里第一个if的执行语句里还有if,而想要让第一个if和else组成if-else结构,那么要给第一个if后的语句加一个{}。例代码如下
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
printf("hehe\n");
}
else//这里的else与第六行的if组成if-else结构
{
printf("haha\n");
}
return 0;
}
switch结构
除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的if...else 结构,⽤于判断条件有多个结果的情况。它把多重 else if 改成更易懂、可读性更好的形式。
switch的基本结构如下
switch (expression) {
case value1: statement
case value2: statement
default: statement
}
根据expression的不同来执行case语句,如果没有对应的case值,那么执行default语句。
注意:expression必须是整形类型。
case后面的值必须是整形常量表达式。
例如,判断除以3以后的余数时,if语句如下:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if(n%3 == 0)
printf("整除,余数为0\n");
else if(n%3 == 1)
printf("余数是1\n");
else
printf("余数是2\n");
return 0;
}
用switch结构的代码如下:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
注意:1. case和后面的整形常量表达式中间一定要有一个空格。
2.在执行完一个case语句后,一定要加一个break语句才能跳出switch,否则会按顺序结构依次往下执行语句。
循环结构
在生活中,我们常常会做一些重复的事情,有时会感到千篇一律会感到有点厌烦。
在程序的世界里也经常如此,如果每次做这件事的时候就要写重复的代码,会降低代码效率,所以这时就需要用到循环结构。
while循环
while结构的执行图如下:
while循环与if结构语法上有相似点,while结构如下
while(条件语句)
语句;//如果是复合语句(程序块)需要加上{}
当我们想要打印无限的hehe时就要用到while循环,代码如下:
#include <stdio.h>
int main()
{
while(1)//只要条件语句为真那么就执行语句
printf("hehe\n");
return 0;
}
while的实践:打印1-10
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
for循环
使用最多的循环还是for循环,for循环的结构如下:
for(表达式1; 表达式2; 表达式3)
语句;
for循环流程图如下:
首先执行表达式 1 初始变量赋值;接下来就是表达式 2 的判断部分, 表达式 2 的结果如果 表达式 2 的结果==0,那么循环结束,如果!=0,则再次执行循环语句,循环语句执行完后,再去执行表 表达式 3,调整循环变量,然后再去表达式 2 的地方判断结果是否为0,决定循环是否继续。
整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。
实践:用for循环打印1-10
#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 循环是先直接进⼊循环体,执行循环语句,然后再执行while后的条件语句, 条件表达式为真,就会进行下⼀次循环,表达式为假,则不再继续循环
实践:打印1-10
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}//复合语句(程序块)要加大括号
while(i<=10);
return 0;
}
do while语句相比前两个循环语句用的比较少,由于do while至少会执行一次语句,所以一些特别情况或者有特殊需求的情况下do while语句会比较好用。
break、continue语句
在循环语句中,我们会遇到需要提前跳出循环的情况,而c语言为这种情况提供了关键字,break和continue。
break的作用是当程序在循环语句内遇到break,则立即跳出循环,执行后面的语句。
continue的作用是当程序在循环语句内遇到continue,跳过continue后面的代码,直接跳到循环的判断部分。
break实例:
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;//当i=5时,循环便立即终止了
printf("%d ", i);
i = i+1;
}
return 0;
}
continue实例:
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
//当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅
//因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环
printf("%d ", i);
i = i+1;
}
return 0;
}