杭电OJ---1070_Milk_WA若干次后AC总结



其实题目没多难,可为什么总是WA呢?


  1. 审题错误:题目有这么几句话。
    Here are some rules:
    1. Ignatius will never drink the milk which is produced 6 days ago or earlier. That means if the milk is produced 2005-1-1, Ignatius will never drink this bottle after 2005-1-6(inclusive).
    2. Ignatius drinks 200mL milk everyday.
    3. If the milk left in the bottle is less than 200mL, Ignatius will throw it away.
    4. All the milk in the supermarket is just produced today.

    Note that Ignatius only wants to buy one bottle of milk, so if the volumn of a bottle is smaller than 200mL, you should ignore it.
    Given some information of milk, your task is to tell Ignatius which milk is the cheapest.

    第3条rule说如果瓶子里的牛奶不足200ml,他就会扔掉。后面又说,如果一瓶牛奶的容量小于200ml,你应该忽略它。

    我当时将这两条都理解成后面的意思了。所以算性价比时,被扔掉的部分也算进去了。
    而题目的意思是不应该算的,虽然题目有些不合常理,不足200ml就不喝扔掉不浪费吗?

  2. 输入变量时对应变量顺序错误,调用函数时传递参数的顺序搞混:  

    低级错误,没什么好讲的。这种错误犯了还不易发现。以后要少犯!最好养成边编写边检查细节的习惯。

  3. 强制类型转换使用细节出问题:

    比如:
    cout << (float)(5/2) 输出结果是 2
    cout << (float)5/2 输出结果是2.5
    所以搞不清优先级却又认为大不了多加几个括号的人要注意了,有时候加括号是可以解决问题,但这个例子告诉我们,有时候括号是不能随便加的。
    这样的错误虽然犯的概率不大,但一旦犯了,那就悲剧了。找出这么细微的错误,真心难啊!

  4. 分母不能为零;

    这道题好像不会有多大影响。但这是个很值得注意的问题。
    试着执行一下下面的语句:
    cout << 1.0/0 <<endl;
    cout << 1/0.0 <<endl;
    cout << 1.0/0.0 <<endl;
    cout << (float)1/0 <<endl;
    cout << 1/0 <<endl;
    如果你用的是codeblocks,你会发现前面几个输出的都是inf,只有最后一个系统会报错。

    这也就可以得出下面几个结论:

    算术运算时,只要左右操作数中一个是浮点类型(相对较高的类型),计算机会先将操作数都转换成浮点类型再计算。当然结果也是浮点类型的。

    强制类型转换时,也是将左右操作数先转化成相应的类型再计算。如果操作数是表达式,要先算出结果再转换类型。学过操作符重载就知道,因为左右操作数也是相当于参数传到函数内的,所以要先算出结果再转换类型。


    下面给仍然没AC的同胞几组测试数据,没准就能发现自己的问题所在。

    5
    2
    Yili 10 399
    Mengniu 10 400
    4
    Yili 40 600
    Mengniu 40 9999
    Guangming 1 199
    Yanpai 40 8800
    2
    Yili 3 199
    Mengniu 3 100
    2
    Yili 10 401
    Mengniu 10 400
    2
    Yili 0 399
    Mengniu 0 400

    我AC的程序输出的结果是:
    Yili 10 399
    Mengniu 10 400
    Mengniu
    4
    Yili 40 600
    Mengniu 40 9999
    Guangming 1 199
    Yanpai 40 8800
    Mengniu
    2
    Yili 3 199
    Mengniu 3 100
    Yili
    2
    Yili 10 401
    Mengniu 10 400
    Yili
    2
    Yili 0 399
    Mengniu 0 400
    Mengniu

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值