| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 16542 人关注过本帖, 1 人收藏
标题:(难题)用C语言编写输入一个整数,输出二进制数,八进制数,十六进制数
只看楼主 加入收藏
hanheming
Rank: 1
来 自:秦皇岛卢龙
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-10-31
收藏(1)
 问题点数:0 回复次数:7 
(难题)用C语言编写输入一个整数,输出二进制数,八进制数,十六进制数
#clintude<stdio.h>
void main()
{clrscr()
int a;
printf("input a number:\n");
scanf("%d",&a),
do
{if(a%2==0)printf("0");
     else  a=a/2;
           printf("1");
}while(a==0);
}
这个程序可以运行可是得数是错的
输入个78    得出了个01
输入个23    得出了个1
希望大家补正
搜索更多相关主题的帖子: 二进制 
2008-11-26 00:00
siukimfong
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-11-26
收藏
得分:0 
可以直接使用stdlib.h里面的 itoa(); ltoa();函数

#include <stdlib.h>
#include <stdio.h>
int main()
{
    long number=12345;
    char string[25];
    itoa(number,string,2/*这里是进位制,可以是任意的,2就是二进制了*/);
    printf("integer=%d string=%s",number,string);
    return 0;
}
2008-11-26 09:47
hanheming
Rank: 1
来 自:秦皇岛卢龙
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-10-31
收藏
得分:0 
我试了还是不行,主要是我还没学关于itoa的指令
2008-11-26 13:17
gengjf025
Rank: 2
等 级:论坛游民
帖 子:9
专家分:20
注 册:2008-11-22
收藏
得分:0 
printf("十六进制:%x",a);
printf("\n");
printf("八进制:%o",a);
printf("\n");
二进制用itoa是绝对可以的,注意头文件就可以了
2008-11-26 14:19
hsxyhq
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-11-3
收藏
得分:0 
#include<stdio.h>
void main()
{
    int d;
    int i=0;
    int buffer[100];
    printf("请输入一个十进制数 d:\n");
    scanf("%d",&d);
    do{
        buffer[i++]=d%2;
        d/=2;
    }while(d);
    for(i-=1;i>=0;i--)
        printf("%d",buffer[i]);
}
2008-11-27 23:41
nianshi
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-7
收藏
得分:0 
用C程序实现,今天刚写的,发在了这个论坛上:

http://cn-ncre.

行至水穷处 坐看去起时
C语言QQ群1:51871776  群2:26313099  群3:47145282
2008-11-28 15:22
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
应该是float 或者是 double 型的,那样难度会大一些。
2008-11-28 22:06
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
不才写了个小程序,欢迎大家批评
程序代码:
/*-----------------------------------------------------------------------------

        用C语言编写输入一个整数,输出二进制数,八进制数,十六进制数.

============================================================================

        这里输入的数据类型定为 float ,结束转换用CTRL+Z,希望不用很长时间就
        可以写出超出100位的大数的转换。

============================================================================
        程序作完了之后,简单测试了下,感觉应该是没有错误。欢迎各位朋友测试,
    并指出错误之处。谢谢大家。

        学习学习再学习。

----------------------------------------------------------------------------*/
#include<stdio.h>
#define N 20
char *s="0123456789abcde"; /* 定义个字符串指针,用于输出 */
int INT[N];  /* 用于存放转换后的数据 */
void SWITCH(float a,int d)  /* 转换的函数 */
{
    int _int;
    int i=0,j;
    _int=a; /* 把小数部分去掉 */
    while(_int)
    {
        INT[i]=_int%d;/*存放数据,把该数值模以进制,其结果就是转换后的数值*/
        i++;
        _int/=d; /* 把该数值除以进制,得出整数部分,如果不为零,继续转换*/
    }
    for(j=i;j>=0;--j)
        printf("%c",*(s+INT[j])); /* 输出转换后的整数部分 */
    if(a-(int)a>0.0) /* 如果这个数值有小数部分,就进行下面的程序*/
    {
        i=0; /* 下标赋初值 */
        a-=(int)a; /* 得出小数部分 */
        while(a!=0.0)
        {
            INT[i]=(int)(a*d); /* 存入数据,该数值乘以进制,其整数部分就是转换后的数值*/
            a=(a*d)-(int)(a*d);/* 把整数部分去除,如果不为零,继续转换 */
            i++;
        }
        printf("."); /* 输出小数点 */
        for(j=0;j<i;++j)
            printf("%c",*(s+INT[j])); /* 输出小数部分 */
    }
    printf("\n");
}
int main(void)
{
    int n;
    float a;
    printf("input n a:\n");
    while((scanf("%d %f",&n,&a))!=EOF) /* 输入数值,第一个输入进制,第二个输入数值 */
        SWITCH(a,n); /* 当输入不为EOF时,进行转换 */
    return 0;
}



[[it] 本帖最后由 广陵绝唱 于 2008-11-29 02:05 编辑 [/it]]
2008-11-29 02:04
快速回复:(难题)用C语言编写输入一个整数,输出二进制数,八进制数,十六进制 ...
数据加载中...
 
   



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

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