求助!C语言用指针函数实现十进制转,十六进制,八进制,二进制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助!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]);
#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--;
参考技术A #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];
参考技术B 整型常量
整型常量有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语言中的二进制十进制八进制十六进制都是怎么转化的?
参考技术A /**程序功能:求二进制,十进制,八进制
创建人:蒲宇林
创建日期:2007年8月13日
**/
#include
<stdio.h>
void
two();
void
eight();
void
sixteen();
/**主函数**/
void
main()
int
select;
do
printf("0
-
退出,1
-
十进制转二进制,2
-
十进制转八进制,3
-
十进制转十六进制");
scanf("%d",&select);
switch(select)
case
1
:
two();
break;
//十进制转二进制
case
2
:
eight();
break;
//十进制转八进制
case
3
:
sixteen();
break;
//十进制转十六进制
default
:
printf("您的输入有误,请重新输入!");
break;
if(select
==
0)
break;
while(1);
void
two()
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为二进制并存入数组
arr[i]
=
num
%
2;
num
=
num
/
2;
if(num
==
0)
break;
printf("转换为二进制:");
//打印
for(;
i
>=
0
;
i--
)
printf("%d",arr[i]);
printf("\n");
void
eight()
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为八进制并存入数组
arr[i]
=
num
%
8;
num
=
num
/
8;
if(num
==
0)
break;
printf("转换为八进制:");
//打印
for(;
i
>=
0
;
i--
)
printf("%d",arr[i]);
printf("\n");
void
sixteen()
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为二进制并存入数组
arr[i]
=
num
%
16;
num
=
num
/
16;
if(num
==
0)
break;
printf("转换为十六进制:");
//打印
for(;
i
>=
0
;
i--
)
switch(arr[i])
case
10
:
printf("A");
break;
case
11
:
printf("B");
break;
case
12
:
printf("C");
break;
case
13
:
printf("D");
break;
case
14
:
printf("E");
break;
case
15
:
printf("F");
break;
default
:
printf("%d",arr[i]);
printf("\n");
以上是关于求助!C语言用指针函数实现十进制转,十六进制,八进制,二进制的主要内容,如果未能解决你的问题,请参考以下文章