修改如下,供参考:
其实用不着像你那么做,你可以看一下这个,应该没问题。
#include <stdio.h>
void DecToBin(int n, char s[]){
int i = 0;
while(n > 0){
if (n % 2 == 1){
s[i] = 1;
i++;
} else {
s[i] = 0;
i++;
}
n /= 2;
}
for (int j = i - 1; j >= 0; j--) printf("%d", s[j]);
}
int main(){
int n;
char s[35];
scanf("%d", &n);
DecToBin(n, s);
return 0;
}
t = b[j];
b[j] = b[i-j-1];
b[i-j-1] = t;
你代码的交换逻辑有些问题,我的实现逻辑如下:
#include <stdio.h>
void DecToBin(int n,char b[])
{
char tmp[64] = { 0 };
int a, i = 0, j = 0;
while (n > 0)
{
a = n % 2;
tmp[i++] = a + '0';
n /= 2;
}
while (i > 0)
{
b[j++] = tmp[--i];//二进制是余数的逆序
}
b[j] = '\0';//以'\0'结束
}
int main()
{
char bin[64] = { 0 };
int n;
scanf_s("%d", &n);
DecToBin(n, bin);
printf("%s\n", bin);
getchar();
getchar();
return 0;
}
如果对您有用,望采纳。