【C语言】BC64牛牛的快递(DAY 5) 您所在的位置:网站首页 go语言牛牛的一周有七天 【C语言】BC64牛牛的快递(DAY 5)

【C语言】BC64牛牛的快递(DAY 5)

2024-01-23 17:19| 来源: 网络整理| 查看: 265

文章目录 题目简介代码块解题步骤第一步第二步

题目简介

困扰了自己两三天的一道题目 BC64牛牛的快递 描述 牛牛正在寄快递,他了解到快递在 1kg 以内的按起步价 20 元计算,超出部分按每 kg 1元计算,不足 1kg 部分按 1kg计算。如果加急的话要额外付五元,请问牛牛总共要支付多少快递费 输入描述: 第一行输入一个单精度浮点数 a 和一个字符 b ,a 表示牛牛要寄的快递的重量,b表示牛牛是否选择加急,‘y’ 表示加急 ,‘n’ 表示不加急。 输出描述: 输出牛牛总共要支付的快递费用 在这里插入图片描述 在这里插入图片描述

代码块 #include int main() { int price=0;;//价格 int i=0;//超出的公斤数 float a=0.0;//公斤数 char b=0;//y n int cnt; scanf("%f %c",&a,&b); if(a price=20+5; } else price=20; } else if(a>1) { if((a-1.0)!=(int)(a-1.0)) { i=(int)(a-1.0)+1; } else { i=a-1.0; } if(b=='y') { price=20+i+5; } else{ price=20+i; } } printf("%d",price); return 0; } 解题步骤

前两天做的时候总是在第八组实验样例中报错,于是自己在斤数上加加减减,但也没有起到作用,于是就往后刷题了,没有再管。但是!这就像无数修炼过程中的一个阻碍,如果不突破他,自己也很难有大进步。所以今天就再推倒重来!无非是再来一次!

第一步

首先看题,1kg之内的快递是20元,如果再加急的话就是再加五块钱。不加急,就是20元。这样第一个循环也就能写出来了,先不用管我们变量都用什么类型的,咱们先把主要的框架想出来,再去解决细枝末节的东西。就和雕刻一样,都是先雕一个大概,再去修饰。 在这里插入图片描述

第二步

其次,如果快递超出1kg,每1kg都要加一块钱,不足1kg的也按1kg算。 这时候我就在想,如何才能表示不足1kg时,也按1kg算。我想到了强制转换类型,如果是1.5kg,那1kg是基础费用,这0.5就是而外加的,如何表示? 在这里插入图片描述 不难看出,int形的强制转换是向下取整,所以我们索性加个1好了,要不然怎么表示小于1时额外的钱。

else if(a>1) { if((a-1.0)!=(int)(a-1.0)) { i=(int)(a-1.0)+1; } else { i=a-1.0; } if(b=='y') { price=20+i+5; } else{ price=20+i; } } printf("%d",price); return 0;

这第二步的代码才是最重要的,我一步一步翻译。 else if(a>1) 这是当快递大于1kg时, 在这里插入图片描述 如果快递斤数-1.0 不等于强制转换类型后的a-1.0 这个意思就是 快递斤数-1.0 后如果还是小数 那就是几点几的表示形式,这种情况我们需要对它向下取整并加一,但是!如果我们减去1后它就是一个整数怎么办?这也是我遇到的最关键的问题,如果减1后是一个整数,我们再强制转换再加1,那数值就超出预计的数了,多加了一次1。 所以为了解决这个问题,我写了这个if循环。 这个结果是我没有写这个循环时候的报错 在这里插入图片描述 其实这道题最关键的就是判断快递的斤数减1后是不是一个小数,如果是小数,就强制转换再加1。如果是整数就 不用再加1了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有