2014-09-13 2 views
1

프로그래밍에서 새로운 내용 프로그램을 작성합니다. 그러나 선택 프로그램을 끝내기 전에 프로그램을 실행할 때 끝납니다. 다음은 스크린 샷입니다. https://onedrive.live.com/download?resid=E63780628DD96583!3161&authkey=!APl3ReO7T4XIO_s&v=3&ithint=photo,jpg프로그램 종료 입력하기 전에 입력 (스위치 케이스)

#include<stdio.h> 
#include<conio.h> 
main() 
{ 
    char ch; 
    int num1, num2, a, m, s; 
    float d; 
    printf("\nEnter The First Number: "); 
    scanf("%d", &num1); 
    printf("\nEnter The Second Number: "); 
    scanf("%d", &num2); 
    a=num1+num2; 
    m=num1*num2; 
    s=num1-num2; 
    d=(float)(num1/num2); 
    printf("\nEnter Your Choice: "); 
    scanf("%c", &ch); 
    switch(ch) 
     { 
      case 'A': printf("\nThe Addition Of The Number Is= %d", a); 
       break; 
      case 'M': printf("\nThe Multipication Of The Numbers Is= %d", m); 
       break; 
      case 'S': printf("\The Subsraction Of THe Numbers Is= %d", s); 
       break; 
      case 'D': printf("\nThe Division Of The Two Numbers Is= %f", d); 
       break; 
      default : printf("\nInvalid Entry"); 
       break; 
     } 
    getch(); 
    return 0; 
} 
내가 실수를 했는가

???

+0

프로그램을 디버깅하지 않는 것이 첫 번째 실수입니다. 형식이 지정된 단일 '% c'를 읽을 때 공백을 건너 뛰지 않고 * 읽지 않음을 이해하려면 [scanf()'] (http://en.cppreference.com/w/c/io/fscanf)에 대한 연구를하지 마십시오. whitespace preamble 따라서 여러분이 원하는 문자가 아니라 두 번째 숫자가 두 번째 실수가 될 때마다 개행 문자를 사용합니다. – WhozCraig

+1

일반 텍스트 입출력의 스크린 샷이 왜 필요합니까? 어쨌든, 당신은 수도 만 확인하고 있습니다. 대문자로 입력하지 않기 때문에 * 소문자 * 문자를 입력하고 있습니다. – usr2564301

답변

3

scanf 당신이 처음 두 integers.As의 값이 (\n를) Enter 키를 입력 한 후 \n 문자를 소비 또한 문자하지 않기 때문에 issue.This 일이 해결됩니다 scanf%c 앞에 공백을 추가 scanf("%c",&ch);에 의해 소비되고, 따라서 귀하의 디폴트 경우가 실행됩니다. % c 이전의 공백은 모든 공백과 공백을 버립니다.

+0

감사합니다. 그것은 작동합니다. 하지만 왜 ??? – MaxySpark

+1

다음을보십시오. http://en.cppreference.com/w/c/io/fscanf "형식 문자열의 단일 공백 ​​문자는 입력에서 사용 가능한 모든 연속 공백 문자를 사용합니다." –

+0

두 개 * *"\엔"**. 그렇다면 ** scanf ***에서 ** "% c"** 전에 이중 공간을 주어야합니까? – MaxySpark