不叫灯笼椒 2022-03-22 11:54 采纳率: 100%
浏览 57
已结题

C语言的if else嵌套

做个找零练习,然后是输入商品的金额price和支付的面额bill,如果bill大于等于price,则找零,否则提示需补多少差价,是否补差价,是就让继续输入面额,如果补的差价(buchajia)大于等于price,则显示找零,如果小于price则提示重新购买,还会显示第一次和第二次(继续输入的面额)给的金额,总共退还多少。

现在运行这个的问题出在,若第二次输入的面额仍然小于需补差价的数,它最后提示的第二次输入的面额为0了,不是原本第二次输入面额的数了。而且也试过在其中插入print显示bill和price的值,发现是如果bill在前,bill可以正常显示,price变为0,如果price在前,bill在后,就是变为price是之前的数值,bill变为0了(bill和price在最开始的定义的顺序)(T▽T)

代码如下:
#include <stdio.h>
int main()
{
/定义需支付金额/
int bill=0,price = 0;
// 定义找零,所给金额,所给面额
// int bill ;
printf("请输入需支付金额和面额:\n");
scanf("%d %d",&price,&bill);
// printf("请输入你所给的金额:\n");
// scanf("%d",&bill);
//当所给金额大于需支付金额
if(bill >= price){
printf("需支付%d,您支付了%d,找您%d元!",price,bill,bill-price);
}else{
int cha = price-bill;
printf("支付失败!需支付%d,您支付了%d,请您再支付%d元!",price,bill,cha);
char cont;
printf("是否继续补充金额,"是"输入"y","否"输入"n":");
scanf("%s",&cont);
if(cont == 'y'){
int buchajia;
printf("%d",bill);//测试用
printf("%d",price);//测试用
printf("请输入您补充的金额:\n");
scanf("%d",&buchajia);
if(buchajia >= cha){
printf("您需补的金额为%d,您后续补充支付了%d,找您%d",cha,buchajia,buchajia-cha);
}else{
printf("您所补充的金额不足,请重新购买!\n");
printf("%d",bill);
printf("需支付金额%d元,您第一次支付了%d元,还需在支付%d元,您第二次支付了%d元,需总共退还您%d元",price,bill,cha,buchajia,bill+buchajia);
}
}else{
printf("取消购买。需支付金额%d元,您支付了%d元,退还您%d元
",price,bill,bill);
}
}
return 0;
}

img

有没有人帮忙看看(;へ:)( Ĭ ^ Ĭ ),谢谢大家了!

展开全部

  • 写回答

3条回答 默认 最新

  • 关注

    你的cont是char类型,但是输入的时候是%s控制的,所以出错

    img

    修改之后:

    img

    #include <stdio.h>
    int main()
    {
    
        int bill=0,price = 0;
    // 定义找零,所给金额,所给面额
    // int bill ;
        printf("请输入需支付金额和面额:\n");
        scanf("%d %d",&price,&bill);
    // printf("请输入你所给的金额:\n");
    // scanf("%d",&bill);
    //当所给金额大于需支付金额
        if(bill >= price)
        {
            printf("需支付%d,您支付了%d,找您%d元!",price,bill,bill-price);
        }
        else
        {
            int cha = price-bill;
            printf("支付失败!需支付%d,您支付了%d,请您再支付%d元!",price,bill,cha);
            char cont;
            printf("是否继续补充金额,\"是\"输入\"y\",\"否\"输入\"n\":");
            getchar();
            scanf("%c",&cont);
            if(cont == 'y')
            {
                int buchajia;
                printf("%d",bill);//测试用
                printf("%d",price);//测试用
                printf("请输入您补充的金额:\n");
                scanf("%d",&buchajia);
                if(buchajia >= cha)
                {
                    printf("您需补的金额为%d,您后续补充支付了%d,找您%d",cha,buchajia,buchajia-cha);
                }
                else
                {
                    printf("您所补充的金额不足,请重新购买!\n");
                    printf("%d",bill);
                    printf("需支付金额%d元,您第一次支付了%d元,还需在支付%d元,您第二次支付了%d元,需总共退还您%d元",price,bill,cha,buchajia,bill+buchajia);
                }
            }
            else
            {
                printf("取消购买。需支付金额%d元,您支付了%d元,退还您%d元",price,bill,bill);
            }
        }
        return 0;
    }
    
    
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    如有帮助,请点击我评论上方【采纳该答案】按钮支持一下,谢谢!以后有什么问题可以互相交流。

    回复
    不叫灯笼椒 回复 CSDN专家-深度学习进阶 2022-03-22 12:29

    你好,我刚刚将%s改为%c了,但是运行之后直接跳过了是否继续了

    img

    回复
    CSDN专家-深度学习进阶 回复 不叫灯笼椒 2022-03-22 12:32

    那个前面还要加个getchar();
    我的代码已经是正常的,可以直接用,记得点击我评论上方【采纳该答案】按钮支持一下

    回复
    展开全部4条评论
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月22日
  • 创建了问题 3月22日

悬赏问题

  • ¥15 爱快路由器端口更改错误导致无法访问
  • ¥20 安装catkin时遇到了如下问题请问该如何解决呢
  • ¥15 VAE模型如何输出结果
  • ¥15 编译python程序为pyd文件报错:{"source code string cannot contain null bytes"
  • ¥20 关于#r语言#的问题:广义加行模型拟合曲线后如何求拐点
  • ¥15 fluent设置了自动保存后,会有几个时间点不保存
  • ¥20 激光照射到四象线探测器,通过液晶屏显示X、Y值
  • ¥50 数据库开发问题求解答
  • ¥15 安装anaconda时报错
  • ¥15 小程序有个导出到插件方式,我是在分包下引入的插件,这个export的路径对吗,我看官方文档上写的是相对路径
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部