C语言问题疑惑

来源:百度知道 编辑:UC知道 时间:2024/06/05 05:37:26
有个程序,我编写了之后总是不行,输出的数据都是负的N大....不知道是什么原因....请各位大哥帮忙检查下程序哪里有错误~!谢谢~

#include<stdio.h>
#include<math.h>
void main()
{
float ten(double z);
double x,y;
printf("请输入一个二进制的数,我们好将它转换成10进制,如果输入的不是二进制数的话,我们就不能为你输出正确的结果,最多20位小数\n");
scanf("%f",&x);
y=ten(x);
printf("所求出你输入的二进制数的十进制数为:%.8f",y);
}
float ten(double z)
{
int a,b,c=0,d,e,f,g,r,q;
e=0;r=z;
double h=0;
for(a=1;a<=r;a=a*10)
{
b=z/a;
if (b==1)
{
c=a;
}
else c=c;
}
for(;c>=10;)
{
d=c/10;
e=e+1; /* 整数有多少位 */
}
for(;e>1;e--)
{
f=r/pow(10,e-1);
g=f*pow(2,e-1);
h=h+g; /* 整数部分和 */
r=r-f*pow(10,e-1);
z=z-f*pow(10,e-1);
}
double i,p,t; /* 开始小数部分运算 */
int l,n;
i=z;
for(l=1;l<=20;l++)
{

#include<stdio.h>
#include<math.h>
void main()
{
//...
scanf("%f",&x); //这里应该用scanf("%lf",&x); float类型的用%f,double类型的用%lf
y=ten(x);
//...
}

float ten(double z)
{
//这个函数里面的功能错的一塌糊涂,实在看不下去
}