- 思路1:将其分为整数和小数进行输出,小数转化为一位的整数,一次一次进行输出。
错误:本题是要求输出n位小数,而使用%f来保存我们计算的结果只能是6位
#include<stdio.h>
int main(){
int x,y,z;
float x1,y1,z1;
scanf("%f %f %f %d %d %d",&x1,&y1,&z1,&x,&y,&z);
int n;
scanf("%d",&n);
float ans=(x*y1*z1+y*z1*x1+z*x1*y1)/(x1*y1*z1);
int ans1=ans;
printf("%d.",ans1);
ans-=ans1;
while(n){
ans*=10;
ans1=ans;
ans-=ans1;
if(n==1){
int flag=(int)(ans*10);
if(flag>5)
ans1++;
}
n--;
printf("%d",ans1);
}
}
-
- 思路2:正确思路网址!!!
整数才能进行取余,必须输入整数。
写算法时先写出思路,一些关键的变量对应的含义也应写在演草纸上,避免出错。
X=X*10;
s=X/(x*y*z);
X=X%(x*y*z);