#include<stdioh>
bool GetCharge(int Sum,int Money);
void Getsmalcharge(int Money,int ChargeNum);
void main()
{
char state='N';
int Sum=0;
char Pro;
printf("\n\n");
while(true)
{
state='N';
Sum=0;
while(state=='N'||state=='n')
{
printf("\n输入购买物品(a,b,c):");
scanf("%c",&Pro);
getchar();
switch(Pro)
{
case 'a':
Sum=Sum+1;
break;
case 'A':
Sum=Sum+1;
break;
case 'b':
Sum=Sum+5;
break;
case 'B':
Sum=Sum+5;
break;
case 'c':
Sum=Sum+10;
break;
case 'C':
Sum=Sum+10;
break;
default:
printf("\n输入物品有误!!!!\n");
break;
};
printf("\n是否完成(Y/N):");
scanf("%c",&state);
getchar();
}
int Money;
printf("\n购买总价为:%d",Sum);
bool st=false;
while(!st)
{
printf("\n输入金额:");
scanf("%d",&Money);
getchar();
st=GetCharge(Sum,Money);
};
printf("\n----------------购买结束------------\n");
printf("\n");
printf("\n");
printf("\n");
}
}
//----------------------------------------------------
bool GetCharge(int Sum,int Money)
{
int ChargeNum[4];
for(int i=0;i<4;i++)
{
ChargeNum[i]=0;
}
if(Sum>Money)
{
printf("\n金额不够,请重新输入");
return false;
}
else if(Sum==Money)
{
printf("\n余额为0");
return true;
}
else
{
int Result=Money-Sum;
Getsmalcharge(Result,ChargeNum);
printf("\n余额为%d元,应找零\n1 元%d张\n2 元%d张\n5 元%d张\n10元%d张\n",Result,ChargeNum[0],ChargeNum[1],ChargeNum[2],ChargeNum[3]);
}//end if
return true;
}
//------------------------------------
void Getsmalcharge(int Money,int ChargeNum)
{
if(Money<0)
return;
int Sum=Money;
int charge[4]={1,2,5,10};
ChargeNum[3]=Sum/charge[3];
Sum=Sum%charge[3];
ChargeNum[2]=Sum/charge[2];
Sum=Sum%charge[2];
ChargeNum[1]=Sum/charge[1];
Sum=Sum%charge[1];
ChargeNum[0]=Sum/charge[0];
Sum=Sum%charge[0];
}
#include int main(void){ int i; printf("\n"); printf(" 可选择的按键: \n"); printf(" 1 巧克力 \n"); printf(" 2 蛋糕 \n"); printf(" 3 可口可乐 \n"); printf("\n"); printf("从1~3中选择按键:\n"); scanf("%d", &i); switch(i) { case 1: printf("你选择了巧克力\n"); break; case 2: printf("你选择了蛋糕\n"); break; case 3: printf("你选择了可口可乐\n"); break; default: printf("选择错误\n"); break; } return 0;}
/信号定义:
clk: 时钟输入;
reset: 为系统复位信号;
half_dollar: 代表投入5角硬币;
one_dollar: 代表投入1元硬币;
half_out: 表示找零信号;
dispense: 表示机器售出一瓶饮料;
collect: 该信号用于提示投币者取走饮料。 /
module sell(one_dollar,half_dollar,
collect,half_out,dispense,reset,clk);
parameter idle=0,one=2,half=1,two=3,three=4;
//idle,one,half,two,three 为中间状态变量,代表投入币值的几种情况
input one_dollar,half_dollar,reset,clk;
output collect,half_out,dispense;
reg collect,half_out,dispense;
reg[2:0] D;
always @(posedge clk)
begin
if(reset)
begin
dispense=0; collect=0;
half_out=0; D=idle;
end
case(D)
idle:
if(half_dollar) D=half;
else if(one_dollar)
D=one;
half:
if(half_dollar) D=one;
else if(one_dollar)
D=two;
one:
if(half_dollar) D=two;
else if(one_dollar)
D=three;
two:
if(half_dollar) D=three;
else if(one_dollar)
begin
dispense=1; //售出饮料
collect=1; D=idle;
end
three:
if(half_dollar)
begin
dispense=1; //售出饮料
collect=1; D=idle;
end
else if(one_dollar)
begin
dispense=1; //售出饮料
collect=1;
half_out=1; D=idle;
end
endcase
end
endmodule
以上就是关于C语言程序 自动售货机 怎么编全部的内容,包括:C语言程序 自动售货机 怎么编、用c语言编写自动售货机程序、求助!数字电路verilog HDL 自动售货机的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)