问题:把560分钟换算成小时和分钟表示.
以下是我写的,但和实际数值有误差,请问错在哪里.
main()
{
int a,b,x=560; /*560分钟用小时和分钟表示*/
a=x/60;
b=x%60;
printf(“560s=%d,%d\n”,a,b);
getch()
;}
不好意思,问题可能有点低能
>> 本文固定链接: http://www.vcgood.com/archives/1908
问题:把560分钟换算成小时和分钟表示.
以下是我写的,但和实际数值有误差,请问错在哪里.
main()
{
int a,b,x=560; /*560分钟用小时和分钟表示*/
a=x/60;
b=x%60;
printf(“560s=%d,%d\n”,a,b);
getch()
;}
不好意思,问题可能有点低能
>> 本文固定链接: http://www.vcgood.com/archives/1908
你必须先 登录才能发表评论。
a = x/60;
b = x – 60*a;
方法是对的!不知道你指的错误是什么?
先谢谢xstar和5iluo.我指的是由于560和60的商是实数,所以以上程序
的结果不是精确数字.像此类问题是不是有精确的程序.
需要“精确”数字也可以!用float或double定义!不过得到的值就需要自己区分整数部分和小数部分了!
float a;
float b;
a = (float)560/(float)50;
a = 9.333333;
不过由于计算机的一些特点,其实单精度和双精度值的在计算机里的表示也不是特别”精确”。
另外为什么用int型等整型来计算此类问题呢?
因为这个正好利用了c语言在做整型除法时的一个特点:它会把数值的小数部分舍去,而不是我们所熟悉的四舍五入!这里正好得到整数的小时部分,取余正好得到分钟部分!
这个还可以应用在分割文件工具中,可以用来计算需要几个文件和最后一个文件的大小!
(如果取余为0,则除出来的数不需要加一,否则除出来的整数个文件数需要加一!)