自学C语言十进制转二进制出不来,咋改呢,

#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;
}