存储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;
}
你可以做这样的事情:
#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;
}
你为什么不以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");
这是非常有帮助的,因为我们的教授没有教授“实际”的东西,并使我们在没有任何教学的情况下开展课程。我会试着研究switch case,但是如果我要使用if语句,我该怎么做呢? – REA98
@RomsEsteban给了你一个答案。 – Michi
答案已更新为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);
这样你可以将你的函数存储在容器中,你可以将它们传递给其他函数等等。
使用[STRCMP(http://www.cplusplus.com/reference/cstring/strcmp/)比较字符串(不串地址,这将是不同的) – amdixon
像任何其他语言功能,您需要在使用它们之前实际学习字符串。 – Lundin
你能否详细说明什么是strcmp以及如何使用它? – REA98