C语言——循环和分支

本文介绍了C语言中的if、switch、for、while等基本控制结构,包括它们的语法、注意事项以及在实际编程中的应用,如菜单交互和变量作用域的讨论。
摘要由CSDN通过智能技术生成

分支结构

if 分支结构

if (condition) {
   
}

括号里面的值:为真或者假

没有中括号只执行下面一局

switch 分支结构

!注意点 !

!!!switch语句不执行case与default之外任何语句

()里面只能是整数和字符

int number = 0;
switch (number) 
{
    
    if (number == 0) 
    {
        printf("存在case之外的语句\n");
    }
case 0:
    if (number == 0) 
    {
        printf("满足case就执行\n");
    }
    printf("0");
    break;
default:
    printf("0");
    break;
}

!!!菜单交互

#include <stdio.h>
#include <stdlib.h>//system函数
#include <stdbool.h>//布尔函数
#include <conio.h>//getch ()函数
int main() 
{
    //菜单交互
    while (true) 
    {
        //绘制菜单
        printf("----------【xxx管理系统】--------\n");
        printf("\t0.退出系统\n");
        printf("\t1.录入\n");
        printf("\t2.删除\n");
        printf("\t3.修改\n");
        printf("\t4.查找\n");
        printf("----------------------------------\n");
        printf("请输入你的选择(0-4):");
        int userKey = 0;
        scanf_s("%d", &userKey);
        switch (userKey) 
        {
        case 0:
            break;
        case 1:
            printf("\t录入模块\n");
            break;
        case 2:
            printf("\t删除模块\n");
            break;
        case 3:
            printf("\t修改模块\n");
            break;
        case 4:
            printf("\t查找模块\n");
            break;
        default:
            printf("错误输入!");
            break;
        }
        if (userKey == 0)
            break;
​
        //system函数  stdlib.h包含即可使用
        system("pause");
        system("cls");
    }
    printf("退出菜单\n");
    while (true) 
    {
        int key = _getch();
        switch (key) 
        {
        case 'Q':
        case 'q':
            printf("释放Q技能\n");
            break;
        case 'W':
        case 'w':
            printf("释放W技能\n");
            break;
        case 'e':
        case 'E':
            printf("释放E技能\n");
            break;
        case 'R':
        case 'r':
            printf("释放E技能\n");
            break;
        case '\r':
            break;
        }
        if (key == '\r') 
        {
            break;
        }
    }
    printf("退出按键\n");
    while (true)
    {
        int key = _getch();
        switch (key)
        {
        case 'W':
        case 'w':
        case 72:
            printf("往上走!\n");
            break;
        case 's':
        case 'S':
        case 80:
            printf("往下走!\n");
            break;
        case 'a':
        case 'A':
        case 75:
            printf("往左走!\n");
            break;
        case 'd':
        case 'D':
        case 77:
            printf("往右走!\n");
            break;
        case '\r':
            break;
        }
        if (key == '\r')
        {
            break;
        }
    }
    printf("退出按键\n");
    return 0;
}

经典switch语句 达夫设备

达夫设备_百度百科 (baidu.com)

循环结构

for 循环结构

简单应用

#include <stdio.h>
#include <stdbool.h>
int main()
{
    1.单纯重复效果类
    for (int i = 0; i < 3; i++)
    {
        printf("鼓掌:啪啪啪\n");
    }
    //while (true) 
    //{
    //  //打印菜单
    //  //按键交互
    //}
    
    
    2.循环做递推操作
    //求和 1+2+3+4..+100
    int sum = 0;
    for (int i = 1; i <= 100; i++)
    {
        sum += i;
    }
    printf("sum=%d\n", sum);
    
    //斐波拉西数列
    //f1=1 f2=1 
    //f3=f2+f1=2
    //f4=f3+f2=3
    //f8=?
    int f1 = 1;
    int f2 = 1;
    int n = 0;
    printf("input n:");
    scanf_s("%d", &n);
    if (n == 1 || n == 2)
    {
        printf("1\n");
    }
    else
    {
    //1 1 2 3 5 8 13
    int result = 0;
    for (int i = 3; i <= n; i++)
        {
        result = f1 + f2;       //result=1+1   result=1+2   result=2+3
        f1 = f2;                //f1=1         f1=2         f1=3
        f2 = result;            //f2=2         f2=3         f2=5
        }
        printf("%d\n", result);
    }
    
    
    
    3.描述下标
    for (int i = 0; i < 10; i++) 
    {
        printf("下标:%d\n", i);
    }
    
    
    4.遍历区间
    //找数字--->100-1000 找能被2 3 4 5 6整除的数
    for (int i = 100; i <= 1000; i++) 
    {
        if (i % 2 == 0 && i % 3 == 0 && i % 4 == 0 && i % 5 == 0 && i % 6 == 0) 
        {
            printf("%d\t", i);
        }
    }
    printf("\n");
    return 0;
}
#include <stdio.h>
#include <stdbool.h>
int main() 
{
    1.描述表格的下标
    for (int i = 0; i < 4; i++)         //行
    {
        for (int j = 0; j < 3; j++)     //列
        {
            printf("%d-%d\t", i, j);
        }
        printf("\n");                   //描述行列变化
    }
    
    
    2.行与数目的关系
    /*
        *      1行   1个
        **     2行   2个
        ***    3行   3个
        ****   4行   4个
        ....
               i行   i个
    */
    for (int i = 1; i <= 4; i++)    //行 
    {
        for (int j = 1; j <= i; j++) 
        {
            printf("*");
        }
        printf("\n");
    }
​
    /*
0000*      1行   1个
000***     2行   3个
00*****    3行   5个
0*******   4行   7个
*********           2*i-1
    ....
           i行   i个
*/
    for (int i = 1; i <= 5; i++) 
    {
        for (int j = 1; j <= 5 - i; j++) 
        {
            printf(" ");
        }
        //把*的规律描述一下即可
        for (int k = 1; k <= 2 * i - 1; k++) 
        {
            printf("*");
        }
        printf("\n");
    }
    
    
    
    3.外层循环用来描述区间,内层循环用来筛选
    //求素数 100-1000之间素数
    //只能被自身和1整除的数
    //标记法
    int count = 0;
    for (int i = 100; i <= 1000; i++)   //区间
    {
        //i=
        int flag = 0;
        for (int j = 2; j < i; j++) 
        {
            if (i % j == 0) 
            {
                flag = 1;
                //不做跳转会浪费时间
            }
        }
        if (flag == 0) 
        {
            printf("%d\t", i);
            count++;
            //调整打印格式
            if (count % 8 == 0) 
            {
                printf("\n");
            }
        }
    }
    printf("\n");
    count = 1;
    for (int i = 0; i < 4; i++)         //页
    {
        for (int j = 0; j < 3; j++)     //行
        {
            for (int k = 0; k < 5; k++) //列
            {
                printf("第%d次打印:", count++);
                printf("第%d页,第%d行 第%d列\n", i, j, k);
            }
        }
    }
    //一般有次数关系都用for循环嵌套
    printf("\n");
    int i = 0;
    while (i < 4) 
    {
        int j = 0;
        while (j < 3) 
        {
            printf("%d:%d\t", i, j);
            j++;
        }
        printf("\n");
        i++;
    }
    return 0;
}

while 循环结构

死循环

go to 语句

break 语句

continue 语句

作用域和生命周期

    //作用域: 变量有效范围
    //生命周期: 变量的产生到变量的死亡这个时间段
    //全局变量
    //局部变量(自动变量)
    //静态变量
#include  <stdio.h>
//全局变量
int g_num;
int main()
{
    //作用域限定符
    {
        int num = 0;        //局部变量
​
        //同一个作用域下不允许存在相同的变量
        //error C2374: “num”: 重定义;多次初始化
        //int num = 1;
        {
            int num = 1;
            //就近原则
            printf("num:%d\n", num);
        }
    }
    printf("num已死\n");
    
    
    
    局部变量(自动变量)
    int number;     //局部变量不做初始化。没有值
    //error C4700: 使用了未初始化的局部变量“number”
    //错误
    //printf("%d\n", number);
    printf("g_num=%d\n", g_num);
    
    
    
    全局和局部变量相遇时就近原则
    int g_num = 999;
    printf("g_num=%d\n", g_num);
    
    
    
    静态变量
        生命周期 程序开始运行之前就初始化好了,程序结束之后才死亡
    {
        static int sNum = 0;        //初始化操作只只执行一次
    }
    return 0;
}
​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值