#include<stdio.h>
int main()
{
int n;
double flage = 1.0;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
printf("i:%d\n", i);
flage *= i;
printf("value :%f\n", flage);
while (flage >= 10)
{
flage /= 10;
printf("%f \n", flage);
}
printf("after /10: %f\n", flage);
}
// printf("%d", (int)flage);
return 0;
}
运行结果:
测试样例为8
修改代码的输出类型
#include<stdio.h>
int main()
{
int n;
double flage = 1.0;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
printf("i:%d\n", i);
flage *= i;
printf("value :%d\n", (int)flage);
while (flage >= 10)
{
flage /= 10;
printf("%d \n", (int)flage);
}
printf("after /10: %d\n", (int)flage);
}
return 0;
}
修改代码之后的运行结果:
经过对比我们可以发现使用double类型定义参数之后,再使用累除的方法,就可以大大减少参数长度,这样也便于我们输出最高位数字。
那么代码中如果大于10意思就是整数部分如果大于10就让他变成只有最高位的小数。