本篇文章讲解题目:愿成其身A÷B
推荐先独立进行解题尝试,然后再阅读本篇讲解!
我们知道C语言中用"/"来表示相除,整数的除法是采用的舍尾的方式。
5 \div 2 = 2 \ldots \ldots 1
5 / 2 = 1
所以对于这一题来说,题目要求输出A÷B的结果并保留到整数位。
如果写成A/B,A,B都是整数的话,那么会得出结果的整数部分,小数部分会被舍弃,而这一题应该四舍五入。
所以如下面代码是错误的。
#include<stdio.h> int main() { int A,B; scanf("%d %d",&A,&B); printf("%d\n",A/B); return 0; }
为了表示小数,我们可以使用double(float因为精度问题一般不使用)。
提到了精度问题,请百度double的注意事项,应重点关注double的表示范围与计算误差。
在这里暂时不对这一问题进行深入研究。
声明一个double型变量依旧类似。
double a;
在格式化输入输出里用%lf表示(有些标准对于有些情况使用%f,但一般统一写作%lf)。
那么如何表示精确到整数呢?
我们可以使用printf("%.lf\n",a);
可以注意到在%与lf中间加了一个点,这个便表示四舍五入到整数输出。
这也是格式化输出的一种运用,在后面会再细讲。
类似的还有:
printf("%.2lf\n",a); 四舍五入到小数点后两位数字输出。
printf("%.3lf\n",a); 四舍五入到小数点后三位数字输出。
等等……
还有一点需要注意:
此题的的输入数据描述,由两个整数变为了两个数。
所以输入数据有可能为小数,这个时候便不可以用整数来读取。