在C中的随机数组中输出正数和负数

时间:2017-12-04 15:53:41

标签: c arrays

我必须创建一个分隔正数和负数的程序 从随机阵列 我尝试创建void以首先仅将正数分开(visualizzaVettorePos),但我一直得到Id return 1 exit status。 有什么想法吗?

代码:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define DIM 100
#define NUM 20

void caricaVettore(int*, int);
void visualizzaVettore(int*, int);
void visualizzaVettorePos(int[], int[], int);

int main(){
    int mioVettore[DIM];
    int vettorePos[DIM];
    srand((unsigned)time(NULL));
    caricaVettore(mioVettore, DIM);
    visualizzaVettore(mioVettore, DIM);
    visualizzaVettorePos(mioVettore, vettorePos, DIM);
    system("PAUSE");
    return 0;
}

void caricaVettore(int* vettore, int quanti){
    int i;
    printf("Inizio fase caricamento (input)\n");
    for(i=1; i<=quanti; i++){
        vettore[i]=rand()%(NUM*2+1)+(-NUM);
    }
    printf("Fine fase caricamento (input)\n");
}

void visualizzaVettore(int* vettore, int quanti){
    int i;
    printf("Inizio fase visualizzazione (output)\n");
    for(i=1; i<=quanti; i++){
        printf("Valore indice %d: %d\n", i, vettore[i]);
    }
    printf("Fine fase visualizzazione (output)\n");
}

void visualizzaVettoriPos(int vettore[], int vettorepos[], int quanti){
    int i,j;
    j=1;
    for(i=0; i<quanti; i++ && j++){
        if (vettore[i]>=0){
            vettorepos[j]=vettore[i];
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您的程序显示未定义的行为。在C数组中,索引从0开始,而不是从1开始。

因此,您需要像这样更改for循环:

for (i = 0; i < quanti; i++)

而不是:

for (i = 1; i <= quanti; i++)

出于同样的原因visualizzaVettoriPos函数

j = 1;

应该是

j = 0;