通过今天的学习,让我进一步的适应了编程的逻辑门路,更深层次的懂得了编程的思想,初步认知与了解函数版块的使用方法
代码的逻辑结构
1.搭建框架
2.不需要做具体的事情
3.将具体的事情交给每一个函数去实现
使用函数的目的
- 代码结构太复杂 不利于阅读 不利于移植
- 函数为代码块 一个代码块解决一个问题(一个功能对应一个函数)
- 代码块的形式为{ }
使用函数的注意事项
- 先声明 后使用
- 了解需求进行判断函数是否需要返回值
- 一个函数可在相应代码段落中多次使用
demo中使用的不同种类函数
int getChoice() {
int ch;
while (1) {
printf("请选择操作:");
scanf_s("%d", &ch);
if (ch >= 1 && ch <= 4) {
return ch;
}
else {
printf("选择不合法 请重新选择:");
fflush(stdin);
}
}
}
- 此函数需要进入main()函数被下方代码使用,因此需要返回值
void welcome(void) {
printf("***********\n");
printf(" welcome\n");
printf("***********\n\n");
}
- 此函数只需显示文本无需进行二次操作,因此无需返回值
bool inputpassword(void) {
int password ;
int wrongTime=0;
while (1) {
printf("请输入密码:");
scanf_s("%d", &password);
if (password == orgPassword) {
return true;
}
else {
wrongTime++;
if (wrongTime == 4) {
return false;
}
else {
printf("密码错误,");
}
}
}
}
- 此函数为bool类型,需要判断对错并在main()函数中进行下步操作,因此需要返回值
-
注:为方便整洁,可将所有函数全部存入头文件当中并在源文件中进行调用,如图
将函数存入头文件中.png
ATM机的操作界面(函数进阶版)代码整合
#include <iostream>
void welcome(void);
void exitATM(int status);
bool inputpassword(void);
void showMenu(void);
int getChoice(void);
void withdrow(void);
bool isContinue(void);
void deposit(void);
void setPassword(void);
int orgPassword = 123;
int totalMoney = 1000;
int main()
{
//欢迎
welcome();
//输入密码
bool result = inputpassword();
if (result == false) {
exitATM(EXIT_SUCCESS);
}
while (1) {
//进入菜单
showMenu();
//选择操作
int choice = getChoice();
//判断操作
switch (choice)
{
case(1):
//取款
withdrow();
break;
case(2):
//存款
deposit();
break;
case(3):
//设置密码
setPassword();
break;
default:
exitATM(EXIT_SUCCESS);
break;
}
}
}
//欢迎界面
void welcome(void) {
printf("***********\n");
printf(" welcome\n");
printf("***********\n\n");
}
//结束界面
void exitATM(int status) {
printf("********************\n");
printf(" 感谢您的使用 再见!\n");
printf("********************\n");
exit(status);
}
//输入密码
bool inputpassword(void) {
int password ;
int wrongTime=0;
while (1) {
printf("请输入密码:");
scanf_s("%d", &password);
if (password == orgPassword) {
return true;
}
else {
wrongTime++;
if (wrongTime == 4) {
return false;
}
else {
printf("密码错误,");
}
}
}
}
//进入界面
void showMenu() {
printf("***************\n");
printf(" 1.取款\n");
printf(" 2.存款\n");
printf(" 3.更改密码\n");
printf(" 4.退出\n");
printf("***************\n\n");
}
//进行选择
int getChoice() {
int ch;
while (1) {
printf("请选择操作:");
scanf_s("%d", &ch);
if (ch >= 1 && ch <= 4) {
return ch;
}
else {
printf("选择不合法 请重新选择:");
fflush(stdin);
}
}
}
//取款
void withdrow() {
int getMoney;
while (1)
{
printf("请输入取款金额:");
scanf_s("%d", &getMoney);
if (getMoney < totalMoney) {
totalMoney = totalMoney-getMoney;
printf("取款成功 当前余额为%d\n", totalMoney);
bool result = isContinue();
if (result == false) {
return;
}
}
else {
printf("余额不足,");
}
}
}
bool isContinue() {
fflush(stdin);
printf("是否继续取款(Y/N):");
getchar();
char ch = getchar();
if (ch == 'N') {
return false;
}if (ch == 'Y') {
return true;
}
}
//存款
void deposit(void) {
int inputMoney;
printf("请输入存款金额:");
scanf_s("%d", &inputMoney);
totalMoney += inputMoney;
printf("存款成功 余额:%d\n", totalMoney);
}
//更改密码
void setPassword() {
int newPassword1;
int newPassword2;
bool result = inputpassword();
if (result = true) {
while (1) {
printf("请输入新密码:");
scanf_s("%d", &newPassword1);
printf("请确认新密码:");
scanf_s("%d", &newPassword2);
if (newPassword1 == newPassword2) {
printf("密码设置成功!\n");
return;
}
else {
printf("密码错误,");
}
}
}
}
PS.
- 英语真的很重要 英语真的很重要 英语真的很重要
- 第一次能完整的写出大概200行的程序,比较有成就感
- 初入函数还较为吃力,缺乏编程的逻辑思维能力,总是对他人编写好的程序进行观摩后才恍然大悟
- 头发哗哗的掉 晚安
whereas I was blind, now I see.——《Gospel According to John》
网友评论