2017-10-24 2 views
0

私のコードには正の数がいくつありますか?私は間違った出力を得ています、私の間違いがどこにあるのかを詳しく説明してください。私は望む通り正確な出力をしたい。 6nと入力すると、6つの数字が挿入され、出力には挿入した正の数が表示されます。配列には正の数がありますか

#include <math.h> 
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
#include <assert.h> 
#include <limits.h> 
#include <stdbool.h> 

int main() { 
    int n; 
    scanf("%d",&n); 
    int arr[n]; 
    int i; 
    int p = 0; 
    int arr_i; 
    for (arr_i = 0; arr_i < n; arr_i++) { 
     scanf("%d",&arr[arr_i]); 
    } 
    for (i = 0; i < n; i++) { 
     int arr_index=i; 
     if (arr[arr_index] > 0) { 
      p++; 
     } 
     printf("%d",p); 
    } 

    return 0; 
} 
+1

ようこそ役に立てば幸い!問題の声明が単に「動作しない」場合は、ソリューションを提供することは困難です。実際の結果とどのように違うのか、そしてどのようなことが起こるのかをより完全に説明するために質問を編集してください。何が良い説明になるかについてのヒントについては、[ask]を参照してください。 –

+2

"間違った出力"を詳しく教えてください。質問を編集して、実際の入力、実際の出力、およびその入力の予想出力を表示します。 –

+0

'arr_index'は必要ありません - ' arr [i] 'のように 'arr'の要素にアクセスするために' i'を使うことができます。 –

答えて

0

これを試してみてください: だけforループの外pを印刷します。

#include <math.h> 
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
#include <assert.h> 
#include <limits.h> 
#include <stdbool.h> 

int main() { 
    int n; 
    scanf("%d",&n); 
    int arr[n]; 
    int i; 
    int p = 0; 
    int arr_i; 
    for (arr_i = 0; arr_i < n; arr_i++) 
    { 
     scanf("%d",&arr[arr_i]); 
    } 
    for (i = 0; i < n; i++) 
    { 
     int arr_index=i; 
     if (arr[arr_index] > 0) 
     { 
      p++; 
     } 
    } 
      printf("%d",p); 

    return 0; 
} 
0

あなたはtはmalloc関数を使用して動的にメモリを割り当てる必要がある - これは

#include <stdio.h> 

#include <stdlib.h> 


int main() { 
char c; 
int n; 
scanf("%d", &n); 
int * arr; 
int i; 
int p = 0; 
arr = (int *)malloc(n * sizeof(int)); 
    for (i = 0; i < n; i++) 
    { 
     scanf("%d", &arr[i]); 
     if (arr[i] > 0) 
     { 
      p++; 
} 
} 


printf(" %d", p); 

return 0; 

}スタックオーバーフローに

関連する問題