¿Por qué este progtwig c da error de tiempo de ejecución

mi progtwig es tomar entradas de enteros y agregar la sum de números negativos impares incluso a números positivos, pero obtengo un error en tiempo de ejecución, ¿alguien puede encontrar un error?

#include  int main(void) { int i,j,m,n,a[m],w; scanf("%d",&n); for(i=0;i<n;i++) { int s=0,d=0; scanf("%d",&m); for(j=0;j<m;j++) { scanf("%d",&a[j]); if((a[j]0)&&(a[j]%2==0)) d=d+a[j]; } printf("%d",s+d); } return 0; } 

en tu código

 a[m] 

es erróneo El valor de m se utiliza como no inicializado.

Para resolver su problema, puede usar la asignación de memoria dinámica para una variable int * a basada en la entrada del usuario de m .

Nota:

  1. Siempre inicialice sus variables locales.
  2. Verifique el valor de retorno de scanf() para una entrada exitosa.
  3. [Una solicitud] C ignora los espacios en blanco [en su mayoría]. Úsalos para hacer que tu código sea más legible para los humanos .

Tu error es este: int a[m]

¿Qué esperas que sea el valor de m ? Cambie a a[256] . O defina int *a luego después de escanear m : a = malloc( m * sizeof (int) ) .

Si tu quieres

 a[m]; 

Desde C99 tienes VLA.

 int m; scanf("%d",&m); int a[m]; 

Como veo en su código, está intentando escanear el tamaño de la matriz.

Alternativamente, puede tener una matriz dinámica

 int *a = malloc(sizeof(int) * m); 

@Sourav ya ha mencionado el motivo del accidente.

El valor de m es indeterminado.

statement de la matriz causó el error de tiempo de ejecución, consulte este http://www.tutorialspoint.com/cprogramming/c_arrays.htm