目的
今天学习了C语言中函数的使用方法,在使用C语言编写程序时如果不使用函数,那么有些时候整个程序会显得很臃肿,在我们阅读程序时混乱的语句也会给我们带来困扰,而在C语言中利用函数,可以较为容易的实现程序的模块化,让程序设计得简单和直观,提高了程序的易读性和可维护性,提高了代码的重用性,使得程序开发效率得以提高。我们学习了如何使用函数之后,在写程序时就要养成良好的习惯,学以致用,这样在成为一个优秀的程序员的道路上越走越远。
技术
如何使用函数
在使用函数是应该首先声明一个函数,在C语言中定义函数后,在使用前,需要在main函数前进行声明,或者将函数定义在main函数的前面,则不需要声明
格式为
函数的返回值类型 函数的名称(函数的参数)
{
语句
return 返回值;
}
例如
#include<stdio.h>
int main()
{
void text();
text();
return 0;
}
void text()
{
printf("测试");
}
或者
#include<stdio.h>
void text();
int main()
{
text();
return 0;
}
void text()
{
printf("测试");
}
如果我们编写的程序中除main函数之外的函数很多那么我们可以将这些函数放到一个头文件.h里面
技术如何使用
函数的使用
在我们编写针对一个问题的程序时我们往往会把整个程序划分为若干功能较为单一的程序模块,然后分别将其实现,于是鉴于函数的优点,我们可以很选择用函数作为程序模块。利用函数,不仅可以实现程序的模块化,程序设计得简单和直观,提高了程序的易读性和可维护性,而且还可以把程序中普通用到的一些计算或操作编成通用的函数,以供随时调用。
实际使用
ATM取款程序的编写
首先声明函数
bool loginATM();
void exitATM(int status);
void welcome();
void menu();
char chooseSomethimg(void);
void outputMoney();
void inputMoney();
bool isContinue();
void change();
1.密码登录
bool loginATM()
{
int times = 0;
while (1)
{
printf("请输入密码");
scanf_s("%d", &password);
if (password == key)
{
return true;
}
else
{
times++;
if (times == 4)
{
return false;
}
else
{
printf("密码错误,");
}
}
}
}
2.欢迎界面
void welcome()
{
printf("*************\n");
printf(" 欢迎使用ATM\n");
printf("*************\n");
}
3.选项界面
void menu()
{
printf("***************\n");
printf("1.取款\n");
printf("2.存款\n");
printf("3.重设密码\n");
printf("4.退出\n");
printf("***************\n");
}
4.选择选项
char chooseSomethimg(void)
{
char ch[20];
while (1)
{
printf("请选择操作:");
int count = scanf_s("%s", ch, sizeof(ch));
if (count != 1)
{
printf("输入不合法 ");
}
else
{
choice = ch[0];
if (choice == '1' || choice == '2' || choice == '3' || choice == '4')
{
return choice;
}
else
{
printf("输入不合法 ");
}
}
}
}
5.取款
void outputMoney()
{
int outMoney = 0;
while (1)
{
printf("请输入取款金额:");
scanf_s("%d", &outMoney);
if (outMoney>0&&outMoney<=totalMoney)
{
totalMoney = totalMoney - outMoney;
printf("取款成功,余额为:%d\n", totalMoney);
bool ch = isContinue();
if (ch == false)
{
return;
}
}
else
{
printf("余额不足,");
bool ch = isContinue();
if (ch == false)
{
return;
}
}
}
}
6.存款
void inputMoney()
{
int inputMoney = 0;
while (1)
{
printf("请输入存款金额:");
scanf_s("%d", &inputMoney);
totalMoney += inputMoney;
printf("存款成功 余额为:%d\n", totalMoney);
bool ch = isContinue();
if (ch == false)
{
return;
}
}
}
8.更改密码
void change()
{
int newPassword1 = 0;
int newPassword2 = 0;
while (1)
{
bool result = loginATM();
if (result == true)
{
while (1)
{
printf("请输入新密码:");
scanf_s("%d", &newPassword1);
printf("请确认密码:");
scanf_s("%d", &newPassword2);
if (newPassword1 == newPassword2)
{
password = newPassword1;
printf("更改密码成功\n");
return;
}
else
{
printf("两次密码不一致 ");
}
}
}
}
}
9.选择是否继续
bool isContinue(void)
{
printf("是否继续?(y/n):");
getchar();
char ch = getchar();
if (ch == 'n')
{
return false;
}
else
{
return true;
}
}
10.退出界面
void exitATM(int status)
{
printf("*******************\n");
printf(" 感谢你的使用再见\n");
printf("*******************\n");
exit(status);
}
11.main函数
int main()
{
welcome();
bool result = loginATM();
if (result == false)
{
exitATM(EXIT_FAILURE);
}
while (1)
{
menu();
chooseSomethimg();
switch (choice)
{
case'1':
outputMoney();
break;
case'2':
inputMoney();
break;
case'3':
change();
break;
default:
exitATM(EXIT_SUCCESS);
break;
}
}
system("pause");
return 0;
}
整体效果
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
int password;
int key = 111;
char choice;
int totalMoney = 10000000;
bool loginATM();
void exitATM(int status);
void welcome();
void menu();
char chooseSomethimg(void);
void outputMoney();
void inputMoney();
bool isContinue();
void change();
int main()
{
welcome();
bool result = loginATM();
if (result == false)
{
exitATM(EXIT_FAILURE);
}
while (1)
{
menu();
chooseSomethimg();
switch (choice)
{
case'1':
outputMoney();
break;
case'2':
inputMoney();
break;
case'3':
change();
break;
default:
exitATM(EXIT_SUCCESS);
break;
}
}
system("pause");
return 0;
}
bool loginATM()
{
int times = 0;
while (1)
{
printf("请输入密码");
scanf_s("%d", &password);
if (password == key)
{
return true;
}
else
{
times++;
if (times == 4)
{
return false;
}
else
{
printf("密码错误,");
}
}
}
}
void exitATM(int status)
{
printf("*******************\n");
printf(" 感谢你的使用再见\n");
printf("*******************\n");
exit(status);
}
void welcome()
{
printf("*************\n");
printf(" 欢迎使用ATM\n");
printf("*************\n");
}
void menu()
{
printf("***************\n");
printf("1.取款\n");
printf("2.存款\n");
printf("3.重设密码\n");
printf("4.退出\n");
printf("***************\n");
}
char chooseSomethimg(void)
{
char ch[20];
while (1)
{
printf("请选择操作:");
int count = scanf_s("%s", ch, sizeof(ch));
if (count != 1)
{
printf("输入不合法 ");
}
else
{
choice = ch[0];
if (choice == '1' || choice == '2' || choice == '3' || choice == '4')
{
return choice;
}
else
{
printf("输入不合法 ");
}
}
}
}
void outputMoney()
{
int outMoney = 0;
while (1)
{
printf("请输入取款金额:");
scanf_s("%d", &outMoney);
if (outMoney>0&&outMoney<=totalMoney)
{
totalMoney = totalMoney - outMoney;
printf("取款成功,余额为:%d\n", totalMoney);
bool ch = isContinue();
if (ch == false)
{
return;
}
}
else
{
printf("余额不足,");
bool ch = isContinue();
if (ch == false)
{
return;
}
}
}
}
bool isContinue(void)
{
printf("是否继续?(y/n):");
getchar();
char ch = getchar();
if (ch == 'n')
{
return false;
}
else
{
return true;
}
}
void inputMoney()
{
int inputMoney = 0;
while (1)
{
printf("请输入存款金额:");
scanf_s("%d", &inputMoney);
totalMoney += inputMoney;
printf("存款成功 余额为:%d\n", totalMoney);
bool ch = isContinue();
if (ch == false)
{
return;
}
}
}
void change()
{
int newPassword1 = 0;
int newPassword2 = 0;
while (1)
{
bool result = loginATM();
if (result == true)
{
while (1)
{
printf("请输入新密码:");
scanf_s("%d", &newPassword1);
printf("请确认密码:");
scanf_s("%d", &newPassword2);
if (newPassword1 == newPassword2)
{
password = newPassword1;
printf("更改密码成功\n");
return;
}
else
{
printf("两次密码不一致 ");
}
}
}
}
}
比较
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
int main()
{
int key=10086;
int password;
int times = 4;
char choice;
printf("**************\n");
printf(" 欢迎光临\n");
printf("**************\n");
printf("请输入密码:");
while (1)
{
scanf_s("%d",&password);
if (password ==key)
{
break;
}
else
{
times--;
if (times == 0)
{
printf("此卡已经被冻结,请联系客服");
exit(EXIT_FAILURE);
}
else
{
printf("请重新输入密码");
}
}
}
while (1)
{
printf("***************\n");
printf("1.取款\n");
printf("2.存款\n");
printf("3.重设密码\n");
printf("退出\n");
printf("***************\n");
char ch[20];
while (1)
{
printf("请选择操作:");
int count = scanf_s("%s", ch,sizeof(ch));
if (count != 1)
{
printf("输入不合法 ");
}
else
{
choice = ch[0];
if (choice == '1' || choice == '2' || choice == '3' || choice == '4')
{
break;
}
else
{
printf("输入不合法 ");
}
}
}
char choice2;
int newPassword1 = 0;
int newPassword2 = 0;
int totalMoney = 1000;
switch (choice)
{
case '1':
{
while (1)
{
int outMoney = 0;
printf("请输入取款金额:");
scanf_s("%d", &outMoney);
if (outMoney > totalMoney)
{
printf("余额不足是否继续(y/n):");
choice2 = getchar();
if (choice2 == 'n')
{
break;
}
}
else
{
totalMoney -= outMoney;
printf("取款成功 余额为:%d\n", totalMoney);
break;
}
}
break;
}
case '2':
{
printf("请输入存款金额:");
int inputMoney = 0;
scanf_s("%d", &inputMoney);
totalMoney += inputMoney;
printf("存款成功 余额为:%d\n", totalMoney);
break;
}
case '3':
{
while (1)
{
printf("请输入新密码:");
scanf_s("%d", &newPassword1);
printf("请确认密码:");
scanf_s("%d", &newPassword2);
if (newPassword1 == newPassword2)
{
password = newPassword1;
printf("更改密码成功\n");
break;
}
else
{
printf("两次密码不一致 ");
}
}
break;
}
default:
{
printf("感谢你的使用 再见!!!\n");
exit(EXIT_SUCCESS);
break;
}
}
}
system("pause");
return 0;
}
相比之下使用了函数的程序模块化更加明显,我们更能读懂程序。
感悟
在使用函数的过程中,一定要注意声明,如果没有声明函数就会出现错误,返回值类型一定要和函数返回值类型相同。