c语言关于ATM的问题求助,编译没问题,错误是运行输入用户名错误后仍可运行,密码无限次输入
发布网友
发布时间:2023-05-03 23:10
我来回答
共1个回答
热心网友
时间:2023-10-23 00:47
#include <stdio.h>
#include <conio.h>
#define PASS 123456
int money=200;
int yhm()
{
int x=3;
char a,b='z';
while(x>0)
{
printf("请输入用户名:");
getchar();//不然会被跳过一次
scanf ("%c",&a);
if(a==b)
{
printf("ok");
return 1;
break;
}
else{
x--;
printf("输入错误\n");
}
}
return 0;
}
int mima()
{
int pass,i,n=3;
char ch;
do
{
pass=0;
for(i=1; (i<=6)&&((ch=getch())!=0); i++)
{
putchar ('*');
pass=pass*10+ch-'0';
}
if (pass==PASS)
{
printf("密码正确\n");
break;
}
else
{
n--;
printf("密码错误,还剩%d次机会\n",n);
}
}
while(n>0);
if(pass==PASS)
return 1;
else
return 0;
}
void yue()
{
printf("卡中金额为:%d\n",money);
}
void cunk()
{
int n;
printf("请输入存款金额:\n");
scanf("%d",&n);
money+=n;
printf("卡中金额为%d",money);
}
void quk()
{
int n;
printf("请输入取款金额:\n");
scanf("%d",&n);
if(n>money)
printf("卡中金额不足\n");
else
money-=n;
printf("卡中金额为%d\n",money);
}
void zhuanz()
{
int n,kh;
printf("请输入转账卡号:\n");
scanf("%d",&kh);
printf("请输入转账金额:\n");
scanf("%d",&n);
if(n>money)
printf("余额不足\n");
else
money-=n;
printf("卡中金额为%d\n",money);
}
void menu()
{
int n,flag=1;
while(flag)
{
printf("欢迎使用本机器\n");
printf("请选择您要办理的业务\n");
printf(" 1---------余额查询\n");
printf(" 2---------存款业务\n");
printf(" 3---------取款业务\n");
printf(" 4---------转账业务\n");
printf(" 0---------结束操作\n");
scanf("%d",&n);
switch (n)
{
case 1:
yue();
break;
case 2:
cunk();
break;
case 3:
quk();
break;
case 4:
zhuanz();
break;
case 0:
flag=0;break;
}
}}
main()
{
if(yhm())
printf("请输入密码\n");
else{
printf("输入超过次数\n");//对yhm进行判断,不然mima模块都会被执行
return 0;
}
mima();
if(mima())
menu();
}
追问还是不对啊,输的正确却显示用户名输入错误