求助!C语言用指针函数实现十进制转,十六进制,八进制,二进制

RT
C语言用指针函数怎么实现十进制转,十六进制,八进制,二进制
自己写的一段,但出错!
望指导!
本人新手!

#include<stdio.h>
#include<string.h>
void trans_to_hex(char *p, int m)
{
int r;
for(;m!=0;p++)
{
r=m%16;
if(r<10)
*p=r+48;
else *p=r+55;
m=m/16;
}
*p='\0';
}

void trans_to_octal(char *p, int m)
{
int r;
for(;m!=0;p++)
{
r=m%8;
*p=r+48;
m=m/8;
}
*p='\0';
}

void trans_to_binary(char *p, int m)
{
int r;
for(;m!=0;p++)
{
r=m%2;
*p=r+48;
m=m/2;
}
*p='\0';
}
void main()
{
int i, n;
char a[5];
printf("请输入一个十进制整数(位数不超过5位): ");
scanf("%d",&n);
trans_to_hex(a,n);
for(i=strlen(a)-1;i>=0;i++)
putchar(a[i]);
trans_to_octal(a,n);
for(i=strlen(a)-1;i>=0;i++)
putchar(a[i]);
trans_to_binary(a,n);
for(i=strlen(a)-1;i>=0;i++)
putchar(a[i]);
}

#include"stdio.h"
#define MAX 100
typedef struct s
{
int yushu[MAX];
int top;
}SqStack;

SqStack *s;
int n,jinzhi,m;
void transform();
void output(SqStack *s);
int main()
{
printf("计算机0904 16号 林夏飞\n****************\n");
s=(SqStack*)malloc(sizeof(SqStack));
s->top = -1;

printf("输入要转换的十进制数和要转成的进制: ");
scanf("%d %d",&n,&jinzhi);
transform(n,jinzhi,s);
output(s);
getch();
return 0;
}

void transform(int n, int m,SqStack *s)
{

while(n)
{
s->yushu[++s->top]=n%m;
n/=m;
}
}
void output(SqStack *s)
{
printf("%d的%d进制形式是: ",n,jinzhi);
if(s->top==-1)
printf("0");
else
while(s->top!=-1)
{
printf("%d",s->yushu[s->top]);
s->top--;
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-09
#include <iostream.h>

int result[100]={0};
int index=0;

void zhuan(int n,int jin)
{
while(n>0)
{
result[index++]=n%jin;
n=n/jin;
}
}

void main()
{
zhuan(10,2);
for(int i=index-1;i>=0;i--)
cout<<result[i];
}本回答被网友采纳
第2个回答  2010-12-10
整型常量
整型常量有3种表示方式:
①十进制整数。例如,123、一456、0。
②八进制整数。以0开头的整数是八进制数。例如,0123表示8进制数123<8),等于十进制数83。
③十六进制整数。以ox或0x开头的整数是十六进制数。例如,0x1.23或0Xl 23表示十六进制数123…),等于十进制数291。
如果在整型常量后面加上字母u或u,则表示无符号整数(unsigned int)。例如,123U或123u是unsigned int型的。如果在整型常量后面加上一个字母L或l,则表示长整数(10ngint)。例如,123[.或123l是long int型的。
你的串号我已经记下,采纳后我会帮你制作

求助!C语言用指针函数实现十进制转,十六进制,八进制,二进制
int yushu[MAX];int top;}SqStack;SqStack *s;int n,jinzhi,m;void transform();void output(SqStack *s);int main(){ printf("计算机0904 16号 林夏飞\\n***\\n");s=(SqStack*)malloc(sizeof(SqStack));s->top = -1;printf("输入要转换的十进制数和要转成的进制: ");scanf("...

C语言中关于八进制和十进制转换问题
while(*(++p)!='\\0')n=n*8+*p-'0';\/\/修改这里,p是指针要用指针里的内容跟'\\0'做比较 printf("%d \\n",n);}

用C语言把十进制转换为8进制,最好用栈结构
} int main(){int x;scanf("%d",&x); \/\/读入要转换的十进制数x dec2oct(x); \/\/将 x 转换为8进制数输出 return 0;}

C语言 用数组将十进制数转换成八进制数,不用函数和指针,输出的八进制...
include <stdio.h>int main(){ int a[50]; int n,i=0; scanf("%d",&n); while(n) { a[i++] = n%8; n\/=8; } while(--i>=0) { printf("%d ", a[i]); } return 0;} ...

C++中十进制如何转换为八进制和十六进制
1、十进制转换成八进制有两种方法:(1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制。(2)直接法:八进制是由二进制衍生而来的,因此可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下:①整数部分 方法:除8取余法,即每次将...

用C语言直接输出内存中数据(二进制或十六进制)
内存中的数据显然是以二进制形式存放的。C语言用格式符控制输出内容的进制及格式,例如%d是十进制格式,%o是八进制格式,%x是十六进制格式,但唯独没有二进制的输入输出格式符。因此也就无法将内存单元中的二进制代码原样输出出来。p格式符用来输出变量在内存中的地址是个十六进制数。想用%p输出变量i的...

c语言用栈实现八进制转十进制,完整程序,求解
这个链栈应该就是一个用链表弄的后进先出的栈结构。top指针永远指向栈的最上面的那个节点。这个函数是新加一个节点到这个栈中,首先分配了空间给s,s是要新加入这个栈的那个节点。s->next=top;就是让s指向栈的最上面的那个元素。top=s;因为现在最上面的节点是s了,所以让top指向s,使s成为栈顶...

C语言里itoa函数的功能是什么?
在C语言中,itoa函数扮演着至关重要的角色,它负责将整数数据转换为字符型字符串形式。其基本用法如下:itoa(i, num, 10);这里的是需要进行转换的整数,则是存储转换结果的字符数组变量,而表示转换的基数,即进制,常见的如十进制(10)、二进制(2)、八进制(8)和十六进制(16)。函数执行后,...

...将字符型的数字转换为十进制或八进制或十六进制的数???反过来呢...
C语言有转换说明符 转换说明符 a(%A)浮点数、十六进制数字和p-(P-)记数法(C99)c 字符 d 有符号十进制整数 f 浮点数(包括float和doulbe)e(%E)浮点数指数输出[e-(E-)记数法]g(%G)浮点数不显无意义的零"0"i 有符号十进制整数(与%d相同)u 无符号十进制整数 o 八进制整数 e.g.0123 x...

C语言如何定义一个16进制数
int main(){ int a;scanf("%p",&a);\/\/16进制数输入%p是输入一个十六进制的数scanf("%llx",&a);也可以输入十六进制并且比较正规 printf("%d",a);\/\/十进制输出%d是输出一个十进制的数 printf("0x%x",a);\/\/16进制输出printf("%llX\\n",a);也可输出一个十六进制数如果红色部分大写X则输出...

相似回答