存储char并在if语句中使用它

问题描述:

我只想知道如何保存或存储符号,如+, - ,/和*,以便我可以在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

你可以做这样的事情:

#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

你为什么不以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

最有可能你正在寻找一个函数指针,将让你做一些面向对象的编程:

// 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); 

这样你可以将你的函数存储在容器中,你可以将它们传递给其他函数等等。