2017-12-15 21 views
-4
#include <stdio.h> 
#include <conio.h> 

int getn(int n, int i); 

int main() 
{ 
    int n, i; 

    getn(n, i); 

    getch(); 
    return 0; 
} 
int getn(int n, int i) 
{ 
    int even = 0; 
    int odd = 1; 
    int avg; 

    printf("Enter ten integers: \n"); 
    for (i = 1 ; i <= 10 ; i++) 
    { 
     printf("Integer %d: ", i); 
     scanf("%d", &n); 
     if (n % 2 == 0) 
     { 
      even = even + n; 
     } 
     else 
     { 
      odd = odd * n; 
     } 
    } 
    avg = even/10; 
    printf("\n\nAverage of even numbers: %d", avg); 
    printf("\nProduct of odd numbers: %d", odd); 
} 

偶数の計算がうまくいくようですが、奇数になると間違った答えが出ます。助けてください 私たちのインストラクターは、私たちにループや反復を使用させたいと考えています。配列はありません。私は偶数の平均と奇数の積

+2

コンパイラでは書式設定とインデントは重要ではありませんが、コードを読もうとする人にとっては重要です。あなたの質問を編集して読みやすくしてください。 –

+0

avgの結果が小数の場合はどうなりますか? int - > float、そのことを考えてください – joemartin94

+0

なぜ 'n'と' i'を 'getn'に渡していますか?それらは 'getn'のローカル変数として使われているだけで、' main'では定義されていません。 –

答えて

0

まず助けてください、あなたのCコードは、いくつかの修正を必要とします:

  1. が、少なくともそれ
  2. getnintを返すように定義されており、何も返さない使用する前に、getnのプロトタイプを与えます。 intvoidに置き換えるか、値を返します。

第二に、

  1. あなたのコードは、この製品が大きすぎる場合intに-あるとして、それは店にはできません、10個の数字の積を計算します。たとえば、数字3の10倍を入力すると結果は59049になりますが、数字23の10倍を入力すると1551643729と答えるでしょう。23^10 = 41426511213649だから間違っていますが、 int。これは算術オーバーフローとして知られています。
  2. 合計がintであるため、平均値が悪いですが、平均値は(一般的に)有理数(平均(2,3)= 2.5ではありません)です。だからdouble avg = out/10.0;(浮動小数点計算を意味する)とprintf("Average %f\n",avg);が良いでしょう。