分支语句
分支语句:一种描述判断后进行选择的过程结构
1. if语句
格式: if(条件表达式){语句;} 条件表达式:关系,逻辑,赋值,算法
if(表达式1){语句1;}else{ 语句2;}
如果表达式1满足条件,执行语句1,不会执行语句2,如果表达式1不满足条件呢,不会执行表达式1,而只会执行表达式2。
if (age>18)`在这里插入代码片`
{
printf("你是老男人\n");
}
if (age<18)
{
printf("你是老司机\n");
}
if嵌套
if(表达式1)
{
if(表达式2)
{
表达式3;
}
else
{
表达式4;
}
}
else
{
if(表达式5)
{
表达式6;
}
}
if (x > y)
{
//x 和z比较
//printf("%d最大", x > z ? x : z);
if (x > z)
{
printf("x最大");
}
else
{
printf("z最大");
}
}
else
{
//y和z比较
//printf("%d最大", y > z ? x : z);
if (y > z)
{
printf("y最大");
}
else
{
printf("z最大");
}
}
如果表达式1满足,继续判断表达式2,如果表达式2满足执行表达式3,如果表达式2不满足执行表达式4。
如果表达式1不满足,直接继续判断表达式5,如果表达式5满足执行表达式6,否则都不执行。
if(条件判断1){语句1}else if(条件判断2){ 语句2}else {语句3};
如果条件判断1满足条件,执行语句1,语句2和3不会执行,如果条件1不满足,继续判断条件2,如果条件2满足执行语句2后结束,如果两个条件都不满足,执行语句3.注意,如果第一个条件满足,第二个条件也满足的情况下,只执行语句1。
int score = 0;
printf("请输入成绩\n");
scanf("%d", &score);
if (90 <= score)
{
printf("A");
}
else if (80 <= score)
{
printf("B");
}
else if (70 <= score)
{
printf("C");
}
else if (60 <= score)
{
printf("D");
}
else
{
printf("E");
}
2.开关语句
switch(表达式)
{
case 常量1:语句块1;break;
case 常量2:语句块2;break;
。。。
case 常量n:语句块n;break;
default: 语句块m;break;
}
printf("******学生管理系统******\n");
printf("*** 1.添加学员 **\n");
printf("*** 2.修改学员信息 **\n");
printf("*** 3.删除学员 **\n");
printf("************************\n");
int temp = 0;
scanf("%d", &temp);
switch (temp)
{
case 1:
printf("添加学员成功\n");
break;
case 2:
printf("修改学员成功\n");
break;
case 3:
printf("删除学员成功\n");
break;
default:
printf("输入错误\n\n");
break;
}
3.循环语句
while循环
基本形式: while(条件表达式){循环体}
执行顺序: 首先判断表达式是否满足,如果不满足跳过循环体直接执行大括号后面的代码,如果表达式满足条件,执行循环体,遇到循环的括号后,继续进行表达式判断,如果满足会继续执行循环体,直到条件表达式不满足。
死循环:条件一直满足不断的执行,没有结束的时候。
while(1); while(1){xxxxx}
一般情况下while小括号后面不可以加分号
int main1()
{
int x = 0;
while (x <= 100)
{
printf("x = %d\t", x);
x++;
}
getchar();
return 0;
}
do…while()循环
语法规则:do{循环体}while(条件表达式);
执行规则:首先执行循环体,执行完成后判断条件表达式是否满足条件,如果满足继续执行循环体否则结束循环。
注意点:在while后一定要加分号;
区别:while是先判断后执行,有可能一次都不会执行循环体,如果循环次数由循环体决定,一般用while循环
do…while先执行一次,在判断条件是否满足,至少会执行一次。
如果知道循环次数的情况下,一般用for循环,for循环用的最多,while其次,最后是do。。。while
三者可以嵌套使用,每个循环都可以用其他循环替代
break----适用于所有循环中,遇到break退出当前循环。
continue–适用于所有循环中,遇到continue结束当次循环。
do
{
printf("请输入1到100的数字\n");
scanf("%d", &x);
if (x < 0 || x>100)
{
printf("输入的数字条件不满足\n");
}
else if (x > temp)
{
printf("猜大了\n");
}
else if (x < temp)
{
printf("猜小了\n");
}
else
{
//printf("恭喜半仙 你猜对了\n");
//break;
printf("恭喜半仙 你猜对了\n");//不会执行
}
if (10 == x)
continue;
printf("xxxxxxx\n");
} while (1);
for循环
格式: for(表达式1;表达式2;表达式3){循环体4}
表达式1:循环变量初始化值。
表达式2:条件判断
表达式3:循环变量的变化
执行顺序:首先执行表达式1,对变量进行初始化
然后判断表达式2是不是满足条件
条件满足执行循环体4,循环体完成后执行表达式3
1–>2–>4–>3
死循环: for(;1;){} for(;?{}
循环嵌套:
for(1;2;3){for(5;6;7){8} } //for(5;6;7){8}
执行顺序1 2 (5 6 8 7 6 8 7) 3 2 (4) 3
//公鸡 5块钱一只 母鸡3块钱一只,小鸡一块钱3只,现在100块钱要买100只鸡,问鸡各有多少只。
//所有都是公鸡 20 所有都是母鸡 33 小鸡300
for (int i = 0; i <= 20; i++)//公鸡
{
for (int j = 0; j < 34; j++)
{
for (int k = 0; k < 300; k++)
{
if (i + j + k == 100 && i * 15 + 9 * j + k == 300)//i*5+3*j+k/3 == 100
{
printf("小鸡%d,母鸡%d,公鸡%d\n", k, j, i);
}
}
}
}