Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1021727
  • 博文数量: 297
  • 博客积分: 11721
  • 博客等级: 上将
  • 技术积分: 3431
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-25 10:21
文章分类

全部博文(297)

文章存档

2016年(9)

2011年(71)

2010年(137)

2009年(80)

分类: LINUX

2010-03-23 22:18:17

#include
#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             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;
}
阅读(1947) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~