c语言程序输出是几进制,(难题)用C语言编写输入一个整数,输出二进制数,八进制数,十六进制数...

不才写了个小程序,欢迎大家批评

21c92f7342edc52acb5684b0b88bdcec.png程序代码:/*-----------------------------------------------------------------------------

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

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

这里输入的数据类型定为 float ,结束转换用CTRL+Z,希望不用很长时间就

可以写出超出100位的大数的转换。

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

程序作完了之后,简单测试了下,感觉应该是没有错误。欢迎各位朋友测试,

并指出错误之处。谢谢大家。

学习学习再学习。

----------------------------------------------------------------------------*/

#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;

}

[[it] 本帖最后由 广陵绝唱 于 2008-11-29 02:05 编辑 [/it]]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值