1008 c

杭电oj1008——c语言

这道题的ac率很高,所以我跳过了几道先看这个,但对于新手的我来说还是有一些难点的

题目分析:首先输入第一个数N作为电梯要停的次数,接着输入N个数作为电梯要停的层数,需要用到两个while循环
#include <stdio.h>
int main()
{
  int n;
  int T;
  int to_floor;
  int second=0;
  while(scanf("%d",&n)!=EOF&&n){//没有可获取的值 或n=0时跳出循环
    int now_floor=0;//now_floor必须在此处清零才能保证后续测试的准确
    second=5*n;
    while(n--)//当N=0时跳出循环,并且每次循环递减1,最后N的值为-1
    {
        scanf("%d",&T);
        to_floor=T;
        second+=to_floor>now_floor?(to_floor-now_floor)*6:(now_floor-to_floor)*4;
        now_floor=to_floor;
    }
    printf("%d\n",second);
  }
}

反思:1.刚开始做的时候理解错了题目,以为例子中的“1 2”的意思是先到1层,再到2层,导致我自己得到的测试结果是错误的而且参考别人的代码也完全看不懂;学好英语很重要!认真审题也很重要
2.做题太少很多点根本没想到
总结:
1.
while(n--)//当N=0时跳出循环,并且每次循环递减1,最后N的值为-1
这个我是第一次见

2.

second+=to_floor>now_floor?(to_floor-now_floor)*6:(now_floor-to_floor)*4;
看到这个的时候惊艳到我了,我自己怎么就没想到,还打了一大堆乱七八糟的if else
3.
while(scanf("%d",&n)!=EOF&&n){//没有可获取的值 或n=0时跳出循环







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值