我必须创建一个分隔正数和负数的程序
从随机阵列
我尝试创建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];
}
}
}
答案 0 :(得分:1)
您的程序显示未定义的行为。在C数组中,索引从0开始,而不是从1开始。
因此,您需要像这样更改for
循环:
for (i = 0; i < quanti; i++)
而不是:
for (i = 1; i <= quanti; i++)
出于同样的原因visualizzaVettoriPos
函数
j = 1;
应该是
j = 0;