今天这道题目,正如字面意思一样,是用C语言来实现厘米换算英尺英寸。

这道题目呢,是收录在基础编程题目集当中的编程题第一题,按理来说没啥难度,但为什么我要放上来呢,因为这道题的题目意思存在歧义。

题目要求,理顺逻辑话不多说,我们先来看看这道题目的要求:

1、如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)*0.3048。

2、现在要求输入的是厘米数,求对应英制长度的英尺foot和英寸inch的值。

3、1foot=12inch。

以上就是给定的要求,照理来说,知道这些要求好,我们可以根据数学公式,把foot和inch分别用cm的形式,即用表达式的形式表现出来。

但这就是问题所在了。

如图所示,根据题目要求,算出来的foot与cm的对应关系应该是这样的。

可是我在具体做这道编程题的时候,用这样的方式代入却是错误的。

所以我去网上查了查,1英尺到底等于多少cm。

最终得到1foot=30.48cm。

代码实现在清楚英尺与cm之间的关系后,我们也明白了这部分代码该怎么去写。

1、要求输入一个数,我们自然而然会想到用scanf函数。

2、1foot=30.48cm,然后输入的是cm数,所以得到的foot值应该为foot=cm/30.48。

3、因为1foot=12inch,所以可以得到inch=30.48*cm/12,但是这样做也是存在问题的,我们要根据这个公式来求得inch与cm之间的对应关系,所以这道题目就很有问题。

要求保留结果为整数,所以用int类型来代表inch和foot就行了。

#includeint main(){int foot = 0;int inch = 0;int cm = 0;scanf("%d", &cm);foot = cm/100.0/0.3048;inch = (cm/100.0/0.3048-foot)*12;printf("%d %d", foot, inch);}结果测试

这道题目呢,到这边就已经完成了,不过我们可以来看看这道题目在进行检查的时候的要求。

分别有四个测试点。

1、sample、inch尾数不大于0.5,不是四舍五入而是截断,这是因为用到了int数据类型,直接把小数点后面的数字给去掉了。

2、0,也是作为一个测试点。

3、foot为0的时候,应该也是0。

4、inch为0的时候,应该也是0。

正好这个程序都能满足这些测试点。

总结这道题目呢,是因为题目存在歧义,当然也与我不知道英尺英寸与厘米之间的关系所导致的,还是得多留心关于这种常识方面的知识才行。