2015-09-25 19 views
-5

我只想知道如何保存或存儲符號,如+, - ,/和*,以便我可以在if語句中使用它來執行用戶輸入的任何符號。我知道我的代碼是錯誤的,所以任何形式的幫助將不勝感激。存儲char並在if語句中使用它

#include<stdio.h> 
#include<stdlib.h> 

int main() 
{ 
    int int1, int2, sum; 
    char oper; 
    printf("Enter Value Here: "); 
    scanf("%d", &int1); 
    printf("Enter Operation Here: "); 
    scanf("%s", &oper); 
    printf("Enter Value Here: "); 
    scanf("%d", &int2); 
    if (oper == "+") 
     sum = int1 + int2; 
    printf("The sum is %d", sum); 

    return 0; 
} 
+0

使用[STRCMP(http://www.cplusplus.com/reference/cstring/strcmp/)比較字符串(不串地址,這將是不同的) – amdixon

+1

像任何其他語言功能,您需要在使用它們之前實際學習字符串。 – Lundin

+0

你能否詳細說明什麼是strcmp以及如何使用它? – REA98

回答

1

你可以做這樣的事情:

#include<stdio.h> 

int main(void){ 
    int int1, int2, sum=0; 
    char op; 


    printf("Please enter one of the following Operators [*] [/] [+] [-] "); 
    if((scanf("%c",&op)) != 1){ 
     printf("Error\n"); 
    } 

    printf("Enter Value Here: "); 
    if((scanf("%d", &int1)) != 1){ 
     printf("Error\n"); 
    } 

    printf("Enter Value Here: "); 
    if((scanf("%d", &int2)) != 1){ 
     printf("Error\n"); 
    } 

    if (op == '/'){ 
     sum = int1/int2; 
    }else if(op == '*'){ 
     sum = int1 * int2; 
    }else if(op == '+'){ 
     sum = int1 + int2; 
    }else if(op == '*'){ 
     sum = int1 - int2; 
    } 

    printf("The sum is %d\n", sum); 

    return 0; 
} 

編輯: 爲了更好的精確度,你可以使用浮動,使用,如果你不能確定。

#include<stdio.h> 

int main(void){ 
    float int1, int2, sum=0; 
    char op; 


    printf("Please enter one of the following Operators [*] [/] [+] [-] "); 
    if((scanf("%c",&op)) != 1){ 
     printf("Error\n"); 
    } 

    printf("Enter Value Here: "); 
    if((scanf("%f", &int1)) != 1){ 
     printf("Error\n"); 
    } 

    printf("Enter Value Here: "); 
    if((scanf("%f", &int2)) != 1){ 
     printf("Error\n"); 
    } 

    if (op == '/'){ 
     sum = int1/int2; 
    }else if(op == '*'){ 
     sum = int1 * int2; 
    }else if(op == '+'){ 
     sum = int1 + int2; 
    }else if(op == '*'){ 
     sum = int1 - int2; 
    } 

    printf("The sum is %.1f\n", sum); 

    return 0; 
} 
+0

非常感謝。非常感謝你!但是我還有最後一個問題,比較字符時,我真的必須使用'而不是'嗎? – REA98

+0

如果您使用單引號,那麼您暗示的是單個字符,但是雙引號使其成爲一個字符串,在由NULL字符終止的雙引號中 –

+0

短anser,**'**用於單個字符和**「**用於字符串 – Michi

0

你爲什麼不以C使用switch情況:

char oper; 
    float num1,num2; 
    printf("Enter operator either + or - or * or/: "); 
    scanf("%c",&oper); 
    printf("Enter two operands: "); 
    scanf("%f%f",&num1,&num2); 
    switch(oper) { 
     case '+': 
      printf("%.1f + %.1f = %.1f",num1, num2, num1+num2); 
      break; 
     case '-': 
      printf("%.1f - %.1f = %.1f",num1, num2, num1-num2); 
      break; 
     case '*': 
      printf("%.1f * %.1f = %.1f",num1, num2, num1*num2); 
      break; 
     case '/': 
      printf("%.1f/%.1f = %.1f",num1, num2, num1/num2); 
      break; 
     default: 
      /* If operator is other than +, -, * or /, error message is shown */ 
      printf("Error! operator is not correct"); 
      break; 
    } 

現在用if-else

//same code 
scanf("%f%f",&num1,&num2); 
      if(oper=='+') 
       printf("%.1f + %.1f = %.1f",num1, num2, num1+num2); 
      else if(oper=='-') 
       printf("%.1f - %.1f = %.1f",num1, num2, num1-num2); 
      else if(oper=='*') 
       printf("%.1f * %.1f = %.1f",num1, num2, num1*num2); 
      else if(oper=='/') 
       printf("%.1f/%.1f = %.1f",num1, num2, num1/num2); 
      else 
       /* If operator is other than +, -, * or /, error message is shown */ 
       printf("Error! operator is not correct"); 
+0

這是非常有幫助的,因爲我們的教授沒有教授「實際」的東西,並使我們在沒有任何教學的情況下開展課程。我會試着研究switch case,但是如果我要使用if語句,我該怎麼做呢? – REA98

+0

@RomsEsteban給了你一個答案。 – Michi

+0

答案已更新爲if-else – JerryGoyal

0

最有可能你正在尋找一個函數指針,將讓你做一些面向對象的編程:

// type of functions being binary operations 
typedef int (binary_operation*)(int, int); 

// now you can define any binary operation on ints 

int add_op(int a, int b) { // definition }; 

int mul_op(int a, int b) { // definition }; 

// main... 
    binary_operation f; 
    if (oper == "+") 
     f = add_op; 
     sum = f(in1,int2); 

這樣你可以將你的函數存儲在容器中,你可以將它們傳遞給其他函數等等。