HW2_1_JM.exe中0x0F29F365(msvcr120d.dll)的未处理异常: 0xC0000005:访问冲突读取位置0xFFFFFFFF。“
这是我的第一篇文章,这是我在尝试运行此程序时始终遇到的错误。我是编程新手,所以我很抱歉我的代码质量。当它没有抛出这个错误时,它只是暂时无休止地暂停。我们认为错误是int d
,因为当我们尝试同时打印n
和d
时,我们会在打印n
后再次收到错误消息。
int main()
{
int a[10];
puts("Please input a value: \n");
int n;
scanf("%i", &n);
printf("\n you chose: %i\n", n);
puts("Please input a base value, between 1 and 11: \n");
int d;
scanf("%i", &d);
while (!(n = -1));
{
int q = n;
int k = 0;
printf(q);
while (q != 0);
{
a[k] = (q % d);
q = q / d;
printf(q);
k++;
}
for (int j = 0; j < 11; j++)
{
printf("Element [%d] = %d \n", j, a[j]);
}
puts("Please input a value: \n");
scanf("%i", &n);
printf("\n you chose: %i\n", n);
puts("Please input a base value, between 1 and 11: \n");
scanf("%i", &d);
}
system("pause");
return 0;
}
答案 0 :(得分:1)
while (!(n = -1));
您可以在此删除分号,否则以下{}
不会成为while循环的一部分。
while (!(n = -1));
n = -1
是一项分配而不是比较,它总是会被评估为true
,您可能需要n == -1
。
for (int j = 0; j < 11; j++)
您已离开阵列的范围,该范围应为[0; 10)。我想你想要j < 10
。
可能还有其他问题。您应该尝试使用调试器来查找实际错误。
答案 1 :(得分:1)
printf的签名是
int printf ( const char * format, ... );
您的来电printf(q)
,其中q是int
答案 2 :(得分:0)
你有一个10项数组,但尝试阅读11个元素(0到10)。将你的循环改为:
for (int j = 0; j < 10; j++)
{
printf("Element [%d] = %d \n", j, a[j]);
}
另外,这是错误的:
while (!(n = -1));
{
当您想要进行比较时,您正在执行任务。你错了;
。你的代码应该是
while (n != -1)
{