目的
通过今天对于C语言数据类型和循环结构,判断结构的学习,完成对于银行自助存取款机的程序模拟,通过完成程序的编写,来锻炼对于循环结构和判断结构的使用熟练度,为日后更深入的学习打好基础。
技术
所学习的语法有
1.if ()语句
2.if (){}else{}语句
3.if(){} else if(){}语句
4.for( ; ; ){}循环
5.while(){}循环
6.switch case语句
如何使用所学的知识完成demo
if语句的使用
if(表达式)语句。
例如:if(x>y)printf("%d",x);
此时,如果表达式为真,则执行printf语句。
if else语句的使用
例如:if(x>y)printf("%d",x);
else printf("%d",y);
此时,如果x>y成立为真,则执行语句printf("%d",x),然后直接跳过else,同时也跳过语句printf("%d",y),去执行之后的语句。
如果x>y不成立为假,则不执行语句printf("%d",x),执行语句printf("%d",x)。
if else if语句的使用
if(表达式1)语句1
else if(表达式2)语句2
else if(表达式3)语句3
else if(表达式m)语句m
else 语句 n
此时,哪个表达式为真,则运行哪个if后面的语句。如表达式3成立为真,执行语句3。
for循环的使用
可重复循环并记录次数
int i,a=0;
for(i=0; i<5; i++) // for循环就控制程序对于语句a++执行5数,执行一次i的值就加1(由for循环中i++控制,i的初始值由i=0控制)
{
a++;
}
// 程序执行完后i=5, a=5
while语句的使用
while语句也是循环语句 但是并不关心循环的次数
while (表达式)
{
语句;
}
switch case 语句的使用
根据输入的i的不同的值 进入不同的case实现不同的语句,当出现多种情况并列时switch case看起来更简洁
scanf_s("%d", &i);
switch (i) {
case 1:printf("开始取款\n"); break;
case 2:printf("开始存款\n"); break;
case 3:printf("开始设置密码\n");break;
case 4:return 0;
default:printf("输入不合法请重新输入\n"); break;
}
实际使用技术完成demo
1.先定义我们所需要的变量并设置页面
int i,a,s,q;
int c = 5;
int newpassword,newpassword2;
int password = 123;
int left = 100;
int money;
int totalmoney;
printf("********************\n");
printf(" 欢迎光临 \n");
printf("********************\n");
printf("请输入密码");
scanf_s("%d", &i);
2.根据现实中的atm机器 并运用循环和判断结构对程序进行编写
if (i == password) {
begin:
printf("1.取款\n");
printf("2.存款\n");
printf("3.设置密码\n");
printf("4.退出\n");
printf("请选择你的操作");
scanf_s("%d", &a);
if (a == 1) {begin2:
printf("请输入取款金额");
scanf_s("%d", &money);
totalmoney = left-money;
if (money <= left) {
printf("成功,当前余额为%d,返回上一级\n", totalmoney);
goto begin;
}
else {
printf("金额不足 取款失败是否继续?继续请打1,退出请打2:");
scanf_s("%d", &s);
if (s == 1) {
goto begin2;
}
else if (s == 2) {
goto begin;
}
}
}
if (a == 2) {
printf("请输入存款金额");
scanf_s("%d", &money);
totalmoney = money + left;
printf("成功!当前余额为%d,返回上一级\n", totalmoney);
goto begin;
}
if (a == 3) {
printf("请输入原始密码");
scanf_s("%d", &i);
if (i == password) {
begin3:
printf("请设置新密码:");
scanf_s("%d", &newpassword);
printf("再次输入密码:");
scanf_s("%d", &newpassword2);
if (newpassword == newpassword2) {
printf("密码重置成功!,已自动返回上一级\n");
goto begin;
}
else {
printf("两次输入的密码不一致,请重新输入:");
goto begin3;
}
}
}
if (a == 4) {
return 0;
}
}
else {
printf("密码错误,请重新输入:");
for (c; c>0; ) {
//printf("密码错误,请重新输入:");
scanf_s("%d", &i);
if (i != password) {
c--;
if (c <= 0) {
printf("今日错误次数过多 此卡已经冻结,按1退出:");
scanf_s("%d", &q);
if (q == 1)
{
return 0;
}
}
printf("密码输入错误请重试,可尝试次数为%d:", c);
}
else {
goto begin;
}
}
}
在这个程序中,我使用了循环和判断结构,,在今天这个demo的情况下 循环语句使得程序更贴近与现实中atm的同时,很简洁的完成了操作,,同时在这种大量嵌套循环判断的语句中,一定要注意代码格式,这样才更方便错误的检查和他人的阅读。