#include<stdio.h>
void main()
{
int a,k=0;
scanf(“%d”,&a);
int t=a;
while(a!=0)
{
a=a/16;
k++;
}
int b[100];
for(int i=0;i<k;i++)
{
b[i]=t%16;
t=t/16;
}
char c[100];
for(i=0;i<k;i++)
{if(b[i]>=0&&b[i]<=9) c[k-1-i]=b[i]-“0″;
else c[k-1-i]=b[i]-10+”A”;
}
c[k]=”\0″;
printf(“%s”,c);
}输出有乱码,个人感觉是原因是用char的格式输出了数字?
void main()
{
int a,k=0;
scanf(“%d”,&a);
int t=a;
while(a!=0)
{
a=a/16;
k++;
}
int b[100];
for(int i=0;i<k;i++)
{
b[i]=t%16;
t=t/16;
}
char c[100];
for(i=0;i<k;i++)
{if(b[i]>=0&&b[i]<=9) c[k-1-i]=b[i]-“0″;
else c[k-1-i]=b[i]-10+”A”;
}
c[k]=”\0″;
printf(“%s”,c);
}输出有乱码,个人感觉是原因是用char的格式输出了数字?
解决方案
50
题主把这两句想清楚:c[k-1-i]=b[i]-“0″; c[k-1-i]=b[i]-10+”A”;
要把整数数字转换为对应字符数字,应该是用+
下面是帮你改的:
要把整数数字转换为对应字符数字,应该是用+
下面是帮你改的:
#include<stdio.h>
void main()
{
int a,k=0;
scanf("%d",&a);
int t=a;
while(a!=0)
{
a=a/16;
k++;
}
int b[100];
for(int i=0;i<k;i++)
{
b[i]=t%16;
t=t/16;
}
char c[100];
for(int i=0;i<k;i++)
{
if(b[i]>=0&&b[i]<=9)
c[k-1-i]=b[i]+"0";
else
c[k-1-i]=b[i]+10+"0";
}
c[k]="\0";
printf("%s",c);
}
15
if(b[i]>=0&&b[i]<=9) c[k-1-i]=b[i]-“0”; 转化有问题