要求保留指定位数的小数。
两种解法:第一种直接运用printf()
函数的特性:
printf("%*.*s\n", m, n, ch);
//前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。
函数如下:
void f(int a, int b, int c)
{
if (b != 0)
{
printf("%.*lf\n", c, (double)a / b);
}
else
{
printf("error");
}
}
另一种就是直接模拟除法。代码如下,记得最后一位可能需要进位:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a, b, c, d;
scanf("%d%d%d", &a, &b, &c);
if (b != 0)
{
printf("%d%c", a / b, '.');
int i = 0;
for (i = 0; i < c-1; i++)
{
a %= b;
a *= 10;
printf("%d", a / b);
}
a %= b;
a *= 10;
d = a / b;
a %= b;
a *= 10;
if (a / b >= 5)
{
d++;
}
printf("%d\n", d);
}
else
{
printf("error");
}
return 0;
}