51Testing软件测试论坛

标题: 自己编了个小程序,大家帮忙看看,互相学习 [打印本页]

作者: 事实和胜利    时间: 2011-8-19 11:33
标题: 自己编了个小程序,大家帮忙看看,互相学习
#include <stdio.h>
void main()
{char goods='a';
int   money=0;
int   balance=0;
char  choise='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");
}
}
作者: 事实和胜利    时间: 2011-8-19 11:36
主要实现的功能是:自动售货机功能,可以出售5种商品,分别用a、b、c、d、e代替,可以识别10元和1元钱,各种商品价格为a商品1元,b、c、d商品3元,e商品7元,投币后如果按取消,则退还全部钱,否则提示找零。
作者: 森林一木    时间: 2011-8-19 13:47
格式调整下可能方便大家读哈。
作者: msnshow    时间: 2011-8-19 13:55
不错
作者: ruirui。    时间: 2011-8-19 17:24

作者: tavimen    时间: 2011-8-21 16:57
不错·~!!!支持~!
作者: cd07180001    时间: 2011-8-21 18:54
按照现有程序,一次投币只能购买一种商品。
作者: 愚人    时间: 2011-8-21 23:28

作者: cz245    时间: 2011-8-22 18:16
你这个是新手写的程序吧。
这个程序看的让人有点蛋疼。
1、建议:main函数只写一个入口函数就行,其它的付钱、找零等功能可以单独写成专门的函数。便宜维护和扩展啊。
2、对于一些异常情况,考虑不周全,容易出BUG,比如钱为5、或者其它的该怎么处理。
3、格式方面有待交强,比如判定相等的时候,你不应该这么写money==1,而应该写成1==money.至于原因,老手都清楚,你写上几万行代码,很容易把==写成了=,这样money=1,永远是真的,很容易出问题啊。
作者: cz245    时间: 2011-8-22 18:17
还有没有一点注释,应该对于一个功能和模块,加上相应的说明。
另外,最好用上数组或者指针,比如人家投钱投了一次10元进去,此时不进行取商品操作,又投了1元进去呢,怎么办?
作者: stonejolin    时间: 2011-8-23 11:57
  厉害   回复 10# cz245
作者: 阿七    时间: 2011-8-23 15:22
没有异常处理 分支...
作者: 阿七    时间: 2011-8-23 15:22
没有注释
作者: TIB    时间: 2011-8-23 22:23
可以考虑用Testbed、C++Test等工具对代码进行代码审查和单元测试
作者: Circleyq    时间: 2011-8-25 09:41
我喜欢这种氛围,自己写个东西,让大家来互相讨论,自己从中也能学到很多东西。
作者: 事实和胜利    时间: 2011-8-26 17:50
回复 9# cz245


    谢谢你的建议,确实是新手,有很多考虑不周到的地方,谢谢指教~~




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2