自己编了个小程序,大家帮忙看看,互相学习
#include <stdio.h>void main()
{char goods='a';
int money=0;
int balance=0;
charchoise='N';
while(1)
{printf("please enter goods that you want to buy\n");
scanf(" %c",&goods);
if((goods!='a')&&(goods!='b')&&(goods!='c')&&(goods!='d')&&(goods!='e')){printf("please choose your goods again\n");continue;};
printf("please drop your money\n");
scanf(" %d",&money);
if(money==1)
{if(goods=='a') balance=0;
else balance=-1;
}
else
if(money==10)
{switch(goods)
{case 'a':balance=9;break;
case 'b':balance=7;break;
case 'c':balance=7;break;
case 'd':balance=7;break;
case 'e':balance=3;break;
default:balance=-1;
}
}
else
{printf("your money isn't available\n");continue;};
if(balance==-1) {printf("your money isnot enough\n");continue;};
printf("please choose key\n");
scanf(" %c",&choise);
if(choise=='Y') printf("your balance is %d\n",balance);
else printf("take back your money\n");
}
} 主要实现的功能是:自动售货机功能,可以出售5种商品,分别用a、b、c、d、e代替,可以识别10元和1元钱,各种商品价格为a商品1元,b、c、d商品3元,e商品7元,投币后如果按取消,则退还全部钱,否则提示找零。 格式调整下可能方便大家读哈。 不错 {:3_69:} 不错·~!!!支持~! 按照现有程序,一次投币只能购买一种商品。 :victory: 你这个是新手写的程序吧。
这个程序看的让人有点蛋疼。
1、建议:main函数只写一个入口函数就行,其它的付钱、找零等功能可以单独写成专门的函数。便宜维护和扩展啊。
2、对于一些异常情况,考虑不周全,容易出BUG,比如钱为5、或者其它的该怎么处理。
3、格式方面有待交强,比如判定相等的时候,你不应该这么写money==1,而应该写成1==money.至于原因,老手都清楚,你写上几万行代码,很容易把==写成了=,这样money=1,永远是真的,很容易出问题啊。 还有没有一点注释,应该对于一个功能和模块,加上相应的说明。
另外,最好用上数组或者指针,比如人家投钱投了一次10元进去,此时不进行取商品操作,又投了1元进去呢,怎么办? {:3_79:}厉害 回复 10# cz245 没有异常处理 分支... 没有注释 可以考虑用Testbed、C++Test等工具对代码进行代码审查和单元测试 我喜欢这种氛围,自己写个东西,让大家来互相讨论,自己从中也能学到很多东西。 回复 9# cz245
谢谢你的建议,确实是新手,有很多考虑不周到的地方,谢谢指教~~
页:
[1]