什么是流程控制?
选择
if
-
if的简单用法:
if(表达式){ 语句 } //如果表达式为真,执行'{}'内的语句 //如果表达式为假,不执行语句 //如果语句为单条语句,'{}'可以省略
-
if的范围问题:
如果if后有'{}',则'{}'内所有语句都属于if内,如果if后没有'{}',则只有if后面的第一条语句属于if内,后面的else和else if与if遵循同样的原则。
-
if…else…的用法:
if(表达式){ 语句1 }else{ 语句2 } //如果表达式为真则执行语句1 //如果表达式为假,则执行语句2
-
iif…else if…else…的用法:
if(表达式1){ 语句1 }else if(表达式2){ 语句2 }else if(表达式n){ 语句n }else{ 语句3 } //else前面可以有任意个else if //如果表达式1为真则执行语句1 //如果表达式1为假, //从上到下依次判断else if的表达式是否为真值 //知道找到第一个为真的表达式,执行表达式后的语句 //若所有表达是都为假,则执行else后语句
-
C语言对真假的处理:
- 表达式的值非零就是真,是零就是假。
- 真的值就是1,假的值就是0;
printf("%d",true);//输出结果为1
printf("%d",false);// 输出结果为0
-
if举例(对学生的分数评级):
根据下表编写代码,输入数据,给出等级:等级 -100 0-90 0-80 -60 #include<stdio.h> int main(){ int sc = 0;//考试分数 scanf("%d",&sc);//从键盘上输入分数 if(sc>100||sc<0) printf("输入数据不规范"); else if(sc>=90) printf("优秀!"); else if(sc>=80) printf("良好!"); else if(sc>=60) printf("及格!"); else printf("不及格!"); return 0; }
-
三目运算符
语句1?语句2:语句3 //三目运算符表达式等价于下面的代码 if(语句1) 语句2; else 语句3;
-
逗号表达式
int i = (语句1,语句2,语句3,语句4); //圆括号内的即为括号表达式 //表达式从左到右依次执行 //且表达式的值为左右一个语句的值,即i的值为语句4。
switch
-
switch的用法
当变量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,并依次下去执行后面所有case语句中的语句,除非遇到break;语句跳出switch语句为止。如果常量表达式的量与所有case语句的常量都不相符,就执行default语句中的语句。#include<stdio.h> int main(){ int i = 0; scanf("%d",&i); switch (i) { case 1: printf("1"); case 2: printf("2"); case 3: printf("3"); case 4: printf("4"); default: printf("没有"); } }
-
break和continue
break: 用break语句可以使流bai程跳出switch语句体,也du可以用break语句在循环结构终止本层循环体,从而提zhi前结束本层循环。continue: continue语句的作用是跳过本次循环体中余下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为仅结束本次循环。
循环
定义:某些代码(循环体)会被有限次执行
for循环
-
for循环的基本用法
for(语句1;语句2;语句3;){ 循环体 }
上面的就是for循环的基本语法,在代码的执行过程中,语句1先且只在循环最开始执行一次,当语句2的值为非零时执行循环体(语句2一般为判断语句),循环体执行成功后执行语句3(此时为完成一次循环),之后重新判断语句2
-
代码实例(计算1到100包括100中所有偶数的和)
#include<stdio.h> int main(){ int sum = 0;//保存最后的和 for(int i = 2;i <= 100;i += 2){ sum = sum + i; } printf("%d",sum); return 0; }
while循环与do…while循环
-
执行顺序
whilewhile(表达式){ 循环体 } 只要表达式为真,就执行循环体,然后重新判断表达式内容
do while
do {循环体 }while(表达式); 先执行一边循环体,在判断 只要表达式为真,就执行循环体,然后重新判断表达式内容
-
与for循环比较
三种循环的本质其实相同,只是表达的方式不同而已。 -
代码实例(计算1到100包括100中所有偶数的和)
while
#include<stdio.h> int main(){ int sum = 0;//保存最后的和 int i = 0; while(i <= 100){ sum = sum +i; i+=2; } printf("%d",sum); return 0; }
do while
#include<stdio.h> int main(){ int sum = 0;//保存最后的和 int i = 2; do{sum = sum +i; i += 2; }while(i <= 100); printf("%d",sum); return 0; }