标题:如何用putchar输出一个单精度浮点数
只看楼主
m1c2f4843
Rank: 1
等 级:新手上路
帖 子:27
专家分:4
注 册:2010-7-30
结帖率:85.71%
 问题点数:0 回复次数:12 
如何用putchar输出一个单精度浮点数
给个思路
或着给个代码
搜索更多相关主题的帖子: 输出 点数 putchar 单精度 
2010-09-11 15:50
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:0 
。。。。。。。。那就一个符号一个符号输出。。。。。。。。。。。。。。。。。
先求出每一个数位上的数码,然后把该数码转换成对应的ASCII代码输出,当然要注意符号、小数点的输出

[ 本帖最后由 jack10141 于 2010-9-11 15:55 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-11 15:53
m1c2f4843
Rank: 1
等 级:新手上路
帖 子:27
专家分:4
注 册:2010-7-30
得分:0 
具体点啊
2010-09-11 15:56
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:0 
char a[100];
float b;
sprintf(a,"%f",b);
do{
putchar(a);
}while(++a!='\0');
2010-09-11 15:56
m1c2f4843
Rank: 1
等 级:新手上路
帖 子:27
专家分:4
注 册:2010-7-30
得分:0 
只能用putchar函数
别的函数不能用啊
2010-09-11 16:07
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:0 
用个函数你也管,我恨不得用CString呢!
2010-09-11 16:16
m1c2f4843
Rank: 1
等 级:新手上路
帖 子:27
专家分:4
注 册:2010-7-30
得分:0 
没办法
2010-09-11 16:21
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:0 
典型的作业贴!!呵呵,我帮你写了整数部分,至于小数部分,自己参考着想办法了!!
程序代码:
#include <stdio.h>

int putf(float f)
{
    if(f>10)putf(f/10);   
    putchar((int)f%10+'0');
    return 0;
}
int main()
{
    float f;
    scanf("%f",&f);
    if(f<0)putchar('-');
    if(f>0)
        putf(f);
    else
        putf(-f);
    putchar('.\n');  
    printf("%f",f);

    return 0;
}

 

[ 本帖最后由 jack10141 于 2010-9-11 16:40 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-11 16:37
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:0 
https://bbs.bccn.net/viewthread.php?tid=44500&highlight=%D2%BB%C6%AA%B9%D8%D3%DA%B8%A1%B5%E3%CA%FD%B5%C4%CF%EA%CF%B8%BD%B2%BD%E2
程序代码:
int main()
{
    unsigned char *a;
    float b=2.0;
    /*
a=(unsigned char *)&b;
    int c=sizeof(float);
    for(int i=0;i<c;i++)
        putchar(*(a+i)+48);
*/

    unsigned char d = b>>31;//符号
    unsigned int e = (b<<1)>>24;//指数
    unsigned int f = (b<<9)>>9;//尾数
return 0;
}
参照我给你连接 自己转换!

2010-09-11 16:48
m1c2f4843
Rank: 1
等 级:新手上路
帖 子:27
专家分:4
注 册:2010-7-30
得分:0 
我自己也写了个但老出错
#include<stdio.h>

void print_d(int n)        用输出一个整数
{
 int a;

 if(n < 0)
 {
  putchar('-');
  n = -n;
 }
 if(a = n / 10)
  print_d(a);
 putchar(n % 10 + '0');
}

void print_f(float f)    用gechar输出一个浮点数  要调用上面函数
{
 int n, i = 1;

 float t;
 if(f < 0)
 {
  putchar('-');
  f = -f;
 }
 
 n = (int)f;
 print_d(n);
 putchar('.');
 t = (f - n);
 while(i ++ < 7)     主要是这个部分出错
 {
  t = t * 10;
  n = (int)t;
  print_d(n);
  t = t - (int)n;
 }
}
main()
{
 float f = 4.2341;
 print_f(f);
 putchar('\n');
 printf("%f", f);              结果应该是4.2341但老是输出4.234099 不知道是上面原因 高手看看
}

是在vc6.0调试的
2010-09-11 16:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-320136-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.638902 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved