2015-02-28 2 views
0

Я написал эту программу, которая принимает n и k в качестве входных данных, а затем принимает массив a [n] в качестве входного. Программа должна давать результат как полное число четных целых чисел в массиве a, которые меньше k и нечетны. Но эта программа с каждым вводом производит 0 в качестве вывода. Может ли кто-нибудь сказать мне, что не так с кодом?Выход, поступающий так же каждый раз

#include<stdio.h> 

int main() 
{ 
    long long int n,i,j,k,temp=-1; 
    scanf("%lld %lld",&n,&k); 

    long long int a[n]; 

    for(i=0;i<n;i++) 
    scanf("%d",&a[i]); 

    long long int cnt=0; 

    for(i=0;i<n;i++) 
    { 
     if(a[i]<k) 
     { 
     if((a[i]%2)==1) 
      cnt++;} 

    } 


    for(i=0;i<(n-1);i++) 
    { 
     for(j=i+1;j<n;j++) 
     { 
      if(a[i]==a[j]) 
      { 
       cnt--; 
       a[j]=temp; 
       --temp; 
      } 
     } 
    } 

    printf("%lld",cnt); 
    return 0; 
} 

ответ

0
scanf("%d", &a[i]); 

Должно быть:

scanf("%lld", &a[i]); 
+0

Это сработало:) ... –

+0

Да, использование '% d' для' long long' - неопределенное поведение;) –

0

ЗАКАНЧИВАТЬ внутренний цикл, может быть, вам нужно объявить переменную и приращение, что и писать, и если утверждение, что говорит, если переменная == 1 затем напечатайте требуемое значение. Не уверен, но может работать.