C语言程序自动售货机怎么编

C语言程序自动售货机怎么编,第1张

#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 自动售货机的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9325094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存