分支结构和while

C语言中三种控制结构

1,if语句

1.1 if 语句基本的用法

int a = 1 ;//如果条件成立,则执行{}内的语句
if ( 1 == a )
{
    printf("a=%d\n",a);
}
//if管理一条语句,大括号可以省略
//if后面的条件括号不能为赋值语句,不会执行
//if求最大值
int a = 0 ,b = 0 ;
scanf("%d%d",&a,&b);
//三目运算符求最大值
printf("max=%d\n"a?ba:b);
//if语句求最大值
int max = a ;
if(max<b)
{
   max = b ;
}    
printf("max=%d\n",max);

1.2 if else 语句

条件成立,执行if 语句,条件不成立,执行else 语句

//判定奇数偶数
int a = 0 ;
scanf("%d",&a);
if(a%2==0)
{
    printf("%d是偶数\n",a);
}
else
{
    printf("%d是奇数\n",a);
}

1.3 if _else if _ if

int score = 89 ;
if(socre>=90)
{
    printf("优秀\n“);
}
else if(score>=60)
{
    printf("良好\n");   
}      
else//else后面不能加括号表达式
{
    printf("不及格\n");
}

1.4条件的嵌套

条件的细化操作,逐步分析

int a = 0 ;
scanf("%d",&a);
if( a%3==0 && a%2==0 && a%4==0 )//用逻辑运算符
{
    printf("%d可以被2和3和4整除\n",a);   
}
else
{
    printf("不满足条件\n");   
}
if( 2 == a% )
{
    if( 3 == a% )
    {
        if( 4 == a% )
        {
            printf("满足条件\n");
        }
    }
}
else
{
    printf("不满足条件\n");
}
//else不能单独存在
//else只能和最近的if搭配

2,switch 语句

2.1基本使用

int a = 0 ;
switch(a)
{
 case 0://case 后面不能跟字符串或者小数或者变量名称,只能跟整数或者字符串
        printf("0");
 case 1://case后面必须跟空格
        printf("1");
 case 2:  
        printf("2");
 default:
        printf("3");
}
//case x :
     _________;(表达式)

原生态的switch语句只做一次成功的比较,后续的从上往下执行

char key = 'A';
    switch (key) 
    {
    case 'B':
        putchar(key++); //后置++ 先做其他事
    case 'A':
        putchar(key++);//在改变自身,先打印A再做++
    case 'C':
        putchar(key++);                                                                 case 'D':                                            
        putchar(key++);
    }//打印结果是ABC
number = 1;//break,跳出的意思
    switch (number)
    {
    case 0:             
        printf("0");
        break;
    case 1:             
        printf("1");
        break;
    case 2:             
        printf("2");
        break;
    case 3:             
        printf("3");
        break;
    default:
        printf("4");
        break;
    }

2.2 switch语句的两个问题

//switch中存在其他语句
int a = 0 ;
switch(a)
{
        if( 0 == a )
        {
            printf("yo~ bro");//不会打印出来 yo~bro 的内容
        }
 case 0 :
        printf("0");
        break;
 default :
        printf("1");
        break;
}//switch不会执行除了case 和break 以外的语句    
//
switch(a)
{
    case 1 :
        break;
    case 0 :
        if ( a == 0 )
        {
     case 2 ://相当于不存在 a == 2 也成立       
            printf("测试代码\n");
        }
        break;
}
//不同的case相同的处理可以结合在一起
printf("\n");
int  num = 0;
scanf_s("%d", &num);
switch (num) 
{
case 1:
case 2:
case 3:
case 4:
    printf("yo\n");
    break;
case 5:
case 6:
case 7:
case 8:
    printf("bro\n");
    break;
default:
    printf("fuck you bitch **ck \n");

//解决方案
switch (b)
{
    case 0 :
{
    int b = 1 ;
    break;//case里定义变量,需要带大括号,限定变量b 的范围
}        
    //... ...    
}    

// while 循环

/*while(条件)
{
    循环体
}  */
int count = 0 ;
while(count <  3 )//写法一:限定while循环里的条件
{
    printf("第%d次执行\n",count+1);//++count可
    count ++ ;
}    
while(1)//写法二:规定循环体跳出条件
{
    printf("第%d次执行\n",count+1);//++count可
    if ( count == 3 )
        break;//跳出循环
    count ++ ;
}    

//bool 类型

#include <stdbool.h>
bool a = false ;//成立
a = ture ;//不成立

2.3 switch常用的形态

写菜单的交互界面

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <conio.h>
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)\n");
        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("pause");//防止闪屏,使得信息停留在该界面
        system("cls");//清屏
    }
    printf("退出菜单\n");//退出循环,等于退出了菜单系统
    return 0;

用户按键非可视化操作

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");

方向键在计算机语言中对应的数字:

方向键对应数字
w W72
s S80
a A75
d D77

3.作用域和生命周期

//作用域: 变量有效范围

//生命周期: 变量的产生到变量的死亡这个时间段

//局部变量

//全局变量

int g_num;//全局变量
int main()
{//作用域限定符
    int num = 0;//就近原则
    {
    int num = 1;
    printf("num:%d\n", num);//局部变量,打印按照就近原则
    } 
    return 0;
}//作用域限定符
//同一个作用域下不允许存在相同的变量
//error C2374: “num”: 重定义;多次初始化
//静态变量

static int sNum = 0;        //初始化操作只只执行一次

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值