这是代码块中的简单C代码。在这段代码中,我想将奇数从1到100分配给大小为50的数组,然后将它们打印得很好,但是最后一个元素,即,奇数[49]而不是分配99,它给了49个通过我的代码的人,找到错误。谢谢。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, k;
int odd[49];
for(i=1; i<100; i++)
{
if(i%2 == 0)
continue;
else
odd[(i-1)/2]=i;
}
for(k=0; k<50; k++)
printf("(%d)%d\n", k, odd[k]);
return 0;
}
答案 0 :(得分:2)
正如其他人已经指出的那样,您只能在数组中为49个整数保留空间。
除了修复该错误外,您还应该使用2*i + 1
来计算奇数来简化代码。您只需要:
#include <stdio.h>
int main()
{
int i;
int odd[50]; // 50 instead of 49
for(i=0;i<50;i++) // Start from 0
odd[i]=2*i+1; // then 2*i+1 will give you 1 3 5 7 ...
for(i=0;i<50;i++)
printf("(%d)%d\n",i,odd[i]);
return 0;
}
答案 1 :(得分:0)
int odd[49];
应该仅包含49
个元素,而您需要50
。
访问应该保存50
个元素的数组的第49
个元素是UB
。你什么都有。
答案 2 :(得分:0)
您的数组仅包含49个值。将其转换为
intod [50]
存储50个值。