2013-11-09 3 views
3

음수가 발생할 때까지 사용자가 숫자 (최대 입력> 10^6)를 입력 할 수있게 해주는 프로그램을 만들려고합니다. 나는 많은 버전을 시도했지만 부정적인 값이 입력되거나 충돌하는 것을 등록하지도 않습니다.음수가 될 때까지 번호 추가

난에서 현재 해요 곳입니다 :

scanf("%i", entry); 

이되어야하는 :

scanf("%i", &entry); 

당신은에 전달해야

#include <stdio.h> 

#define HIGHEST 999999 
int main(){ 
    int i=0, entry, sum=0; 
     while(i<HIGHEST){ 
      scanf("%i", entry); 
      if(entry>0){ 
       sum+=entry; 
      } 
      else{ 
      i=HIGHEST; 
      } 
     i++; 
    } 
    printf("Sum: %i", sum); 
    system("pause"); 
} 

답변

3

귀하의 문제는이 라인에 스캔 된 값을 저장할 정수 변수의 주소. 항목이 초기화되지 않았으므로 메모리에 입력 된 값이 아닌 가비지로 채워집니다. 참조 입력 한 번호가 너무 큰 경우, 당신은 떠날 수있는 방법을 제공

"Depending on the format string, the function may expect a sequence of additional arguments,  
    each containing a pointer to allocated storage where the interpretation of the extracted 
    characters is stored with the appropriate type" 
+1

실제로 사용하기 전에 항목의 값을 인쇄하여이 프로그램을 실행하는 것이 좋습니다. 그렇게하면 초기화되지 않은 영역에 밀린 미친 물건을 볼 수 있습니다. – BlackVegetable

+0

감사합니다, 놓칠 수 없어야합니다 :) – user2962716

0

주장이 reference, :이 0보다 작은 경우

while(i<HIGHEST){ 

하지만 아무것도 떠날; 이 시도 : 그는 지적으로

while((i<HIGHEST)&&(i>=0)){ 

또한, @OldProgrammer이 올바른지, 당신의 scanf()가 있어야한다.

+0

내가 <0이 될만한 것이 없어도 그렇게해야합니까? – user2962716

+0

@ user2962716 - 문제 설명에 : 음수가 나올 때까지 _, 음수가 나올 때까지 (그리고 1000000보다 작음) 프로그램을 실행해야 함을 암시합니다. 그래서 그 제안을 전했습니다 :) – ryyker

관련 문제