关于进制转换

HATHAT 2001-08-02 04:12:40
十进制转换为二进制、八进制、十六进制。

我编写了一下请大家看看.

大家可以看到转换二进制和八进制时用了一种方法,转换十六进制时用了另一种.其实我愿

意用第一种可是不好实现.大家有什么好的方法讨论一下.谢谢!


#include<stdio.h>
#include<math.h>
main()
{
int s, n, m, b, y;
long e, x;

e=b=0;
x=1;
printf ("10\t\t2\t\t8\t\t16\n");
for (s=1; s<=20; s++) {
printf ("%d\t\t", s);
n=s;
while (n>=1) {
m=n%2;
n=n/2;
e+=m*x;
x*=10;
}
printf ("%ld\t\t", e);
x=1;
n=s;
while (n>=1) {
m=n%8;
n=n/8;
b*=m*x;
x*=10;
}
printf ("%d\t\t",b);
n=s;
m=3;
while (m>=0) {
y=pow (16, m);
if (n==0)
printf ("%d", n);
if (n>=y) {
x=n/y;
if (x<10&&x>=0)
printf ("%d', x);
if (x<16&&x>9)
printf ("%c", x+55);
n=n%y;
}
m--;
}
printf ("\n");
x=1;
n=s;
e=b=0;
}
return 0;
}

...全文
129 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
HATHAT 2001-08-08
  • 打赏
  • 举报
回复
TO:FLYINGKNIGHT
itoa()是什么函数? 该怎么实现呢? 能写一下吗?
cmos 2001-08-08
  • 打赏
  • 举报
回复
itoa



原型:extern char *itoa(int i);

用法:#include <stdlib.h>

功能:把整数i转换成字符串

说明:返回指向转换后的字符串的指针

举例:

// itoa.c

#include <syslib.h>
#include <stdlib.h>

main()
{
int i=7412;

clrscr(); // clear screen
textmode(0x00);

printf("%d",i);
printf("%s",itoa(i));

getchar();
return 0;
}

相关函数:无



flyingknight 2001-08-07
  • 打赏
  • 举报
回复
何必这样呢?用
itoa()就可以了,至于进制可以通过参数调整嘛
yug 2001-08-02
  • 打赏
  • 举报
回复
convert(i);等价于 printf("%x",i);
lifanxi 2001-08-02
  • 打赏
  • 举报
回复
嘿嘿,不要光谢不给分呀。
HATHAT 2001-08-02
  • 打赏
  • 举报
回复
谢谢.
lifanxi 2001-08-02
  • 打赏
  • 举报
回复
void convert(int i)
{
int m=i % 16;
i=i/16;
if (i!=0) convert(i);
if (m<10 ) printf("%d",m);
if (m>=10) printf("%c",m+'A'-10);

}

int main(int argc, char* argv[])
{
convert(65535); //这里的65535就是要转换的十进制数。
return 0;
}
这个就是16进制传换的程序。
写的比较乱,你可以自已优化一下。
lifanxi 2001-08-02
  • 打赏
  • 举报
回复
lifanxi@263.net
HATHAT 2001-08-02
  • 打赏
  • 举报
回复
十六进制要打印A B C D E F
该怎么实现?
你有信箱吗我有问题找你.
lifanxi 2001-08-02
  • 打赏
  • 举报
回复
其它进制的转换可以参考模仿出来。
lifanxi 2001-08-02
  • 打赏
  • 举报
回复
void convert(int i)
{
int m=i % 2;
i=i/2;
if (i!=0) convert(i);
printf("%d",m);

}

int main(int argc, char* argv[])
{
convert(20); //这里的20就是要转换的十进制数。
return 0;
}
这个程序可以把十进制数转为二进制。
HATHAT 2001-08-02
  • 打赏
  • 举报
回复
能写出来吗?
lifanxi 2001-08-02
  • 打赏
  • 举报
回复
我认为最简洁的方法是用递归算法做这样的进制转换。

69,371

社区成员

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

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