Code Bye

为什么出现了乱码

#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的格式输出了数字?
解决方案

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

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么出现了乱码