2017-12-15 44 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

평균 결과가 소수 일 경우 어떻게해야합니까? int -> float, 생각해보십시오. – joemartin94

+0

왜'n '과'i'를'getn'으로 전달합니까? 그것들은'getn'에서 지역 변수로 사용되고 있으며'main'에서는 정의되지 않았습니다. –

답변

0

먼저 도와주세요, 당신의 C 코드를 일부 수정이 필요합니다 :

  1. 는 적어도
  2. getnint을 반환하도록 정의하고 아무것도 반환하지 않습니다 사용하기 전에 getn의 프로토 타입을 제공합니다. intvoid으로 바꾸거나 값을 반환하십시오.

둘째,

  1. 코드는이 제품이 너무 큰 경우 int에있는 그대로, 그것은 저장 될 수 없습니다, 열 개 번호의 제품을 계산합니다. 예를 들어 10 번 3 번을 입력하면 결과는 59049이지만 10 번 23 번을 입력하면 1551643729에 답할 것입니다. 23^10 = 41426511213649이기 때문에 잘못되었지만 int. 이를 산술 오버플로이라고합니다.
  2. 합이 int이므로 평균이 나쁘지 만 평균은 (일반적으로) 유리수입니다 (평균 (2,3) = 2.5가 아닙니까?). 따라서 double avg = out/10.0; (부동 소수점을 계산한다는 의미) 및 printf("Average %f\n",avg);이 더 좋을 것입니다.