2015-01-14 3 views
0

그래서 가장 높은 숫자를 인쇄하는 C 프로그램을 작성해야합니다. 입력이 비어 있으면 아무것도 인쇄하지 않아야합니다. 입력에 숫자 이외의 것이 포함되어 있으면 아무 것도 인쇄하지 말아야합니다. 예 : 입력이 1 2 3 2 1이면 3을 출력해야합니다. 입력이 1 2 a 2 1이면 아무 것도 출력하지 않습니다.가장 높은 숫자를 인쇄하는 C 프로그램

이 내가 지금까지 무엇을 가지고 있습니다 :

#include <stdio.h> 

int main() 
{ 
    int res, max, x; 

    res = scanf("%d", &max); 
    if (res == 1) { 
     while(res != EOF) 
     { 
      res = scanf("%d", &x); 
      if (x > max) 
      { 
       max=x; 
      } 
     } 
     printf("%d", max); 
    } else { 
     return 0; 
    } 
    return 0; 
} 

그래서 제 질문은, 내가 그것을 위의 예에서와 같은 문자가 포함 된 경우는 아무것도 출력하지 어떻게해야합니까. 미리 감사드립니다! 입력이 숫자이면

+1

참고 그 '다른 {반환 0; '''scanf'가'1'을 제외한 나머지를 반환하면'while' 루프에 도달하지 않으므로'return 0; '을 얻을 수 있기 때문에 중복됩니다. – Quaker

답변

1
#include <stdio.h> 

int main(void){ 
    int res, max, x; 

    if(1 != scanf("%d", &max)) 
     return -1; 

    while(EOF != (res = scanf("%d", &x))){ 
     if(res != 1) 
      return -1; 
     if (x > max){ 
      max = x; 
     } 
    } 
    printf("%d\n", max); 
    return 0; 
} 
-1

, scanf는 잘못된 입력, 숫자가 아닌 즉 무언가가있을 때 중지됩니다 1

#include <stdio.h> 

int main() 
{ 
    int max, x; 
    int result; 

    if (scanf("%d", &max) != 1) 
     return -1; 
    x = max; 
    do { 
     result = scanf("%d[^\n]", &x); 
     if ((result != EOF) && (result != 1)) 
      return 0; 
     else if ((result != EOF) && (x > max)) 
      max = x; 
    } while (result != EOF); 

    printf("\n\nMaximum Input : %d\n", max); 
    return 0; 
} 

이전 프로그램을 반환합니다.

+1

'printf' 줄은'do-while' 루프 밖에 있어야한다고 생각합니다. –

+0

@RSahu 당신은 맞습니다.하지만 문자가 정수들 사이에 나타나면 아무 것도 인쇄하지 말라는 요구가 깨질 것입니다. – Quaker

+0

@BLUEPIXY 귀하의 요지를 봅니다. –

2
#include <stdio.h> 

int main() 
{ 
    int max, x; 

    if (scanf("%d", &max) != 1) 
    { 
     // If there is no number, exit the program. 
     return 0; 
    } 

    while (scanf("%d", &x) == 1) 
    { 
     if (x > max) 
     { 
     max=x; 
     } 
    } 

    // If we came to the EOF, we didn't see any bad input. 
    if (feof(stdin)) 
    { 
     printf("Max: %d\n", max); 
    } 

    return 0; 
} 
관련 문제