做个找零练习,然后是输入商品的金额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);",price,bill,bill);
}
}else{
printf("取消购买。需支付金额%d元,您支付了%d元,退还您%d元
}
}
return 0;
}
有没有人帮忙看看(;へ:)( Ĭ ^ Ĭ ),谢谢大家了!