2014-09-01 5 views
-2

을 인쇄했습니다.이 계산기를 만들었습니다. 내가 겪고있는 문제는 대답을 한 후 반복 할 때이 줄을 두 번 인쇄한다는 것입니다. 왜 이렇게하고, 한 번 인쇄 할 수 있습니까?printf가 double-c 프로그래밍

printf("\n\n==========================="); 
printf("\n\nEnter operator: "); 

#include<stdio.h> 
#include<conio.h> 
int add(int a, int b); 
int sub(int a, int b); 
int mul(int a, int b); 
int div(int a, int b); 

    void main(){ 
     int a; 
     int b; 
     char c; 
     do{ 
     printf("Calculator by Maisam, If u want to exit the program press q"); 
     printf("\n\n==========================="); 
     printf("\n\nEnter operator: "); 
     scanf("%c",&c); 
     switch(c){ 
      case '+': 
       printf("\n> Enter first number: "); 
       scanf("%d",&a); 
       printf("\n> Enter second number: "); 
       scanf("%d",&b); 
       printf("\n==========================="); 
       printf("\n\n< Answer is %d\n",add(a,b)); 
       break; 
      case '-': 
       printf("\n> Enter first number: "); 
       scanf("%d",&a); 
       printf("\n> Enter second number: "); 
       scanf("%d",&b); 
       printf("\n==========================="); 
       printf("\n\n< Answer is %d\n",sub(a,b)); 
       break; 
      case '*': 
       printf("\n> Enter first number: "); 
       scanf("%d",&a); 
       printf("\n> Enter second number: "); 
       scanf("%d",&b); 
       printf("\n==========================="); 
       printf("\n\n< Answer is %d\n",mul(a,b)); 
       break; 


      case '/': 
       printf("\n> Enter first number: "); 
       scanf("%d",&a); 
       printf("\n> Enter second number: "); 
       scanf("%d",&b); 
       printf("\n==========================="); 
       printf("\n\n< Answer is %d\n",div(a,b)); 
       break; 

      } 
     } 
     while(c != 'q'); 
    } 


    int add(int a, int b){ 
     return a+b; 
    } 

    int sub(int a, int b){ 
     return a-b; 
    } 

    int mul(int a, int b){ 
     return a*b; 
    } 

    int div(int a, int b){ 
     return a/b; 
    } 
+2

'는 scanf ("%의 C", &c);'->'는 scanf ("%의 C", &c);'공백 문자를 건너 – BLUEPIXY

+0

가능한 중복. [Second scanf가 작동하지 않습니다.] (http://stackoverflow.com/questions/4023643/second-scanf-is-not-working) – chux

+2

[scanf를 사용하지 마십시오] (https://stackoverflow.com/questions/24302160/) scanf-on-an-istream-object/24318630 ​​# 24318630) – zwol

답변

1

을 할 것, 이것은 수락하여 scanf에 의해 소비되는 char

퍼센트 앞에 공백을 추가 (키를 누르면 입력으로도 char으로 결과) C가 당신의 문제를 해결할 것입니다. 해결 문제와

훨씬 깨끗하고 더 나은 코드 :

#include<stdio.h> 
#include<conio.h> 

int add(int a, int b); 
int sub(int a, int b); 
int mul(int a, int b); 
int div(int a, int b); 

    int main() 
    { 
     int a; 
     int b; 
     char c; 
     do 
     { 
      printf("Calculator by Maisam, If u want to exit the program press q"); 
      printf("\n\n==========================="); 
      printf("\n\nEnter operator: "); 
      scanf(" %c",&c); // skip a space character 

      // Accept the numbers and then operate on them according to operator 
      printf("\n> Enter first number: "); 
      scanf("%d",&a); 
      printf("\n> Enter second number: "); 
      scanf("%d",&b); 
      printf("\n==========================="); 


      switch(c){ 
      case '+': 
       printf("\n\n< Answer is %d\n",add(a,b)); 
       break; 
      case '-': 
       printf("\n\n< Answer is %d\n",sub(a,b)); 
       break; 
      case '*': 
       printf("\n\n< Answer is %d\n",mul(a,b)); 
       break; 
      case '/': 
       printf("\n\n< Answer is %d\n",div(a,b)); 
       break; 
      default : 
       printf("Invalid choice"); 

      } 
     } while(c != 'q'); 
     return 0; 
    } 


    int add(int a, int b){ 
     return a+b; 
    } 

    int sub(int a, int b){ 
     return a-b; 
    } 

    int mul(int a, int b){ 
     return a*b; 
    } 

    int div(int a, int b){ 
     return a/b; 
    } 
1

당신이 어떤 데이터를 입력 한 후 엔터 키를 눌러 때문에 scanf이 후 입력 아무것도 \n 잎 때문이다.

scanf 뒤에 getchar()을 추가하면 문제가 해결됩니다. 또는 %c 앞에 공백을 추가하면 사용자가 입력을 제공 한 후 Enter 키를 누릅니다 때마다

관련 문제