PTA-基础编程题目集-7-1 厘米换算英尺英寸

news/2024/11/16 18:25:17/

 

7-1 厘米换算英尺英寸

分数 15

作者 翁恺

单位 浙江大学

如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。

输入格式:

输入在一行中给出1个正整数,单位是厘米。

输出格式:

在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。

输入样例:

170

输出样例:

5 6

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

下方代码是正确答案。

但是本题在逻辑上有毛病,根据题目所说输入样例为170,输出样例为5和6。公式为对应的米是(foot+inch/12)×0.3048。好的,我们用计算器计算这道题目就会发现问题。1.7/0.3048≈5.577,foot取5,0.577*12≈6.924,但根据样例竟然取6。

#include <stdio.h>
int main()
{int cm=0;scanf("%d",&cm);  int foot = cm/30.48; int inch= (cm/30.48 - foot) * 12;printf("%d %d",foot,inch);return 0;
}

 

这里注意用int强制转换类型的写法。

我们先写一个测试小示例,讲解一个问题。

#include <stdio.h>
int main()
{int a=4,b=3,c;float d;c=a/b;d=a/b;printf("%d    %f",c,d);
}

理论上4/3≈1.333333.....但是输出结果确是如下结果:

 

 这是因为整型除以整型时,计算机默认运算结果取整,导致结果为1,无论c是不是整型答案都会取整。这里注意等号左边是输出类型只管输出,不参与等号右边的计算。

右边运算结果为1是既定事实,等号左边如果变量是浮点型则输出小数部分,如果是整型则进一步取整。这里记住int型(整型)一旦出现是强制取整的,如:

#include <stdio.h>
int main()
{float a=3,b=4,c;int d;c=b/a;d=b/a;printf("%f   %d",c,d);
}

 

 

这时等号右边的结果为两个浮点数4和3相除,结果为1.33333.....但是由于d为整型,所以强制取整结果为1。

如果是整型除以浮点型,结果是浮点型,但输出结果的类型还要看等号左边变量的类型。如:

#include <stdio.h>
int main()
{int a=4,c;float b=3,d;c=a/b;d=a/b;printf("%d    %f",c,d);
}

 结果为:

 

在这里虽然等号左边运算结果为1.3333.....但是由于等号左边为int型,结果强制将1.333....取整得到结果为1。 

 

如果是浮点型除以整型呢

#include <stdio.h>
int main()
{int a=4,c;float b=3,d;c=b/a;d=b/a;printf("%d    %f",c,d);
}

 

同上,运算结果为浮点型不取整,输出结果要看输出变量的类型。 

 

这里还有一个问题,如果我们输入变量类型必须是整型,但计算时又想进行浮点型运算,怎么办呢?这里有一个小技巧,将整型变量*1.0,如下:

#include <stdio.h>
int main()
{int a=4,b=3;float c;c=a/b;printf("%f\n",c);c=a*1.0/b;printf("%f\n",c);c=a/b*1.0;printf("%f\n",c);c=a/(b*1.0);printf("%f",c);
}

 这里我们又发现一个问题,为什么a/b*1.0的结果仍然时1.000000呢?

因为根据运算顺序,先算a/b,取整为1,然后再将1*1.0得到1.000000。所以一定不要忘记加括号,改变运算顺序。

好了,最后我们说一下四舍五入的问题。

#include <stdio.h>
int main()
{float a,b;int c,d;a=1.0/3;b=2.0/3;printf("%f  %f\n",a,b);printf("%.2f  %.2f\n",a,b);c=a+0.5;d=b+0.5;printf("%d  %d",c,d);
}

 

 

1.0/3=0.33333.....,2.0/3=0.66666....;由于浮点型只表示小数点后六位,近似为0.333333和0.666667。

这里要注意浮点型是自动四舍五入的。如果想保留六位以内的小数,如保留两位小数,那么应该写%.2f。

如果要四舍五入保留整数,那么应该利用整型自动取整的特性,给每一个运算结果加0.5,再用整型输出即可得到效果。如0.33四舍五入为0,0.33+0.5=0.83,整型取整为0;0.66+0.5=1.16,取整为1。

这里一定要注意取整是指只要整数,如1.333,只要1。而四舍五入是要有取舍,1.666,四舍五入为1.7。注意这两个概念不要混淆。


http://www.ppmy.cn/news/407713.html

相关文章

7-1 厘米换算英尺英寸(15 分)

如果已知英制长度的英尺foot和英寸inch的值&#xff0c;那么对应的米是(footinch/12)0.3048。现在&#xff0c;如果用户输入的是厘米数&#xff0c;那么对应英制长度的英尺和英寸是多少呢&#xff1f;别忘了1英尺等于12英寸。 输入格式&#xff1a; 输入在一行中给出1个正整数&…

7-1 厘米换算英尺英寸(基础编程题)

7-1 厘米换算英尺英寸 如果已知英制长度的英尺foot和英寸inch的值&#xff0c;那么对应的米是(footinch/12)0.3048。现在&#xff0c;如果用户输入的是厘米数&#xff0c;那么对应英制长度的英尺和英寸是多少呢&#xff1f;别忘了1英尺等于12英寸。 输入格式&#xff1a; 输入在…

PAT 7-1 厘米换算英尺英寸

#include <stdio.h> int main() { int foot,inch; int meter; printf("输入数据&#xff0c;单位是厘米:"); scanf("%d",&meter); foot meter/30.48; inch (meter-30.48*foot)/30.48*12; printf("%d %d\n",foot,inch); …

7-5 厘米换算英尺英寸

如果已知英制长度的英尺foot和英寸inch的值&#xff0c;那么对应的米是(footinch/12)0.3048。现在&#xff0c;如果用户输入的是厘米数&#xff0c;那么对应英制长度的英尺和英寸是多少呢&#xff1f;别忘了1英尺等于12英寸。 输入格式&#xff1a; 输入在一行中给出1个正整数…

7-1 厘米换算英尺英寸 (15 分)

7-1 厘米换算英尺英寸 (15 分) 如果已知英制长度的英尺foot和英寸inch的值&#xff0c;那么对应的米是(footinch/12)0.3048。现在&#xff0c;如果用户输入的是厘米数&#xff0c;那么对应英制长度的英尺和英寸是多少呢&#xff1f;别忘了1英尺等于12英寸。 输入格式&#xf…

7寸工控液晶屏的应用选型

一&#xff1a;7寸工控液晶屏的特点 7英寸屏幕已广泛应用于车载电视、工控显示、智能家居、医疗设备等各个领域&#xff0c;并获得好评。 目前市场上的液晶屏产品尺寸包括3.5英寸、4.3英寸、5.7英寸、6.5英寸、7英寸、8英寸、10.1英寸、10.4英寸、12.1英寸、15英寸、15.6英寸等…

【深入浅出密码学】RSA

RSA密码体制 引言&#xff1a; RSA加密的本意并不是为了取代对称密码&#xff0c;而且它比诸如AES的密码要慢很多&#xff0c;因为RSA当中涉及许多数学计算&#xff0c;RSA通常和类似AES的对称密码一起使用&#xff0c;真正用来加密大量数据的是对称密码。而RSA主要保护对称密…

问题:宇视摄像机如何对接第三方录像机

答案&#xff1a; 1&#xff09;协议选择onvif&#xff08;99%客户选择这个协议&#xff09; 2&#xff09;宇视摄像机onvif协议端口是80 3&#xff09;宇视摄像机默认用户名是admin&#xff0c;密码是123456&#xff0c;若密码修改使用修改后密码添加 &#xff08;一定要保…