问题是二进制转十进制、十六进制,但是我写完上传后一直说部分正确,我同学说应该是溢出问题,但他也不太明白,应该改哪里?
#include <stdio.h>
#include <string.h>
void f(int x,char *p)
{
double div;
int k=0;
if (x==0)
{
*p='0';
}
if (x<0)
{
x=-x;
*p='-';
p++;
}
for (int i=0;x!=0;i++)
{
div = x % 16;
x = x / 16;
if ((div-10) < 0)
*(p+i) = div + '0';
else *(p+i)='A'+div-10;
div=0;
k++;
}
for(int i=0;i<k/2;i++)
{
char temp=p[i];
p[i]=p[k-1-i];
p[k-1-i]=temp;
}
}
int main()
{
int b[10];
double c=0;
int a,i=0;
char x[10] = "";
scanf("%d",&a);
while(a!=0)
{
b[i]=a%10;
a/=10;
i++;
}
i--;
for(;i>=0;i--)
c=c*2+b[i];
printf("%.0f\n",c);
f(c,x);
printf("0x%s",x);
}