C语言---------IF,switch语句,作用域。

在C语言的使用中,我们经常会用到判断的语句if语句,switch语句,下面我们来看一下这两种语句的使用。

if语句的格式:

if(判断表达式){
 代码块1;
}
else if(.....){
语句块2;
}
else{
语句块3;
}
···
  • 但是我在在使用的时候会碰到可读性差的问题,也就是说每一步都要判断,而且逻辑也相对而言不是特别清楚。

我们来看一下switch语句:

格式

switch(表达式【一个整形的数或者表达式】){
 case 表达式1:{
···
break;
}
case 表达式2:{
···
break;
}
case 表达式3:{
···
break;
}
default:{
break;
}
···
}
  • 相比较if语句,它的可读性更高,个人认为它的逻辑更强,很容易让人理解。

如,分别用两个语句来写同一个东西:

#include<stdio.h>
int main(){
int a;
printf("请输入a:(1-3)");
scanf("%d",&a);

    switch(a){
        case 1:
            printf("你输入的是1\n");
            break;
        case 2:
            printf("你输入的是2\n");
            break;
        default:
            printf("你输入的是3\n");
            break;
    }

    return 0;
}
#include <stdio.h>

int main(){
    int a ;
    printf("请输入a(1-3)") ;
    scanf("%d",&a);
    if(a==1)
    printf("a的值是:1") ;
    else if(a==2)
    printf("a的值是:2") ;
    else
    printf("a的值是:3") ;
    return 0;
}

下面我们来谈谈关于 变量 及 作用域 的相关内容

变量

1.全局变量

  • 全局变量就是定义在main函数上面的变量,它的作用域是全局(本文件)

2.局部变量

  • 局部变量就是不是定义在main函数上面的变量。

作用域

1.函数原型作用域
【1】eg void fun(int i ,int j =4);//声明函数中。
【2】void fun(int i ,int j =4){
.....
} //函数的定义中。

2.局部作用域(块作用域)
【1】{ int i = 5; }

3.函数作用域
...
4.文件作用域
...注意使用时,应该时刻注意变量的作用域,以免出错。

下面,我们来看一个ATM取款的demo。

#include <stdio.h>
#include <stdlib.h>
 
/*
 getchar();从终端接收一个字符
 注意:当上一次有输入的情况下 必须要将上一次缓冲区
 里面的内容清空 
 scanf("%d");
 123\n;
 \n
 方式一: 
 getchar(); //拿走\n 
 getchar();
 
 方式二: 
 fflush(stdin);//刷新输入流 
 
 
 return; 结束当前这个函数/方法 
 exit()导入头文件<stdlib.h> 直接退出程序 
 
 main(){
  1
  2
  3
 } 
 
 add(){
    retrun; 
 }
 
 for(){
            switch(){
                return 1;
                exit();
                break;
            } 
        } 
*/
int main(){ 
    int old = 123;//原始密码 
    int input;//输入密码 
    int wrongTime = 3; //错误次数
    int total = 1000; //金额 
    
    printf("**********************\n"); 
    printf(" 欢迎使用建设银行系统\n");
    printf("**********************\n");
    
    //int i = 1;
    printf("请输入密码:");
    for(int i = 1;i <= wrongTime; i++){
        scanf("%d", &input);
        
        //判断密码
        if(input == old){
            //密码正确
            break;
        } 
        
        if(i == wrongTime){
            printf("错误次数过多!\n");
            return 1;
        }
        //密码不正确
        printf("密码不正确,请重新输入密码:"); 
    } 
    
    
    int choice;//接收用户选择
    char goon;//是否继续 
    for(; 1 < 2;){
        //主界面 
        printf("*****************************\n");
        printf("1.存款\n");
        printf("2.取款\n");
        printf("3.查询\n");
        printf("4.更改密码\n");
        printf("5.退出\n"); 
        printf("*****************************\n");
         
        //提示用户选择
        printf("请选择操作:");
        scanf("%d", &choice);
        
        //判断操作 
        switch(choice){
            case 1: //存款 
                int temp;
                printf("请输入存款金额:");
                scanf("%d", &temp);
                total += temp;
                //total = total + temp;
                
                printf("存款成功!可用余额为:%d\n",total);
                break;
            case 2: //取款 
                int temp2;
                for(;1<2;){
                    printf("输入取款金额:");
                    scanf("%d", &temp2);
                
                    if(temp2 > total){
                        printf("余额不足 "); 
                    }else{
                        total -= temp2;
                        printf("取款成功 余额为%d\n",total);
                        break;
                    }
                }
                break;
            case 3: //查询余额 
                printf("当前余额为:%d\n",total);
                break;
            case 4: //更改密码
                int n1;
                int n2;
                for(;1<2;){
                    printf("请输入新密码:");
                    scanf("%d", &n1);
                    
                    printf("请确认密码:");
                    scanf("%d", &n2);
                    
                    if (n1 == n2){
                        printf("密码设置成功!\n");
                        old = n1;
                        break;
                    } else{
                        printf("两次输入不一致!");
                    }
                } 
                break;
            default://退出 
                exit(EXIT_SUCCESS);
                //exit(EXIT_FAILURE);
                break;
        } 
        
        //提示是否继续
        for(;1<2;){
            printf("是否继续(y/n):");
            getchar();
            scanf("%c", &goon); 
            
            if(goon == 'y'){
                break; 
            }
            if (goon == 'n'){
                exit(EXIT_SUCCESS); 
            }
            printf("输入无效 ");
        }

    }
    
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值