为什么能运行却得不到结果呢??

eric491179912 2009-05-31 11:15:18
大家好我是新手,写了一个递归方法的二进制数转十进制数的程序,输入整数结果正确,用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;


}


...全文
177 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
eric491179912 2009-06-01
  • 打赏
  • 举报
回复
谢谢各位好心人了
小弟感谢!!
lingyin55 2009-05-31
  • 打赏
  • 举报
回复
else if(xiaoshu==0)

像浮点数的大小比较,用==是得不出结果的,你只能用两个数的差的绝对值小于
某一个误差值进行判断。这个误差值根据需要由自己定义,一般为10的-6次方
上山老人 2009-05-31
  • 打赏
  • 举报
回复
晚上要睡觉 没时间看 有时间帮你看下吧 自己研究一下吧 细节方面注意一点
lingyin55 2009-05-31
  • 打赏
  • 举报
回复
up3楼,这里sum2+=n/t2; n/t2的类型还是int型。
你也可以用sum2+=(float)n/t2;先强制转换一下
liao05050075 2009-05-31
  • 打赏
  • 举报
回复

#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 float t2=2; //这里原来的int要改成float,不然下面n/t2就变成int/int,结果还是一个int(1/2==0)

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) //浮点数在内存中保存是不精确的,也就是说你不能拿它跟一个比较是不是相等,因为很可能1.5可能用float来存会得
//到1.49999999999 它永远不会直接==1.5, 所以通常用fabs(a-b)<1e-6(一个很小的数),来比较两个浮点数是否相等,
//你的程序在这里不用这个else if也行,所以直接去掉吧

return sum2;


}
eric491179912 2009-05-31
  • 打赏
  • 举报
回复
对上面程序加了点注释,希望帮忙解答谢谢

#include "Stdio.h"

int integer(int zhengshu);

float decimal(float xiaoshu);



int main(void)
{
float n,xs;

int zs;

printf("\n enter 2 jinzhi:");/*提示输入一个二进制数,必须由1或0组成*/

scanf("%f",&n);

zs=(int)n;/*得到整数部分*/

xs=n-zs;/*m得到小数部分*/

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;


}

liliangbao 2009-05-31
  • 打赏
  • 举报
回复
帮顶~
这个是完整源码 python实现 大数据 Spark pyspark 可视化大屏+Kafka+FastAPI+Vue3 【大数据毕业设计】基于Spark实时电商用户行为分析与预测(Python版本+pyspark+可视化大屏+Kafka+FastAPI+Vue3) 源码+论文 完整版 数据库Mysql 随着电子商务规模持续扩大,用户在浏览、加购、收藏与购买等环节产生的行为数据呈现高并发、高吞吐与强时效特征。传统离线批处理分析难以满足运营决策对实时性的要求。本文设计并实现了一套基于 Spark 的实时电商用户行为分析与预测系统,围绕“数据采集—流式计算—指标落库—可视化展示—销售预测”的完整链路展开研究与工程实践。 系统采用前后端分离架构:前端基于 Vue3、Element Plus 与 ECharts 构建管理端与数据大屏;后端采用 Python FastAPI 提供 RESTful 接口,并结合 JWT 完成管理员身份认证;实时链路以 Kafka 作为消息中间件承接行为事件,以 Spark Structured Streaming 完成按小时窗口的 PV、UV、加购、收藏、购买与销售额聚合;预测模块基于 Spark ML 线性回归对销售额序列进行建模,并输出 RMSE、MAE、MAPE 等误差指标。数据持久化采用 MySQL,数据库名为 db_ecommerce,核心业务表均以 t_ 前缀命名。 测试结果表明,系统能够稳定完成管理员登录、个人中心维护、行为与商品管理、实时统计展示、销售预测对比及流水线状态监控等功能,具备较好的可扩展性与教学示范价值,可为电商运营提供实时洞察与辅助决策支持。 本文的主要工作包括:完成系统需求分析与总体架构设计;绘制实体属性图与实体关系图并完成八张核心业务表设计;实现基于 Kafka 与 Spark 的实时统计及销售预测链路;完成 Vue

70,039

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧