输出总是不对
输入一个双精度的数;分别输出它的整数位和,小数位。例如:
输入123.456
有a=123,b=0.456
#include <stdio.h>
#pragma warning (disable:4996)
void fun( double aa, int *x, double *y )
{ int i=1;
int b;
double c=aa;
*y=0.0;
b=(*x)=(int)aa;
while(c!=(double)b)
{
c*=10;
b=(int)c;
*y+=(int)c%10/(10*i);
printf("%lf",*y);
i++;
}
}
main()
{ void NONO();
double aa, b; int a;
printf("请输入一个双精度数: ");scanf("%lf",&aa);
fun( aa, &a, &b );
printf( "%f的整数部分是: %d 小数部分是%f\n", aa,a,b );
NONO();
}
void NONO()
{
FILE *in, *out ;
double aa, b; int a;
int i ;
in = fopen("in.dat","r") ;
out = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(in, "%lf", &aa) ;
fun( aa, &a, &b );
fprintf(out, "%f的整数部分是: %d 小数部分是%f\n", aa,a,b );
}
fclose(in) ;
fclose(out) ;
}
输出小数位总是0.000000