为什么能运行却得不到结果呢??
大家好我是新手,写了一个递归方法的二进制数转十进制数的程序,输入整数结果正确,用win-tc编译通过点运行输入小数部分就出问题了,窗口立刻消失,麻烦大家看看处理小数部分的递归函数哪里出了问题..谢谢!!
#include "Stdio.h"
int integer(int zhengshu);
float decimal(float xiaoshu);
int main(void)
{
float n,xs;
int zs;
printf("\n enter 2 jinzhi:");
scanf("%f",&n);
zs=(int)n;
xs=n-zs;
printf("\n10 jinzhi:");
printf("%f",(integer(zs)+ decimal(xs)));
getch();
}
int integer(int zhengshu) /* 处理整数部分*/
{
static int m,t1=1,sum1=0; /*m为各位数,t为各位权值*/
m=zhengshu%10;
if((zhengshu/10)!=0)
{
sum1+=m*t1;
t1*=2;
integer(zhengshu/10);
}
else if((zhengshu/10)==0)
{
return sum1+m*t1;
}
}
float decimal(float xiaoshu)
{
static int t2=2;
static float sum2=0;
int n;
float f;
if(xiaoshu>0)
{
f=xiaoshu*10;
n=(int)f;
sum2+=n/t2;
t2*=2;
f=f-n;
decimal(f);
}
else if(xiaoshu==0)
return sum2;
}
#include "Stdio.h"
int integer(int zhengshu);
float decimal(float xiaoshu);
int main(void)
{
float n,xs;
int zs;
printf("\n enter 2 jinzhi:");
scanf("%f",&n);
zs=(int)n;
xs=n-zs;
printf("\n10 jinzhi:");
printf("%f",(integer(zs)+ decimal(xs)));
getch();
}
int integer(int zhengshu) /* 处理整数部分*/
{
static int m,t1=1,sum1=0; /*m为各位数,t为各位权值*/
m=zhengshu%10;
if((zhengshu/10)!=0)
{
sum1+=m*t1;
t1*=2;
integer(zhengshu/10);
}
else if((zhengshu/10)==0)
{
return sum1+m*t1;
}
}
float decimal(float xiaoshu)
{
static int t2=2;
static float sum2=0;
int n;
float f;
if(xiaoshu>0)
{
f=xiaoshu*10;
n=(int)f;
sum2+=n/t2;
t2*=2;
f=f-n;
decimal(f);
}
else if(xiaoshu==0)
return sum2;
}
...全文
相关推荐
软件正在改变世界,为什么程序员却得不到足够的尊重?
“软件正在改变世界,为什么程序员却得不到足够的尊重?”在当今信息化社会,软件在各个领域发挥着举足轻重的作用,然而,程序员这一职业群体却常常面临得不到足够尊重的问题。虽然软件工程师在美国2012年的
为什么我的PPT得不到好评
### 为什么我的PPT得不到好评#### 一、目的性明确吗?在设计PPT时,首要考虑的问题就是目的性是否明确。
C# 中的??操作符浅谈
Name`也会是null,然后`??`操作符会返回"Unknown"。`??`操作符的一个重要特性是它只会在左操作数为null时才检查右操作数。
ES2020系列之空值合并运算符 ??
运算符??的主要作用是在可能存在缺失值的情况下,提供一个默认
JS中??与||区别[项目代码]
这就使得双问号??在某些特定的编程场景中更为适用。例如,当需要区分变量是否有意为之的假值(如0)与未初始化或未赋值的情况时,使用双问号??能够更精确地进行条件判断。在JavaScript中,双问号??


