int main()
{
int a,c;
int b[100];
int i;
while (/*rewind(stdin), */scanf("%d", &a) != EOF) {
if (1 == a) {
printf("1\n");
}
else {
for (i = 0; a = 1;i++) {
c = a % 2;
b[i] = c; //0x00D219C7 处(位于 4.进制转换.exe 中)引发的异常: 0xC0000005: 写入位置 0x00500000 时发生访问冲突。
a /= 2;
}
b[i] = 1;
printf("%d", b[i]);
printf("\n");
}
}
}
for (i = 0; a = 1;i++) a=1; 是赋值语句,这里本应该是判断语句,这样就死循环了。看代码的功能,这句应改为:for (i = 0; a != 0;i++) ,整体修改如下,供参考:
#include<stdio.h>
int main()
{
int a,c;
int b[100];
int i;
while (/*rewind(stdin), */scanf("%d", &a) != EOF) {
if (1 == a) {
printf("1\n");
}
else {
for (i = 0; a != 0;i++) {
c = a % 2;
b[i] = c;
a /= 2;
}
while(i--){ //输出二进制数
//b[i] = 1;
printf("%d", b[i]);
}
printf("\n");
}
}
}
因这数组溢出了。你的循环输入,最终会超出数组长度。你的for不会结束,没有结束条件