将数字加到C中的数组中

时间:2016-05-04 22:44:48

标签: c arrays

我尝试做一个函数,以便对数组进行排序,然后只显示素数。但我的数组的所有元素都是随机数,问题是函数只显示负素数而不是像7和3那样正数,我该怎么做才能解决问题

int prime_arr(int size, int *arr, int *sort_arr)
{
    int i, j, k = 0, flag;
    for (i = 0; i < size; i++)
    {
        flag = 0;
        for (j = 2; j < arr[i]/2; j++)
        {
            if (arr[i] % j == 0){
                flag = 1;
                break;
            }
        }
        if (flag == 0){
            sort_arr[k++] = arr[i];
        }
    }
    return j;
}

1 个答案:

答案 0 :(得分:0)

我看到代码有3个问题: 你应该回k而不是j。 k是sort_arr的大小 你应该循环到arr [i] / 2,而不是小于那个(参见下面的代码中的&lt; =) 3.你没有处理负数。将您的循环更改为以下内容:

A = (struct a**)realloc(A, 2*sizeof(struct a*));

如果没有打印您的值的代码,我不确定您正在寻找什么,但希望修复这些将解决您的问题。