分支结构:对某个可变元素,在此元素的不同状态下执行不同的过程。
循环结构:在某一条件下重复执行某一过程,直到该条件不被满足。
C语言中分支结构的实现依靠两组关键字,分别是if-else 和 switch-case-break。下面先介绍if-else。
首先写
if(条件一)
表示在满足条件一时执行下面的一条语句,例如
if(a % 2 == 1) printf(“a是奇数”);
表示在满足2除a的余数是1的条件下,打印“a是奇数”,即如果2除a余1,则打印“a是奇数”。上述操作符“==”表示判断该符号两边的值是否相等,若相等则为真(“真”的值是非零的数),即表示满足条件;若不相等则为假(“假”的值为0),即表示不满足条件。(⚠️:如果错将操作符“==”写成了“=”,则表达式的意义变为赋值而不是判断。)
所以“if(表达式)”的意义是:若表达式的值非零(表达式为真),则执行下面的一条语句;若表达式的值是零(表达式为假),则不执行(跳过)下面的一条语句。
如果想让“if(表达式)”控制多条语句,应在“if(表达式)”后面写“{}”,此时大括号里所有语句的执行与否都受“if(表达式)”的控制。
在实际问题中,有时会遇到需同时判断具有一定关系的多个表达式的情况。例如
if(表达式一 而且 表达式二)
if(表达式一 或者 表达式二 或者 表达式三)
这时就需要用到两个操作符“&&(且)”和“||(或)”了。在表示“而且”的时候,在表达式之间加上“&&”即可。例如
if(a <= 1 && a>= 1) printf(“a = 1”);
(注:上述操作符“<=”和“>=”均类似于“==”,表示判断成立则为真,判断不成立则为假)
同理,在表示“或者”的时候,在表达式之间加上“||”即可。
例一 写一个程序判断一个1~10000的正数的数量级。
如果这样写
#include<stdio.h>
int main()
{int a = 0;
scanf(“%d”,&a);
if(a < 10)
printf(“0”);
if(a < 100 && a >= 10)
printf(“1”);
……
if(a<10000 && a >= 1000)
printf(“3”);
if(a == 10000)
printf(“4”);
return 0;}
注意到从第二步开始每一步都要写“&&”,而且“&&”后的表达式总是上一步的否定,比较麻烦,为了简化书写,我们引入关键字“else”。“else”表示若不满足其上面的if控制的所有条件,则执行下面的一条语句;否则不执行(跳过)下面的一条语句。例如:
if(a % 2 == 1)
printf(“a是奇数”);
else
printf(“a是偶数”);
同样地,如果想让else控制多条语句,应在else后面写“{}”,把要控制的所有语句写在大括号里即可。
这样,我们就可以通过“else if(表达式)”来实现对“不满足上面if控制的条件而且满足这个if控制的条件”的判断。例如例一可改写为:
#include<stdio.h>
int main()
{int a = 0;
scanf(“%d”,&a);
if(a < 10)
printf(“0”);
else if(a <100)
printf(“1”);
else if(a < 1000)
printf(“2”);
else if(a < 10000)
printf(“3”);
else
printf(“4”);
return 0;}
(作者已菜死)