我想说,你写的程序各个函数之间的参数传递问题没有弄懂
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void display(int allmoney, int number);
void xuanze(int allmoney, int number);
void sys(int a, int allmoney, int number);
void data();
void password(int allmoney, int number);
void qk(int allmoney, int number);
void ye(int allmoney, int number);
void number_func(int allmoney, int numbe);
void display(int allmoney, int number)
{
system("cls");
printf("=================================\n");
printf("=========取款机==================\n");
printf("=================================\n");
printf(" 1:取款\n");
printf("\n");
printf(" 2:查询余额\n");
printf("\n");
printf(" 3:修改密码\n");
printf("\n");
printf(" 4:退卡\n");
printf("=================================\n");
xuanze(allmoney, number);
}
void xuanze(int allmoney, int number)
{
int a = 0;//init a = 0
printf("请输入选择的操作数\n");
scanf("%d",&a);//添加
if (a == 1 || a == 2 || a == 3 || a == 4)
{
sys(a, allmoney, number);
}
else
{
printf("错误的操作数,请按任意键继续'''\n");
getchar();
getchar();
display(allmoney, number);
}
}
void sys(int a, int allmoney, int number)
{
switch (a)
{
case 1:qk(allmoney, number);break;
case 2:ye(allmoney, number);break;
case 3:number_func(allmoney, number);break;
case 4:exit(0);break;
}
}
void qk(int allmoney, int number)
{
int money;
printf("请输入你的取款数(只能是100的整数倍):\n");//记得提示只能是100的整数倍
A:scanf("%d", &money);
if ((money < 0) || (money > 3000) || (money%100 != 0))
{
printf("错误\n");
goto A;//goto 由于程序的局部性原理,使用goto会使程序运行出现错误。
}
else
{
printf("请稍等\n");
if (allmoney < money)
{
printf("你的余额不足\n");
getchar();//等待用户确认
}
else
{
printf("你已取出%d元\n", money);
getchar();//等待用户确认
}
allmoney = allmoney - money;
getchar();
display(allmoney, number);
}
}
void ye(int allmoney, int number)
{
fflush(stdin);//将标准输入缓冲区清空,避免getchar读到旧数据使得程序一跳而过
printf("你的账户余额是%d元\n", allmoney);
getchar();
display(allmoney, number);
}
void number_func(int allmoney, int numbe)
{
int d, j;
printf("请输入新的密码\n");
B:scanf("%d", &d);
system("cls");
printf("确认密码\n");
scanf("%d", &j);
system("cls");// "
if (d != j)
{
printf("错误\n");
goto B;
}
else
{
numbe = j;
}
display(allmoney, numbe);
}
void data()
{
int number, allmoney;
printf("请设置初始密码:\n");
scanf("%d", &number);
system("cls");
printf("请设置初始金额:\n");
scanf("%d", &allmoney);
system("cls");
printf("请输入任意键继续\n");
getchar();
getchar();
display(allmoney, number);
}
void password(int number, int allmoney)
{
int i, m = 0;
printf("请输入密码\n");//\n
scanf("%d", &i);
system("cls");
if (i != number)
do
{
printf("你输入的密码错误\n");
m++;
scanf("%d", &i);
}
while (i != number && m < 2);
if (m > 1)
{
display(allmoney, number);
}
}
void main()
{
data();//datd 改为data
}
已帮你改好,还有模块间耦合度太高了,