懒大王ツ 2022-06-23 14:45 采纳率: 71.4%
浏览 48
已结题

有关C语言定义的一个判断输入值是否合理函数的返回值问题

这个是存款模块的代码,上面几步都没有问题,就是到输入存款额,然后调用函数判断其合理性的时候就开始有错了,就算输入合理数字,也是会卡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;
}

img

  • 写回答

2条回答 默认 最新

  • wwc2017 2022-06-23 15:20
    关注
    
    int judge(char*s)//判断输入的金额是否符合要求
    {
        int a,i=0;
    

    这里a没有赋初始值,它的值是随机的。运气不好,它等于0,那么你后面的
    if(a!=0)
    { a=1;
    }
    return a;
    并没有考虑a初始值就为0的情况。

    建议修改为int a=1, i=0;然后去掉
    if(a!=0)
    { a=1;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月1日
  • 已采纳回答 6月23日
  • 创建了问题 6月23日

悬赏问题

  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题