将赔率分配给大小为50的数组

时间:2018-08-09 06:29:20

标签: c

这是代码块中的简单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;
}

3 个答案:

答案 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个值。