在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;
}