当前位置: 代码迷 >> C语言 >> [求助]十六进制转换有点问题
  详细解决方案

[求助]十六进制转换有点问题

热度:390   发布时间:2006-09-07 20:41:19.0
[求助]十六进制转换有点问题

#include "stdio.h"
#include "stdlib.h"

void shitoer(int k)
{
int i=0;
int a[10];
do{
a[i]=k%2;
k/=2;
i++;
}while(k);
printf("转换为二进制整数:");
i--;
for(;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n");
}

void shitoba(int k)
{
int i=0;
int a[10];
do{
a[i]=k%8;
k/=8;
i++;
}while(k);
printf("转换为八进制整数:\n");
i--;
for(;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n");

}

void shitoshiliu(int k)
{
int i=0,j;
char a[10];
while(k!=0){
a[i]=k%16;
k/=16;
switch(a[i])
{
case 10 :
a[i]='A';
break;
case 11 :
a[i]='B';
break;
case 12 :
a[i]='C';
break;
case 13 :
a[i]='D';
break;
case 14 :
a[i]='E';
break;
case 15 :
a[i]='F';
break;
default:
a[i]+=95;
break;
}

i++;
}
printf("转换为16进制整数:\n");

for(j=i-1;j>=0;j--)
{
printf("%c",a[i]);
}
printf("\n");

}

void main()
{
int i,num;
printf("0.退出 1.十进制~二进制 2.十进制~八进制 3.十进制~十六进制\n");
printf("请选择功能:\n");
scanf("%d",&i);
fflush(stdin);
if(i==0)
exit(0);
printf("请输入一个十进制数:\n");
scanf("%d",&num);
switch(i)
{
case 0: exit(0);
case 1: shitoer(num);break;
case 2: shitoba(num);break;
case 3: shitoshiliu(num);break;
default: printf("输入错误!");

}
}
看看怎么改一下啊?

搜索更多相关的解决方案: 十六进制  

----------------解决方案--------------------------------------------------------
以下是引用honkerman在2006-9-7 20:41:19的发言:

#include "stdio.h"
#include "stdlib.h"

void shitoer(int k)
{
int i=0;
int a[10];
do{
a[i]=k%2;
k/=2;
i++;
}while(k);
printf("转换为二进制整数:");
i--;
for(;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n");
}

void shitoba(int k)
{
int i=0;
int a[10];
do{
a[i]=k%8;
k/=8;
i++;
}while(k);
printf("转换为八进制整数:\n");
i--;
for(;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n");

}

void shitoshiliu(int k)
{
int i=0,j;
char a[10];
while(k!=0){
a[i]=k%16;
k/=16;
switch(a[i])
{
case 10 :
a[i]='A';
break;
case 11 :
a[i]='B';
break;
case 12 :
a[i]='C';
break;
case 13 :
a[i]='D';
break;
case 14 :
a[i]='E';
break;
case 15 :
a[i]='F';
break;
default:
a[i]+=48;
break;
}

i++;
}
printf("转换为16进制整数:\n");

for(j=i-1;j>=0;j--)
{
printf("%c",a[j]);
}
printf("\n");

}

void main()
{
int i,num;
printf("0.退出 1.十进制~二进制 2.十进制~八进制 3.十进制~十六进制\n");
printf("请选择功能:\n");
scanf("%d",&i);
fflush(stdin);
if(i==0)
exit(0);
printf("请输入一个十进制数:\n");
scanf("%d",&num);
switch(i)
{
case 0: exit(0);
case 1: shitoer(num);break;
case 2: shitoba(num);break;
case 3: shitoshiliu(num);break;
default: printf("输入错误!");

}
}
看看怎么改一下啊?


----------------解决方案--------------------------------------------------------
OK了。谢谢哦
----------------解决方案--------------------------------------------------------


#include<stdio.h>
#define MAXSIZE 100

typedef struct
{
int a[MAXSIZE];
int top ;
}sequence_stack ;


void init_seqstack(sequence_stack*st)
{
st->top=0 ;
}

void printseqstack(sequence_stack*st,int m)
{
int i ;

i=st->top-1 ;
while(i>=0)
{
/*十进制转换为十六进制*/
if(m==16)
{
switch(st->a[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 ;
case 9 :
case 8 :
case 7 :
case 6 :
case 5 :
case 4 :
case 3 :
case 2 :
case 1 :
case 0 :
printf("%d",st->a[i]);
break ;
}
}
else
{
printf("%d",st->a[i]);
}
i--;
}
}

/*堆栈存放各个数*/
void jzhzhh(sequence_stack *st,int n,int m)
{
int i=0 ;

while(n!=0)
{
st->a[i]=n%m ;
n=n/m ;
st->top++;
i++;
}
}

int main()
{
int n,m ;
sequence_stack p ;

printf("十进制数n=");
scanf("%d",&n);
printf("进制m=");
scanf("%d",&m);
init_seqstack(&p);
jzhzhh(&p,n,m);
printseqstack(&p,m);
printf("\n");
return(0);
}

/*十进制数转其他进制数*/



----------------解决方案--------------------------------------------------------

/*我在ww84020209修改的基础上加了点语句,楼主看看是否满意*/


#include "stdio.h"
#include "stdlib.h"

void shitoer(int k)
{
int i=0 ;
int a[10];
do
{
a[i]=k%2 ;
k/=2 ;
i++;
}
while(k);
printf("转换为二进制整数:");
i--;
for(;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n");
}

void shitoba(int k)
{
int i=0 ;
int a[10];
do
{
a[i]=k%8 ;
k/=8 ;
i++;
}
while(k);
printf("转换为八进制整数:");
i--;
for(;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n");

}

void shitoshiliu(int k)
{
int i=0,j ;
char a[10];
while(k!=0)
{
a[i]=k%16 ;
k/=16 ;
switch(a[i])
{
case 10 :
a[i]='A' ;
break ;
case 11 :
a[i]='B' ;
break ;
case 12 :
a[i]='C' ;
break ;
case 13 :
a[i]='D' ;
break ;
case 14 :
a[i]='E' ;
break ;
case 15 :
a[i]='F' ;
break ;
default :
a[i]+=48 ;
break ;
}

i++;
}
printf("转换为16进制整数:");

for(j=i-1;j>=0;j--)
{
printf("%c",a[j]);
}
printf("\n");

}

int main()
{
int i,num ;
printf("0.退出 1.十进制~二进制 2.十进制~八进制 3.十进制~十六进制\n");
printf("\n请选择功能:");
while(scanf("%d",&i))
{
fflush(stdin);
if(i==0)
exit(0);
printf("\n请输入一个十进制数:");
scanf("%d",&num);
switch(i)
{
case 0 :
exit(0);
case 1 :
shitoer(num);
break ;
case 2 :
shitoba(num);
break ;
case 3 :
shitoshiliu(num);
break ;
default :
printf("输入错误!");

}
printf("\n请选择功能:");
}
return(0);
}


----------------解决方案--------------------------------------------------------
谢谢啦,斑竹,顶你一下,HOHO
----------------解决方案--------------------------------------------------------
  相关解决方案