控制程序按特定的条件执行,按照特定的逻辑实现代码的运行。
1、顺序执行
顺序执行就是按照程序从上到下依次的执行。
2、选择执行
选择执行是想让有些代码按照特定的逻辑运行,符合逻辑时执行,不符合逻辑时不执行的执行顺序。(本文主要讲解选择执行)
3、循环执行
循环执行就是让某段程序一直执行,直到不符合循环执行的条件时,退出循环执行。
if (表达式){
当表达式为真时,需要执行的语句
}else{
当表达式为假时,需要执行的语句
}
示例1: if最简单的用法
#include
int main(void)
{
// 因为3>1恒成立,所以就会执行printf语句
if (3 > 1)
printf("AAA\n");
return 0;
}
if 默认只能控制一个语句的执行与不执行,如果想要控制多个语句的执行或不执行就必须把这些语句用{}括起来。
#include
int main(void)
{
if (0 > 1)
printf("AAA\n");
printf("BBB\n");
return 0;
}
/*
总结:
如果表达式为真,输出结果为AAA
如果表达式为假,输出结果为BBB
if默认的只能控制一个语句的执行或不执行
*/
#include
int main(void)
{
if (3 > 2);
// 当用大括号包裹起来时,就是执行整个大括号中的内容
{
printf("AAA\n");
printf("BBB\n");
}
}
else和离它最近的且没有配对的if进行匹配。
#include
int main() {
// 定义变量
int Number;
printf("Please enter a number: ");
scanf("%d", &Number);
// 判断输入的数字是否大于零,如果大于零输出数字大于零,否则输出数字小于零
if (Number > 0) {
printf("The number > 0");
}
else
{
printf("The number < 0");
}
return 0;
}
#include
int main(void)
{
int i = 0;
while (i < 3)
{
double num;
printf("请输入一个数字:");
scanf("%lf", &num);
if (num > 1)
printf("AAA\n");
else if (num == 0) // 判断相等为双等号。
printf("BBB\n");
else
printf("CCC\n");
i++;
}
}
示例:
#include
int main(){
// 初始化变量
int num = 0;
int score = 0;
// 输入变量的值
printf("please enter a num:");
scanf("%d", &num);
printf("Please enter you score:");
scanf("%d", &score);
// 判断条件,如果输入的num正确则进入判断分数的程序,并判断分数的等级。
// 如果输入的num不正确,则输出num错误
if(num == 111){
printf("welocme");
if (score > 60){
printf("you score level is D");
}
}else{
printf("the num error");
}
return 0;
}
非零即真
零就是假
#include
int main(void)
{
float souce;
printf("请输入分数:");
scanf("%f", &souce);
if (souce > 100)
printf("输入超限!!!");
else if (90 <= souce&&souce <= 100) //90-100 优秀
printf("优秀\n");
else if (80 <= souce&&souce < 90) //80-90 良好
printf("良好\n");
else if (60 <= souce&&souce < 80) //60-80 及格
printf("及格\n");
else
printf("不及格\n"); //0 - 60 不及格
return 0;
}
#include
int main(void)
{
int i = 1;
int j = 2;
int t; //中间变量
t = i;
i = j;
j = t;
printf("%d %d", i ,j);
}
#include
int main(void)
{
while (1)
{
int a, b, c; //定义三个变量
int d; //定义中间变量
printf("请输入三个数值,空格间隔:\n");
scanf("%d %d %d", &a, &b, &c);
if (a > b && b > c)
printf("降序排序为:%d %d %d\n", a, b, c);
else if (b > a && a > c)
{
d = a; a = b; b = d; //交换a b值
printf("降序排序为:%d %d %d\n", a, b, c);
}
else if (c > a && a > b)
{
d = c; c = a; a = d; //交换a c值
d = b; b = c; c = d; //交换b c值
printf("降序排序为:%d %d %d\n", a, b, c);
}
else if (c > b && b > a)
{
d = c; c = a; a = d; //交换a c值
printf("降序排序为:%d %d %d\n", a, b, c);
}
else if (b > c && c > a)
{
d = a; a = b; b = d; //交换a b值
d = b; b = c; c = d; //交换b c值
printf("降序排序为:%d %d %d\n", a, b, c);
}
else
{
d = b; b = c; c = d; //交换b c值
printf("降序排序为:%d %d %d\n", a, b, c);
}
}
return 0;
}
#include
int main(void)
{
int a, b, c;
int d;
while (1)
{
printf("请输入三个数字:\n");
scanf("%d %d %d", &a, &b, &c);
if (a > b)
{
if (a > c)
{
if (b > c)
printf("%d %d %d\n", a, b, c);
else
printf("%d %d %d\n", a, c, b);
}
else
printf("%d %d %d\n", c, a, b);
}
else
{
if (b > c)
{
if (a > c)
printf("%d %d %d\n", b, a, c);
else
printf("%d %d %d\n", b, c, a);
}
else
printf("%d %d %d\n", c, b, a);
}
}
return 0;
}
1、空语句的问题
2、即便表达式1和2都成立,也只会执行一个语句。
switch 程序根据表达式的值跳转到相应的case值处,然后执行剩下的所有语句,除非执行到break语句进行重定向。表达式和case标签都必须式整数值(包括char类型),标签必须是常量或完全由常量组成的表达式。如果没有case标签与表达式的值匹配,控制则转之标有default语句(如果有的话);否则,将转至执行紧跟在switch后面的语句。
switch (整型表达式)
{
case 常量1:语句; break;
case 常量2:语句; break;
default:语句;
break;
}
1、所有case后面的常量表达式为便于描述我们姑且称为标签,这些标签都只能是
(1)枚举常量
(2)数值常量
(3)字符常量
(4)常变量
(5)宏名中的一种,注意普通变量,枚举变量是不能作为标签使用的。
2、switch后面括号里的表达式允许是任何类型。
3、 switch是选择不是循环,如果在switch中出现了break语句,该语句的功能只是退出
switch语句去执行它下面的语句。在switch中出现continue是错误的,除非switch本身
就属于for或while循环的一部分。
4、default语句 可选。
#include
int main() {
// 定义变量
int Number;
printf("Please enter a number:");
scanf("%d", Number);
// 判断输入的数字是否0或1
switch (Number)
{
case 0:printf("输入的数字为零"); break;
case 1:printf("输入的数字为壹"); break;
default:printf("输入的数字非零非壹");
break;
}
return 0;
}
多重标签为有的case语句后没有break,执行完当前case语句后会继续执行后面的语句,不会退出switch。当遇到break时,会退出switch语句。
# include
int main(){
// 定义变量
int num = 0;
// switch选择结构
switch (num)
{
// 当第一个case值满足表达式的值且case语句没有break时,第一个case语句执行完成后,
// 会执行后面的case语句,遇到break后退出switch。
case 0 :
case 1: printf("输入的数字为0或1");break;
case 2:
case 3: printf("输入的数字为2或3");break;
default:printf("不在范围内");
break;
}
return 0;
}