#include <stdio.h>
int main()
{
int n,a[100],i=0;
printf("输入十进制数:");
scanf("%d",&n);
printf("八进制为:%o\n",n);
printf("十六进制为:%x\n",n);
while(n!=0)
{
a[i]=n%2;
n=n/2;
}
printf("二进制为:");
for(i-=1;i>=0;i--)
printf("%d",a[i]);
printf("\n");
return 0;
}
#include <stdio.h>
int main()
{
int n,a[100],i=0;
printf("输入十进制数:");
scanf("%d",&n);
printf("八进制为:%o\n",n);
printf("十六进制为:%x\n",n);
while(n!=0)
{
a[i]=n%2;
n=n/2;
i++; //这里要加上
}
printf("二进制为:");
for(i-=1;i>=0;i--)
printf("%d",a[i]);
printf("\n");
return 0;
}
没有对下标进行循环,正确的代码如下:
#include <stdio.h>
int main()
{
int n, a[100], i = 0;
printf("输入十进制数:");
scanf("%d", &n);
printf("八进制为:%o\n", n);
printf("十六进制为:%x\n", n);
while (n != 0)
{
a[i] = n % 2;
i++; //对下标进行自增,循环下一个数据
n = n / 2;
}
printf("二进制为:");
for (i -= 1; i >= 0; i--)
printf("%d", a[i]);
printf("\n");
system("pause");
return 0;
}