心得体会
随着对代码的逐渐熟悉,越发觉得养成逻辑思维和调整自己时间的重要性。经历了几天的代码生活,真心感到有一丝的疲惫,写程序的时候,写一个代码要花好长时间,有时会觉得脑袋有点懵,感觉很难合理安排自己的时间。编程序对我现在来说是一件很困难的事情,但也是一件很有趣的事情。今天所学的知识中,让我尤为影响深刻的是用函数和不用函数编ATM,对比起来,用函数的逻辑思维更强,并且查找错误也更方便。
目的
1.不断练习,熟练掌握c语言阶段的练习
2.养成逻辑思维
应用
- ATM不用函数实现
- ATM用函数实现
技术
- 编写ATM的欢迎界面
- 编写ATM的密码输入过程
- 选择操作
- 取款
- 存款
- 修改密码
每个技术如何使用
- 用c语言编写ATM的欢迎界面
1.不用函数
printf("**************\n");
printf(" 欢迎使用\n");
printf("**************\n");
2.用函数
void welcome(void);
welcome();
printf("***************\n");
printf(" 欢迎使用ATM\n");
printf("***************\n");
}
- 编写ATM的登录过程,密码输入
1.不用函数
printf("请输入密码:");
while (1) {
scanf("%d", &inputPwd);
if (inputPwd == password) {
//密码正确
break;
}else{
totalTime--;
if (totalTime == 0) {
printf("此卡已冻结 请联系客服!\n");
//退出
exit(EXIT_FAILURE);
}else{
printf("密码不正确 请重新输入:");
}
}
2.用函数
bool loginATM(void);
bool result=loginATM( );
if(result==false){
//强行退出
exitATM(EXIT_FAILURE);
}
bool loginATM(void){
int password=0;
int totalTime=4;
while(1)
{
printf("请输入密码:");
scanf_s("%d",&password);
if(password==orgPassword){
return true;
}else {
totalTime--;
if(totalTime==0){
return false;
}else{
printf("密码输入错误,请重新输入");
}
}
}
}
printf("操作不合法");
}
}
}
}
- 选择操作
1.不用函数
char ch[20] = {};
while (1) {
//去掉上一次输入的回车符 \n
printf("请选择操作:");
int count = scanf("%s", ch);
if (count != 1) {
printf("输入不合法 ");
} else{
//获取第一个字符
choice = ch[0];
if (choice == '1' || choice == '2' || choice == '3' || choice == '4') {
break;
} else{
printf("输入不合法 ");
}
}
2.用函数
char getChoice(void){
//将输入的所有字符串全部从缓存里面读取出来
char temp[20] = {};
while (1) {
printf("请选择操作:");
int count = scanf("%s", temp);
//确保值输入一个字符
if (count != 1) {
printf("输入不合法,");
} else{
//获取输入的字符
char ch = temp[0];
//虽然输入一个字符 也可能不正确
if (ch == '1' || ch == '2' || ch == '3' || ch == '4') {
return ch;
}else{
printf("输入不合法,");
}
}
}
}
- 取款
1.不用函数
switch (choice) {
case '1':
//取款
while(1){
int outMoney = 0;
printf("请输入取款金额:");
scanf("%d", &outMoney);
if (outMoney > totalMoney) {
//金额不足
printf("余额不足是否继续(y/n):");
getchar();
choice2 = getchar();
if (choice2 == 'n') {
break;
}
}else{
totalMoney -= outMoney;
printf("取款成功 余额为:%d\n", totalMoney);
break;
}
}
break;
2.用函数
void withdraw(void){
int outMoney = 0;
while (1) {
printf("请输入取款金额:");
scanf("%d", &outMoney);
if(outMoney > 0 && outMoney <= totalMoney){
totalMoney = totalMoney - outMoney;
printf("取款成功 余额为:%d\n", totalMoney);
//提示是否继续
bool ch = isContinue();
if (ch == false) {
return; //break;
}
}else{
printf("余额不足,");
}
}
}
- 存款
1.不用函数
case '2':
printf("请输入存款金额:");
int inputMoney = 0;
scanf("%d", &inputMoney);
totalMoney += inputMoney;
printf("存款成功 余额为:%d\n", totalMoney);
break;
2.用函数
void deposit(void){
int intputMoney = 0;
while (1) {
printf("请输入存款金额:");
scanf("%d", &intputMoney);
totalMoney = totalMoney + intputMoney;
printf("存款成功,余额为:%d\n", totalMoney);
bool ch = isContinue();
if (ch == false) {
return; //break;
}
}
}
- 修改密码
1.不用函数
case '3':
while (1) {
printf("请输入新密码:");
scanf("%d", &newPassword1);
printf("请确认密码:");
scanf("%d", &newPassword2);
if (newPassword1 == newPassword2){
password = newPassword1;
printf("更改密码成功\n");
break;
}else{
printf("两次密码不一致 ");
}
}
2.用函数
void setPassword(void){
int newPwd1 = 0;
int newPwd2 = 0;
while (1) {
//输入原始密码
bool result = loginATM();
if (result == true) {
while (1) {
printf("请输入新密码:");
scanf("%d", &newPwd1);
printf("请确认密码:");
scanf("%d", &newPwd2);
if (newPwd1 == newPwd2) {
printf("设置密码成功!\n");
return;
} else{
printf("两次密码不一致,");
}
}
}
}
}
为什么要使用函数
1.代码结构太复杂 不利于阅读 不利于移植/拷贝
2.函数实际上是一个代码块 一个代码块解决一个问题
3.代码块就是大括号 {}
实际使用
今日错误总结
- if语句的括号内加了“ ”
- 错误示范:
if(“ ”){}
2.正确示范
if(){ }
- printf 输入语句是加了&(地址符)
- 错误示范:
printf("账户余额为%d",*&money*);
2.正确示范
printf("账户余额为%d",*money*);
- scanf输入语句中
1.错误示范:
scanf("%d%",&draw_money);
2.正确示范
scanf("%d",&draw_money);
- 总结
要细心点!!!