这个是存款模块的代码,上面几步都没有问题,就是到输入存款额,然后调用函数判断其合理性的时候就开始有错了,就算输入合理数字,也是会卡while循环里,一直循环。这个judge函数返回值总是不能为1.(以下是有关的部分代码,试运行结果在此末尾。)
(全部完整代码在我的另一个悬赏问答里--我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《对一个简单程序(C语言,大一水平)的调试-CSDN问答》, 一起来围观吧 http://t.csdn.cn/iU0og?spm=1005.2026.3001.5622)
先谢谢大家了。
void SaveMoney()//存款
{
int a;
int num;//账号
int who;//查找到该账号在数组中对应的下标
int mima;
double money;
char str[100];
printf("请输入您的账号:\n");
scanf("%d",&num);
who = search(num);
if(who<0)
printf("该用户不存在,存款失败!\n");
else
{
if(user[who].status==0)
{
printf("请输入密码:");
mima=InputPassword();
if(mima!=user[who].password)
printf("密码错误,请重新输入:");
else
{
printf("户主姓名:%s\n", user[who].name);
printf("输入存款额:");
scanf("%s", str);
a=judge(str);
while(a!=1)
{
printf("输入错误,请重新输入存款额\n");//不知道judge函数哪里不对,输入金额后就一直卡在这个while循环里出不去了
scanf("%s", str);
a=judge(str);
}
if(a==1)
{
money=atoi(str);
if(money<0||money>1000000)
printf("输入金额太大,自动退出\n");
else
{
user[who].balance+=money;
printf("您的当前余额为%.2f元. \n",user[who].balance);
}
}
}
}
else if(user[who].status==1)
printf("该用户处于挂失状态,存款失败!\n");
else if(user[who].status==2)
printf("该用户已经销户,存款失败!\n");
}
}
#这是那个判断输入存款金额的函数
int judge(char*s)//判断输入的金额是否符合要求
{
int a,i=0;
while(s[i]!='\0')
{
if(s[i]<'0'||s[i]>'9')
{
a=0;
break;
}
i++;
}
if(a!=0)
{ a=1;
}
return a;
}