用C语言编写的基本计算器只能进行加法运算
我试着做一个基本的计算器,但每当我输入时,它就会加起来,而不是听操作员输入 我知道我的if和if-else语句不起作用,但我真的不明白为什么。当我编译时没有错误,我尝试过的每一种方法都会导致许多错误 代码如下:用C语言编写的基本计算器只能进行加法运算,c,calculator,C,Calculator,我试着做一个基本的计算器,但每当我输入时,它就会加起来,而不是听操作员输入 我知道我的if和if-else语句不起作用,但我真的不明白为什么。当我编译时没有错误,我尝试过的每一种方法都会导致许多错误 代码如下: #include <stdio.h> int main(void) { double num1; double num2; double x; double operator; printf("First number:\n"); scanf("%lf\n", &
#include <stdio.h>
int main(void) {
double num1;
double num2;
double x;
double operator;
printf("First number:\n");
scanf("%lf\n", &num1);
printf("Second number:\n");
scanf("%lf\n", &num2);
printf("Select operator:\n Division\n Multiplication\n Subtraction\n Addition\n");
scanf("%lf\n", &operator);
if (operator == '/' ) {
x=num1/num2;
}
else if (operator == '*') {
x=num1*num2;
}
else if (operator == '-') {
x=num1 - num2;
}
else {
x=num1 + num2;
}
printf("Result: %lf\n", x);
return 0;
}
#包括
内部主(空){
双num1;
双num2;
双x;
双算子;
printf(“第一个数字:\n”);
scanf(“%lf\n”、&num1);
printf(“第二个号码:\n”);
scanf(“%lf\n”、&num2);
printf(“选择运算符:\n除法\n乘法\n减法\n加法\n”);
scanf(“%lf\n”、&operator);
if(运算符=='/')){
x=num1/num2;
}
else if(运算符=='*'){
x=num1*num2;
}
else if(运算符=='-'){
x=num1-num2;
}
否则{
x=num1+num2;
}
printf(“结果:%lf\n”,x);
返回0;
}
干杯 首先,我要避免调用变量“operator”(这是C++中的一个关键字)。 这是您的变量:
双运算符;
在这里,您将其理解为双精度浮点数:
scanf(“%lf\n”、&operator);
现在您希望将其视为一个字符:
if(运算符=='-')
要解决此问题,请将运算符类型更改为char:
char算子;
并将其作为字符读取:
scanf(“%c\n”、&operator);
首先,我要避免调用变量“operator”(这是C++中的一个关键字)。
这是您的变量:
双运算符;
在这里,您将其理解为双精度浮点数:
scanf(“%lf\n”、&operator);
现在您希望将其视为一个字符:
if(运算符=='-')
要解决此问题,请将运算符类型更改为char:
char算子;
并将其作为字符读取:
scanf(“%c\n”、&operator);
发布的代码总是附加结果,因为所有比较(“/”、“-”、“*”)都不会与双精度进行比较
发布的代码总是附加结果,因为所有比较(“/”、“-”、“*”)都不会与双精度进行比较
谢谢!我不敢相信事情竟那么简单。还有一个问题,==是否只比较字符?或者“”指定了字符?将其更改为scanf(“%c”,&operator)
@GradyWhite==
,可以用于比较任何类型。引号生成一个<代码> char 常量,并且应该与另一个<代码> char < />进行比较。没有特别的理由避免使用<代码>运算符< /C>作为标识符,除非有一个现实的前景,即您的代码将被编译为C++。这个程序,如果用惯用的C++编写,将会非常不同。在所有<代码> SCANFF()/CUT>中,尾随<代码> \\n代码>应该被删除,否则代码> SCANFF()/CUT>块,直到下一个非空白空间输入。谢谢!我不敢相信事情竟那么简单。还有一个问题,==是否只比较字符?或者“”指定了字符?将其更改为scanf(“%c”,&operator)
@GradyWhite==
,可以用于比较任何类型。引号生成一个<代码> char 常量,并且应该与另一个<代码> char < />进行比较。没有特别的理由避免使用<代码>运算符< /C>作为标识符,除非有一个现实的前景,即您的代码将被编译为C++。这个程序,如果用惯用的C++编写的话,将会非常不同。在所有的代码> SCANFE()中,尾随<代码> >代码> <代码>应该被删除,否则代码> SCANFF()/Cube >块,直到下一个非空白空间输入。“添加而不是听我的操作符输入”。“语句不起作用”> >这有助于为您的特定情况提供答案。关于:scanf(“%lf\n”,&operator)代码>这试图读取一个双精度,但“运算符”是一个字符。建议:scanf(“%c\n”、&operator)编码>并将变量运算符
声明为字符
,而不是双精度
“添加而不是侦听我的运算符输入。”和“语句不起作用”-->发布使用的确切输入和看到的输出。这有助于为您的特定情况提供答案。关于:scanf(“%lf\n”,&operator)代码>这试图读取一个双精度,但“运算符”是一个字符。建议:scanf(“%c\n”、&operator)编码>并将变量运算符
声明为字符
,而不是双精度