C语言流程控制语句
本文最后更新于 101 天前,其中的信息可能已经有所发展或是发生改变。

Views: 0

if语句

使用场景:某些代码,在满足条件的时候才执行

利用if语句对数据进行判断,从而执行不同的代码

格式

if(关系表达式){
     语句体;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
        int a, b;
        printf("请输入两个数字:");
        scanf("%d %d", &a, &b);
        if (a < b)
        {
                printf("大的数字为:%d",b);
                if (a>b)
                {
                        printf("大的数字为:%d", a);
                }
        }
        else
        {
                printf("两个数字一样大");
        }
                return 0;
                }

细节1:在C语言当中,如果判断的结果是一个数字,非0表示条件成立,0表示条件不成立

细节2:如果大括号里面的语句体只有一行,那么大括号可以省略不写(但是还是写的好)

if(关系表达式)
{
    语句体A;
}
else
{
语句体B;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
        double w;
        printf("请输入人的温度:");
        scanf("%lf",&w);
        if (w > 37.5)
        {
                printf("温度过高,语音警报");
        }
                return 0;
                }
if(关系表达式A){
     语句体A;
}
else if(关系表达式B){
     语句体B;
}
else if(关系表达式C){
     语句体C;
}
else{
     语句体N;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
        /
需求:
                键盘录入游戏氪金的总额度,不同的额度VIP等级也不一样
                        1~99元 : 尊贵的VIP1
                        100~499元 : 尊贵的VIP2
                        500~999元 : 尊贵的VIP3
                        1000~1999元 : 尊贵的VIP4
*                        2008~5000元 : 顶级的VIP5*
/
                int money;
                printf("录入游戏氪金的总额度:\n");
                scanf("%d", &money);
                if (money ==0)
                {
                        printf("0冲玩家\n");
                }
                else if (money>=1 && money<=99)
                {
                        printf("尊贵的VIP1\n");
                }
                else if(money>=100 && money<=499)
                {
                        printf("尊贵的VIP2\n");
                }
                else if (money >= 500 && money <= 999)
                {
                        printf("尊贵的VIP3\n");
                }
                else if (money >= 10000 && money <= 1999)
                {
                        printf("尊贵的VIP4\n");
                }
                else
                {
                        printf("顶级的VIP5\n");
                }
                return 0;
                }

switch语句

作用:把所有的选择一一列举出来,根据不同的条件任选其一

switch(表达式){
    case 值1:
       语句体1;
       break;
    case 值2:
       语句体2;
       break;
     ...
    default:
      语句体n;
      break;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
//需求:键盘录入月份数,输出输出对应的季节。
//春季:3、4、5月份
//夏季 : 6、7、8月份
//秋季 : 9、18、11月份
//冬季 : 12月份到次年的2月份
        int month;
        printf("请输入月份:");
        scanf("%d",&month);
        switch (month)
        {
        case 12:
        case 1:
        case 2:
                printf("冬季\n");
                break;
        case 3:
        case 4:
        case 5:
                printf("春季\n");
                break;
        case 6:
        case 7:
        case 8:
                printf("夏季\n");
                break;
        case 9:
        case 10:
        case 11:
                printf("秋季\n");
        default:
                printf("没有这个月份\n");
                break;
        }
        return 0;
}

执行流程:

首先计算表达式的值。

依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句

格式细节说明:

表达式:计算结果只能为(字符/整数)

case:值只能是(字符 /整数)的字面量,不能是变量

case:值不允许重复

break:表示中断,结束的意思,结束switch语句

defaut:所有情况都不匹配,执行该处的内容 defaut可以写在任意位置,甚至可以省略不写

switch和if第三种格式各自的使用场景:

switch:有限个case进行匹配的情况,10个左右

if:一般是对一个范围进行判断

case穿透的规则:

还是根据小括号中表达式的结果去匹配对应的case

执行对应case里面的代码

如果在执行的过程中,遇到了break,那么直接结束整个switch,但是如果没有遇到break,就会继续执行下面case中的代码,直到遇到break,或者把整个switch中所有的代码全部执行完了,才会结束

细节:case穿透只会往下穿,不会回上面

循环结构

循环:重复的执行某件事情

for循环

for(初始化语句;条件判断语句;条件控制语句){
     循环体语句
}
//每段代码是单独的,用的时候注释掉其他
#include<stdio.h>
int main() {
        for (int i = 0; i <5; i++)
        {
                printf("你早睡了吗?\n");
        }
 
//需求:在实际开发中,如果要获取一个范围中的每一个数据时,就会用到循环
//要求1 : 打印1 - 5
//要求2 : 打印5 - 1
        for (int i = 1; i <= 5; i++) {
                printf("%d\t", i);
        }
        printf("\n");
        for (int j = 5; j >= 1; j--) {
                printf("%d\t", j);
        }
//需求:在实际开发中,如果要获取一个范围中的每一个数据时,也会用到循环。
// 要求:求1 - 5之间的和
//变量的生命周期:变量只在所属的大括号中有效
        int s=0;
        for (int i = 1; i <= 5; i++) {
                s = i + s;
        }
        printf("%d\n", s);
//需求:在实际开发中,如果要获取一个范围中的每一个数据时,会用到循环。
// 但是,如果不想获取所有的数据,而是获取其中符合要求的数据,此时就需要循环和其他语句结合使用了。
// 比如:求1 - 100之间的偶数和
        int s = 0;
        for (int i = 1; i <= 100; i++) {
                if (i%2==0)//判断,只有当前的数字是偶数的时候,才进行累加
                {
                        s = i + s;
                }
        }
        printf("%d\n", s);
//需求:键盘录入两个数字,表示一个范围。
//统计这个范围中。
//既能被6整除,又能被8整除数字有多少个 ?
        int a, b,count=0;//count用来统计个数
        printf("请输入两个数字代表范围:");
        scanf("%d %d",&a,&b);
        if (a < b) {//判断输入的两个哪个数字较大
                for (int i = a; i <= b; i++) {
                        if (i % 6 == 0 && i % 8 == 0) {
                                /
*printf("%d\n",i);*
/
                                count++;
                        }
                }
        }
        else {
                for (int i = b; i <= a; i++) {
                        if (i % 6 == 0 && i % 8 == 0) {
                                /
*printf("%d\n",i);*
/
                                count++;
                        }
                }
        }
        printf("既能被6整除,又能被8整除数字有%d个\n",count);
        return 0;
}

初始化语句:循环的开始条件

条件判断语句:循环的结束条件

条件控制语句:控制循环次数的

循环体语句:要重复执行的代码

执行流程: 1执行初始化语句 2执行条件判断语句,看其结果是否成立 成立:执行循环体语句 不成立:结束循环

3执行条件控制语句 4回到2继续执行条件判断语句

初始化语句只执行一次

判断语句成立,循环继续

判断语句不成立,循环结束

while循环

初始化语句
while(条件判断语句{
     循环体语句
     条件控制语句
};
#include<stdio.h>
int main() {
        //打印三遍你好!
        int n=1;
        while (n <= 3) {
                n++;
                printf("你好!\n");
        }
}

for和while的对比

相同点:运行规则都是一样的

for 和 while 的区别:

for循环中:知道循环次数或者循环的范围 while循环:不知道循环的次数和范围,只知道循环的结束条件

例题

#include<stdio.h>
int main() {
        //给你一个整数 n,请你判断该整数是否是2的幕次方举例 :
        //n = 1     输出 : yes 2的0次方
        //n = 2     输出 : yes 2的1次方
        //n = 3     输出 : no
        //n = 4     输出 : yes 2的2次方
        //n = 5     输出 : no
        //规则:任意的一个数字,不断的除以2,, 最终都会得到数字1
        //循环的结束条件是什么 ? 1,结果是1的时候,就可以结束了 yes
        //结果无法被2再次整除了,也可以结束了,no

        int n;
        printf("请输入一个整数:");
        scanf("%d", &n);
        //利用循环不断的除以2
   //小括号里面写的是:什么情况下,循环可以继续执行,跟上面的推断是反过来的
        while (n > 1 && n % 2==0) {
                {
                        n = n / 2;
                }
        }
        if (n == 1) {
                printf("yes\n");
        }
        else
        {
                printf("no\n");
        }
        return 0;
}
#include<stdio.h>
int main() {
//需求:世界最高山峰是珠穆朗玛峰(8844.43米 = 8844430毫米)
// 假如我有一张足够大的纸,它的厚度是0.1毫米。
// 请问,我折叠多少次,可以折成珠穆朗玛峰的高度 ?
//思路:
//        利用循环折叠纸张,当纸张的厚度超过珠穆朗玛峰的高度,循环就结束了
//                循环的结束条件 : 纸张的厚度 > 穆朗玛峰的高度
        int height= 8844430;
        double paper = 0.1;
        int count = 0;
        //利用循环折兽纸张
        //小括号里面的内容:什么情况下,循环可以继续执行,跟上面的结束条件是反过来的
        while (paper <= height) {
                paper = paper * 2;
                count++;
        }
        printf("折叠%d次,可以折成珠穆朗玛峰的高度\n", count);
}

do…while语句

格式

初始化语句;
do {
循环体语句;
条件控制语句;
}while(条件判断语句);

从上到下执行;先执行后判断,循环体至少执行一次

#include<stdio.h>
int main() {
        //do while打印1-5
        int t=1;
        do
        {
                printf("%d\n", t);
                t++;
        } while (t <= 5);
        return 0;
}

无限循环

三种格式

#include<stdio.h>
int main() {
        for (;;) {
                printf("无限循环\n");
        }
        /
while (1) {
                printf("无限循环\n");
        }
        do {
                printf("无限循环\n");
*        } while (1);*
/
        return 0;
}
//注意点:无限循环因为永远停不下来,所以下面不能再写其他的代码了

跳转控制语句

跳转控制语句:在循环的过程中,跳到其他语句上执行

Break

不能单独书写,只能写在switch,或者是循环中,表示结束,跳出的意思

#include<stdio.h>
int main() {
        /
找符合要求的数字
*                在1~100之间,找第一个既能被3,又能被5整除的数字*
/
        /
int i=0;
        while (i < 100) {
                i++;
                if (i % 3 == 0 && i % 5 == 0) {
                        printf("%d\n", i);
                        break;
                }
*        }*
/
        for (int i = 1; i <= 100; i++) {
                if (i % 3 == 0 && i % 5 == 0) {
                        printf("%d\n", i);
                        break;
                }
        }
        return 0;
}

Continue

只能写在循环中,表示跳过本次循环,继续执行下次循环

#include<stdio.h>
int main() {
                //小全全早上一共买了5个包子,吃到第三个包子时,发现里面有个虫子。直接扔掉不吃了,开始吃下一个包子
        for (int i = 1; i <= 5; i++) {
                if (i == 3) {
                        continue;
                }
                printf("在吃第%d个包子\n", i);
        }
        return 0;
}

嵌套循环

循环嵌套:循环里面还有其他循环

1.先判断最外层循环条件,若满足条件则进入第一层循环体;

2.进入第一层循环体后进行第二层循环条件判断,若满足判断条件,进入第二层循环体;

3.由内而外执行循环体操作;

4.执行完第一次内循环体操作后,进行内循环体变量累加,再次执行内循环体操作,直到不满足进入内循环体条件为止;

5.执行外循环体操作;

6.在第一次外循环体操作完成后,外循环体变量累加,回到步骤1,判断是否满足进入外循环体条件,若满足条件,再次依次执行上述步骤,直到不满足进入外循环体条件为止;

7.彻底退出嵌套循环操作。

#include<stdio.h>
int main() {
        //打印矩形
        for (int i = 1; i <= 3; i++) {
                for (int j = 1; j <= 5; j++) {
                        printf("*");
                }
                printf("\n");
        }
        printf("\n");
        //打印三角形
        //解释代码
        // 打印第一行的*       内循环:1~5
        // 打印第二行的*       内循环:2~5
        // 打印第三行的*       内循环:3 ~5
        //.....
        for (int i = 1; i <= 5; i++) {
                for (int j = i; j <= 5; j++) {
                        printf("*");
                }
                printf("\n");
        }
        printf("\n");
        for (int i = 1; i <= 5; i++) {
                for (int j = 1; j <= i; j++) {
                        printf("*");
                }
                printf("\n");
        }
        printf("\n");
        //打印乘法表
        for (int i = 1; i <= 9; i++) {//多少行
                for (int j = 1; j <= i; j++) {//多少列
                        int a = i * j;
                        printf("%d*%d=%d\t", j, i, a);// \t:制表符 长度可变的大空格
                }
                printf("\n");
        }
        return 0;
}

\t:制表符 长度可变的大空格

会根据前面字母的个数在后面补空格,让整体的长度达到8或者8的倍数,最少补1个,最多补8个

作用:打印表格数据的时候,可以对齐

版权声明

本网站名称:学海拾茜
本文链接:https://www.61lyf.top/ccs/
本网站的文章部分内容可能来源于网络,仅供学习与参考,如有侵权,请联系站长进行核实删除。
转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处并附带原文链接!!!
站长邮箱:cyg1900@outlook.com 或studygod825@qq.com ,如不方便留言可邮件联系。
暂无评论

发送评论 编辑评论


				
上一篇
下一篇