仅将数组中的正,偶数值存储到另一个数组中

时间:2017-05-27 16:19:55

标签: c arrays

我创建了一个由用户给出的数组,大小和值,然后只将正的偶数值存储到另一个数组中,但我只得到0作为答案。

# include <stdio.h>
int main()
{
    int n, i;
    float num[10], A[10];

    printf("Enter the numbers of elements: ");
    scanf("%d", &n);

    for(i = 0; i < n; ++i)
    {
        printf("%d. Enter number: ", i+1);
        scanf("%f", &num[i]);
    }
    for(i = 0; i < n; ++i)
    {
        if(num[i] > 0 && fmod(num[i],2)==0){  
            A[i] = num[i];
        }
    }
    printf("Positive, even values of the new created array are%d\t", A[i]);

    return 0;
}

2 个答案:

答案 0 :(得分:0)

您必须初始化n。小心; n不应超过10。

您只打印其中一个值A[i]。我想你想要循环。

for(i = 0; i < n; ++i)
{
    if(num[i] > 0 && fmod(num[i],2)==0){  
       A[i] = num[i];

    printf("Positive, even values of the new created array are %lf\n", A[i]);
    }

}

答案 1 :(得分:0)

通过检查第一个数组中的每个值是否大于或等于零,您可以非常简单地仅使用甚至数字填充第二个数组,然后通过检查位0(1位)是否为零,例如

    for (int i = 0; i < MAX; i++) {
        a[i] = rand() % LIM - 4999;         /* random -4999 - 5000 */
        if (a[i] >= 0 && !(a[i] & 1))       /* if pos and even  */
            b[n++] = a[i];                  /* store in b array */
    }

(注意:上面第一个数组使用的64个值是-4999 - 5000之间的随机值,可以很好地测试只选择正数/偶数。)

之后,您可以打印两个阵列是一种合理的格式,以便轻松确认操作。将所有部分组合在一起,您可以执行以下操作:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 64
#define LIM 10000

int main (void) {

    int a[MAX] = {0}, b[MAX] = {0}, n = 0;
    srand (time (NULL));

    for (int i = 0; i < MAX; i++) {
        a[i] = rand() % LIM - 4999;         /* random -4999 - 5000 */
        if (a[i] >= 0 && !(a[i] & 1))       /* if pos and even  */
            b[n++] = a[i];                  /* store in b array */
    }

    printf ("original array:\n\n");         /* output original array */
    for (int i = 0; i < MAX; i++) {
        if (i && (i % 8) == 0)
            putchar ('\n');
        printf (" %5d", a[i]);
    }
    putchar ('\n');

    printf ("\npositive even array:\n\n");  /* output pos/even array */
    for (int i = 0; i < n; i++) {
        if (i && (i % 8) == 0)
            putchar ('\n');
        printf (" %5d", b[i]);
    }
    putchar ('\n');

    return 0;
}

示例使用/输出

$ ./bin/arrayposeven
original array:

   -68  3112  1571 -1926  1263 -1424   554  3181
  1701 -4545  -956  4442  -431 -2333 -4373  3972
 -3033  2539 -1926   794  4050  1318  3323   120
 -3253  4451   781  2979   519 -2224  4251  1802
 -4113 -2827  1227 -1499 -2899 -3220  3033  3801
 -2765 -2923  3242  1803 -3905   220 -2874  4413
 -2242   200   206 -3193 -3483 -1471 -1722  4615
  4331   410  2593 -3799  3185 -1804  3002   424

positive even array:

  3112   554  4442  3972   794  4050  1318   120
  1802  3242   220   200   206   410  3002   424

仔细看看,如果您有任何其他问题,请告诉我。