2016-06-10 4 views
0

내가 뭘 잘못하고 있는지 모르겠지만 for 루프가 초기화되지 않습니다
코드는 바로 printfs를 표시합니다. 즉루프가 무시되는 이유는 무엇입니까?

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 
#include <stdlib.h> 
#define PAUSE system("Pause") 

main() { 
    // INITALIZE VARIABLES 
    int number = 0; 
    int i = 0; 
    int odd = 0; 
    int even = 0; 
    int totalNum = 0; 
    int tempNum = 0; 
    int count; 

    printf("Enter a number between 2 and 25\n"); 
    scanf("%i", &number); 

    do{ 
     if (number < 2 || number > 25) 
      printf("That was an invalid number please try again\n"); 
      scanf("%i", &number); 
    } while (number < 2 || number > 25); 

    printf("Enter how many numbers you want to input\n"); 
    scanf("%i", &count); 

    for (i = 1; i == count; ++i){ 
     printf("input numbers\n"); 
     scanf("%i", &tempNum); 
     if (tempNum % 2 == 0) 
      even++; 
     else 
      odd++; 
     totalNum = totalNum + tempNum; 
    } // END FOR LOOP 

    // DISPLAY OUTPUT 
    printf("You entered %i numbers\n", count); 
    printf("The sum of the %i numbers is %i\n", count, totalNum); 
    printf("The average of the %i numbers is %i\n", count, totalNum/count); 
    printf("You entered %i odd numbers and %i even numbers\n", odd, even); 

    PAUSE; 
} // END MAIN 
+0

답변을 요청 카운트 '는 단순한 오타 때문에 닫는다. –

+0

루프를 'n'회 반복하는 일반적인 관용구는'for (i = 0; i Barmar

답변

0

i = 1, 그래서 i == count; 따라서 루프가 무시됩니다 false 제공 활성화되지 않은 루프에 대한 이후 그들에 값이 없습니다.

+1

오 비교해 주셔서 감사합니다. 비교 연산자를 변경하면 작동합니다. –

+0

@PastelitosSlim 여러분 안녕하세요. 가장 좋은 대답을 선택하는 것을 잊지 마세요) – ktalik

1

루프는 한 번만 수행하면 count == 1i에서 1으로 초기화 될 때만 실행됩니다.

당신이 수를위한 1를 입력하면, 2

printf("Enter how many numbers you want to input\n"); 
    scanf("%i", &count); 
루프가 정확히 한 번만 실행됩니다

, i까지 증가 당신은 아마 원하는 : 루프

for (i = 1; i <= count; ++i){ 
+0

제 의견을 참조하십시오. –

+0

@WeatherVane 나는 아래쪽 표제 바로 앞에 픽스를 추가했다. – Ray

+0

'i

0

A의 C는 다음과 같이 작동합니다.

for (variable initialization; condition; variable update) { 
    /* Do something... */ 
} 

루프는 조건사실 인 동안 실행됩니다. 그래서, 당신이 할 때

for (i = 1; i == count; ++i) 

루프는 내가 ==이 참 계산 한 로에 대한 실행됩니다. 따라서이 라인이 실행될 때 카운트이 이 아니면 루프가 실행되지 않습니다. 다른 사람들이 지적

, 당신은 아마이 원하는 :

for (i = 1; i <= count; ++i) 

그래서 루프 내가
의 모든 값에 대해 실행됩니다, 그것은 에 도달 할 때까지. ,

for (i = 0; i < count; i++) 

우리는 I = 0 C 배열은 0을 기준으로하기 때문에 시작 : 나는 일반적인 방법은 C에서 루프를 작성하는 것을 지적한다 보조 노트로

이 같은 것입니다 배열의 N 번째 요소는 인덱스가 있습니다 n-1

0

너무 가까웠습니다. 루프 테스트 절 for (i = 1; i <= count; i++)을 수정하는 것 외에도 형식 지정자" %d"을 사용하는 것이 좋습니다. do 루프는 invalid number 메시지를 매번 인쇄하지 않으려면 while 루프 일 필요가 있습니다. 또한

가 아닌 오류가 있지만, C의 표준 코딩 스타일은 모든 소문자에 찬성 caMelCase 변수를 방지 할 수 있습니다. 예 : NASA - C Style Guide, 1994.

이러한 변경 사항을 적용하여 홀수/심지어 체크를 간단한 &으로 변경하면 다음과 같이 코드를 작성할 수 있습니다.

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 
#include <stdlib.h> 
// #define PAUSE system("Pause") 

int main (void) 
{ 
    int number, i, odd, even, totalnum, tempnum, count; 
    number = i = odd = even = totalnum = tempnum = count = 0; 

    printf ("enter a number between 2 and 25: "); 
    scanf (" %d", &number); 

    while (number < 2 || number > 25) { 
     printf ("invalid number, again (between 2 and 25): "); 
     scanf (" %d", &number); 
    } 

    printf ("numbers to input: "); 
    scanf (" %d", &count); 

    for (i = 1; i <= count; i++) { 
     printf ("input number %2d: ", i); 
     scanf (" %d", &tempnum); 
     if ((tempnum & 1) == 0) 
      even++; 
     else 
      odd++; 
     totalnum = totalnum + tempnum; 
    } 

    printf ("You entered %d numbers\n", count); 
    printf ("The sum of the %d numbers is %d\n", 
      count, totalnum); 
    printf ("The average of the %d numbers is %d\n", 
      count, totalnum/count); 
    printf ("You entered %d odd numbers and %d even numbers\n", 
      odd, even); 

//  PAUSE; 
    return 0; 
} 

참고 :mainint (예를 들어, int main (int argc, char **argv)하거나 int main (void) 촬영 인수를 나타 내기 위해)를 입력합니다. 유형이 int이기 때문에 쉘에 대한 값은 return입니다. 역사적인 구현에서는 더 이상 이식 가능한 코드의 경우가 아닌 void main을 허용했을 수 있습니다.

사용 예/출력이

$ /bin/forskipped 
enter a number between 2 and 25: 4 
numbers to input: 4 
input number 1: 1 
input number 2: 2 
input number 3: 3 
input number 4: 4 
You entered 4 numbers 
The sum of the 4 numbers is 10 
The average of the 4 numbers is 2 
You entered 2 odd numbers and 2 even numbers 

이 이상을보고 당신이 어떤 질문이 있으면 알려 주시기. >`나는 <= -

다른
1
do{ 
    if (number < 2 || number > 25) 
     printf("That was an invalid number please try again\n"); 
     scanf("%i", &number); 
} while (number < 2 || number > 25); 

그것이 있어야 ...

do{ 
    if (number < 2 || number > 25){ 
     printf("That was an invalid number please try again\n"); 
     scanf("%i", &number); 
    } 
} while (number < 2 || number > 25); 

그것은 수정,`내가 == count`를 제공하지 않습니다 항상 다른 번호

+0

잘 잡으려면 while (number <2 || number> 25) {'루프를 사용하는 것이 좋습니다. –

관련 문제