2013-05-23 2 views
0

나는 C에 매우 익숙하다. King 제 2 판에 의한 C 프로그래밍에 대한 현대적인 접근법을 사용하고있다.숫자가 가장 큰 프로그램을 작성하십시오.

제 6 장에 막혔습니다. 질문 1 : 사용자가 입력 한 일련의 숫자 중 가장 큰 것을 찾는 프로그램을 작성하십시오. 프로그램은 사용자가 숫자를 하나씩 입력하도록 요구해야합니다. 사용자가 0 또는 음수를 입력하면 프로그램은 입력 된 가장 큰 음수가 아닌 숫자를 표시해야합니다.

지금까지 내가 가진 :

#include <stdio.h> 

int main(void) 
{ 
float a, max, b; 

for (a == max; a != 0; a++) { 
printf("Enter number:"); 
scanf("%f", &a); 
} 

printf("Largest non negative number: %f", max); 

return 0; 
} 

내가 루프의 사용자 입력의 끝 부분에있는 가장 크고 음이 아닌 어떤 수를보고하는 방법은 질문의 마지막 부분을 이해하지 않습니다.

max = a > a ??? 

도움 주셔서 감사합니다.

+2

(A == 최대, A = 0;! ++)'할까? –

+0

질문은 사용자가 음수 (또는 0)를 입력하고 지금까지 입력 한 숫자 중 가장 큰 숫자를 인쇄하는 즉시 중지해야합니다. BTW, 당신의 프로그램은 버그가있다. max가 초기화되지 않았고, for 루프 내부에서 max의 비교/재 할당이 없다. – Sudhee

+0

루치아노, 나는 끝 부분에 최대를 표시했다. – caelan

답변

4

그래서 당신은 루프 통해 반복 할 때마다 그것을보다 크다면과 같이, 최대 업데이트 할 : 마지막에

#include <stdio.h> 

int main(void) 
{ 
    float max = 0, a; 

    do{ 
     printf("Enter number:"); 

     /* the space in front of the %f causes scanf to skip 
     * any whitespace. We check the return value to see 
     * whether something was *actually* read before we 
     * continue. 
     */ 

     if(scanf(" %f", &a) == 1) { 
      if(a > max){ 
       max = a; 
      } 
     } 

     /* We could have combined the two if's above like this */ 
     /* if((scanf(" %f", &a) == 1) && (a > max)) { 
     *  max = a; 
     * } 
     */ 
    } 
    while(a > 0); 

    printf("Largest non negative number: %f", max); 

    return 0; 
} 

그런 다음 간단하게 인쇄 최대. 한 번 이상 실행해야하므로 do while 루프가 더 나은 선택입니다. 당신이`기대 무엇

+0

@Nik 코드 gremlins가 거기에 넣었 기 때문입니다. 나는 그것을 고쳤다 : P. –

+0

바보 코드 - gremlins. 다른 의견을 삭제했습니다. 이것은 좋은 시도이지만, 실제로'scanf '의 반환 값을 검사하여 실제로 어떤 것이 읽혔는지 확인해야합니다. –

+0

@NikBougalis 아마 그것을 검사해야하지만, 이것은 간단한 문제 일뿐입니다. TBH, 나는 C로 에러를 처리하는 방법에 몹시 익숙하지 않다. –

0
#include<stdio.h> 

int main() 
{ 
    float enter_num,proc=0; 

    for(;;) 
    { 
     printf("Enter the number:"); 
     scanf("%f",&enter_num); 


     if(enter_num == 0) 
     { 
      break; 
     } 

     if(enter_num < 0) 
     { 
      proc>enter_num; 
      proc=enter_num; 
     } 

     if(proc < enter_num) 
     { 
      proc = enter_num; 
     } 

    } 

    printf("Largest number from the above is:%.1f",proc); 
    return 0; 
} 
관련 문제