目的
在昨天,我们编写这个DEMO的时候主要使用的是循环和条件语句在主函数里面进行编写,这样使得主函数看起来臃肿,今天我们学习了另一种更加常用的编写方式,通过编写多个函数,来实现程序所要达到的效果,
在C语言中,函数是程序的基本组成单位,因此可以很方便地用函数作为程序模块来实现C语言程序。利用函数,不仅可以实现程序的模块化,程序设计得简单和直观,提高了程序的易读性和可维护性,而且还可以把程序中普通用到的一些计算或操作编成通用的函数,以供随时调用,这样可以大大地减轻程序员的代码工作量。
在今天的学习中,我们运用今天接触到的自定义函数的方法,对昨天的demo银行ATM进行了重新的编写,让我们更了解函数的运用和实际效果。
技术
while嵌套循环 自定义函数
函数的定义和调用
1.函数的定义:
返回类型 函数名(参数列表){
函数体; }
2.函数的分类
有返回值的函数
char choice;
//判断输入是否合法
char ch[20] = {};
while (1) {
//去掉上一次输入的回车符 \n
printf("请选择操作:");
int count = scanf_s("%s", ch, sizeof(ch));
if (count != 1) {
printf("输入不合法 ");
}
else {
//获取第一个字符
choice = ch[0];
return choice;
}
}
无返回值的函数
void welcome(void) {
printf("***************\n");
printf(" 欢迎使用ATM\n");
printf("***************\n");
}
void exitATM(int status) {
printf("*************************\n");
printf(" 感谢你的使用 再见!!!\n");
printf("*************************\n");
exit(status);
}
void showMenu(void) {
printf("**************\n");
printf("1.取款\n");
printf("2.存款\n");
printf("3.设置密码\n");
printf("4.退出\n");
printf("**************\n");
}
全局定义展示
bool loginATM(void);
void welcome(void);
void exitATM(int status);
void showMenu(void);
char getChoice(void);
void withdraw(void);//取款
bool isContinue(void);
void deposit(void);//存款
void setPassword(void);
//定义一个全局变量
int orgPassword = 123;
int totalMoney = 1000;
主程序示范
int main(int argc, const char * argv[]) {
//欢迎界面
welcome();
//登录
bool result = loginATM();
if (result == false) {
//密码错误次数过多
exitATM(EXIT_FAILURE);
}
//主要操作
while (1) {
//提示操作
showMenu();
//接收用户的选择
char choice = getChoice();
//判断用户的选择
switch (choice) {
case '1':
//取款
withdraw();
break;
case '2':
//存款
deposit();
break;
case '3':
//设置密码
setPassword();
break;
default:
exitATM(EXIT_SUCCESS);
break;
}
}
return 0;
}
与昨天的程序之间的区别
在昨天的程序中,我为了达到程序能够不断重复某些命令,使用了goto语句,但其实goto语句是极其不推荐在当前的结构化编程语言中使用的,在程序复杂时容易出错,且不利于别人的阅读,并且难以调试。通过今天课上东哥示范的程序,我们可以通过包裹用真循环配合跳出语句的方式,来到达我们所需要的效果。如下所示
while (1) {
scanf_s("%d", &inputPwd);
if (inputPwd == password) {
//密码正确
break;
}
else {
totalTime--;
if (totalTime == 0) {
printf("此卡已冻结 请联系客服!\n");
//退出
exit(EXIT_FAILURE);
}
else {
printf("密码不正确 请重新输入:");
}
}
}
能够在输入密码错误的时候,重复的提示重新输入密码,达到了我们想要的效果。密码错误时.png
小结
通过今天的学习,我昨天独自编写demo时的疑惑和一些无法着手的难处都得到了解答,同时我也开始思考,如何使用函数来编写程序,如何使流程更加清晰。在日后更加复杂的代码编写中,函数的使用是必不可少的,只有通过更多的练习,才能尽快的掌握函数的运用。