#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”; 转化有问题