学习目标:流程控制语句
顺序结构
1. 顺序结构是程序默认的执行流程;
2. 顺序结构是从上而下依次运行的。
分支结构
if语句
作用:如果满足条件,才可以运行指定的代码。
使用场景:某些代码,在满足的条件下才执行。
格式1如下:
#include<stdio.h>
int main(){
/*
if 的格式:
if(关系表达式)
{
语句体;
}
*/
int temp;
if (temp > 37.5)
{
printf("警报");
}
return 0;
}
// 细节1:如果大括号里面的语句体只有一行,那么大括号可以省略不写(了解一下)
// 推荐 一定要写一下
格式2如下:
#include<stdio.h>
int main(){
/*
if 的格式:
if(关系表达式)
{
语句体A;
}
else
{
语句体B;
}
*/
int temp;
if (temp > 37.5)
{
printf("警报");
}
else
{
printf("安全");
}
return 0;
}
例题:
有一天胖虎考完试回来,妈妈根据他的分数给与相应的奖励:
- 奖励自行车一辆 95-100
- 奖励游乐场玩一天 90-94
- 奖励变形金刚一个 80-89
- 奖励棒槌一个 80以下
#include <stdio.h>
int main(){
int score;
printf("请输入胖虎的考试分数score:");
scanf("%d", &score);
if (score < 0 || score>100)
{
printf("该分数超出范围");
}
else if (score >= 95 && score<=100)
{
printf("奖励一辆自行车");
}
else if (score >= 90 && score <=94)
{
printf("奖励游乐场玩一天");
}
else if (score >=80 && score<=89)
{
printf("奖励变形金刚一个");
}
else
{
printf("胖揍一顿");
}
return 0;
}
注意: 为了代码逻辑完整性,必须考虑分数不在0-100区间的情况。
switch语句
作用: 把所有的选择一一列举出来,根据不同条件任选其一。
格式如下:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n;
break;
}
细节说明:
- 表达式:计算结果只能是(字符/整数)
- case:值只能是(字符/整数)的字面量,不能为变量且值不能重复哦
- break:表示中断,结束switch语句
- default:所有情况都不匹配,执行该处的语句内容
案例:我的朋友家喜欢吃鸡,作为作者的我劝都劝不住啊,刚好他家有7道鸡的菜品,以下是他家吃菜的安排:
- 周一:辣子鸡
- 周二:麻辣鸡
- 周三:椒麻鸡
- 周四:可乐鸡
- 周五:剁椒鸡
- 周六:香酥鸡
- 周日:肯德基
#include <stdio.h>
int main(){
int week = 1;
switch (week)
{
case 1:
printf("辣子鸡");
break;
case 2:
printf("麻辣鸡");
break;
case 3:
printf("椒麻鸡");
break;
case 4:
printf("可乐鸡");
break;
case 5:
printf("剁椒鸡");
break;
case 6:
printf("香酥鸡");
break;
case 7:
printf("肯德基");
break;
default:
printf("没有这个星期");
break;
}
return 0;
}
循环结构
开始条件 结束条件 控制开关
1 10 +1
初始化语句 条件判断语句 条件控制语句 循环体语句
for循环
/*
for(初始化语句;条件判断语句;条件控制语句)
{
我 是 小程同学
循环体语句
}
*/
#include <stdio.h>
int main(){
int i;
for(i=1; i<=5; i++)
{
printf("我是小程同学\n");
}
return 0;
}
输出:
我是小程同学
我是小程同学
我是小程同学
我是小程同学
我是小程同学
案例: 我的朋友遇到了个小问题,他想快速计算随意两个数范围之间的既能被6整除又能被8整除的数的个数,我觉得他说的话有点绕口,所以我简洁的捕捉到他的条件:
- 用户输入两个数a,b
- 遍历在a和b之间的数num
- 找到既满足num%60,又满足num%80
- 计算符合条件的数的个数
#include <stdio.h>
int main(){
int num1, num2;
int c=0;
printf("请输入两个数:");
scanf("%d %d", &num1, &num2);
if (num1 > num2){
for(num2; num2<num1; num2++){
if((num2%6==0) && (num2%8==0)){
c+=1;
}
}
}
else{
for(num1; num1<num2; num1++){
if((num1%6==0) && (num1%8==0)){
c+=1;
}
}
}
printf("%d\n", c);
return 0;
}
while循环
/*
初始化语句
while(条件判断语句)
{
循环体语句
条件控制语句
}
*/
#include <stdio.h>
int main(){
int i = 1;
while (i <= 3)
{
printf("我是小程同学\n");
i++;
}
return 0;
}
for和while的区别
相同点: 运行规则是一样的
区别:
- for循环中,控制循环的变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
- while循环中,控制循环的变量,对于while循环来说不归属其语法结构中,在while循环结束厚,该变量还可以继续使用
使用的条件区别:
- for循环中:知道循环次数或者循环的范围
- while循环:不知道循环的次数和范围,只知道循环的结束条件
例子:请用c写一个回文数判断程序(回文数是正序和倒序都是一样的数)
#include <stdio.h>
// 回文数
int main(){
int num, num1;
int temp;
int rev = 0;
printf("请输入一个数:");
scanf("%d", &num);
num1 = num;
while (num != 0)
{
temp = num % 10;
num = num /10;
rev = rev *10 + temp;
}
if (rev == num1)
{
printf("%d是回文数\n", num1);
}
else
{
printf("%d不是回文数\n", num1);
}
return 0;
}
//注意:num必须通过变量提前赋值出来,不然后续直接采用num的值一定是经过while循环处理过的,num==0,导致判断一直报错。
循环语句(高级)
跳转控制语句
作用: 在循环的过程中,跳到其他语句上执行。
break 不能单独书写,只能卸载switch,或者循环中,表示结束跳出的意思。
continue 只能写在循环中,表示跳出本次循环,继续执行下次循环。
#include <stdio.h>
// 寻找1-100中第一个既能被6整除也能被5整除的数
int main(){
int i = 1;
for (i;i<=100;i++){
if(i%6==0 && i%5==0){
printf("%d", i);
break;
}
}
return 0;
}
标签:语句,int,day2,嵌入式,break,while,循环,printf,C语言
From: https://blog.csdn.net/weixin_46281529/article/details/143941487