求助
#include<stdio.h>#include<math.h>
int main()
{
int a,b,c,i;
printf("输入十进制数字:");
scanf("%d",&a);
for (i=0;a>=pow(2,i);i++)
{}
c=i-1;
char j;
for(b=0;c>=0;b++,c--)
{
if(a>=pow(2,c))
{
a=a-pow(2,c);
j='1';
}
else
{
j='0';
}
}
printf("二进制是:%s\n",j);
return 0;
}
求助 为何结果后面会有乱码
是因为 i 的值太小吗 疑惑中 我用你的代码输出是正常的,很奇怪
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,i;
printf("输入十进制数字:");
scanf("%d",&a);
for (i=0;a>=pow(2,i);i++)
{}
c=i-1;
char j;
for(b=0;c>=0;b++,c--)
{
if(a>=pow(2,c))
{
a=a-pow(2,c);
j='1';
}
else
{
j='0';
}
}
j = '\0'; // 加上这一句试试看
printf("二进制是:%s\n",j);
return 0;
} 巴巴鲁 发表于 2020-10-5 12:08
我用你的代码输出是正常的,很奇怪
加上那句确实正常了但有点疑惑就j='\0' 后不是超出字符的定义范围了吗
比如 输入6i就是3循环结束b也是3那就是char a第四位是\0
是不是得改成char a;
但char a为什么会一样呢? 202272390 发表于 2020-10-5 13:10
加上那句确实正常了但有点疑惑就j='\0' 后不是超出字符的定义范围了吗
比如 输入6i就是3循环 ...
这就不清楚了,
不过你不要说我还真没注意到越界了,用吧
页:
[1]