C计算器代码问题
解决了。谢谢 我是C编程的初学者。我写了一个简单的计算器代码,它工作得很好。这是密码-C计算器代码问题,c,C,解决了。谢谢 我是C编程的初学者。我写了一个简单的计算器代码,它工作得很好。这是密码- #include<stdio.h> int main() { char operator; double firstNumber,secondNumber; printf("Enter an operator (+, -, *,/): \n"); scanf("%c", &operator); switch(operator)
#include<stdio.h>
int main() {
char operator;
double firstNumber,secondNumber;
printf("Enter an operator (+, -, *,/): \n");
scanf("%c", &operator);
switch(operator)
{
case '+':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f + %.2f = %.2f",firstNumber, secondNumber, firstNumber + secondNumber);
break;
case '-':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f - %.2f = %.2f",firstNumber, secondNumber, firstNumber - secondNumber);
break;
case '*':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f * %.2f = %.2f",firstNumber, secondNumber, firstNumber * secondNumber);
break;
case '/':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f / %.2f = %.2f",firstNumber, secondNumber, firstNumber / secondNumber);
break;
default:
printf("Error! operator is not correct.\n");
}
return 0;
}
我希望,如果用户输入了错误的运算符,那么程序将返回到开始,而不是结束。你知道怎么做吗?
谢谢。您可以通过使用do while循环来实现这一点 int main { char ch; 做 { /*计算器代码*/ ... ... 打印机输入您的选择Y/n?\n; 扫描\n%c,&ch; }whilech='y'| ch='y'; 返回0;
}我创建了一个包含有效运算符的字符数组,在切换条件结束时,我们检查其运算符是否有效。如果无效,它将要求用户在另一时间输入运算符:
# include<stdio.h>
# include <string.h>
int main()
{
char operator;
double firstNumber, secondNumber;
char operators[] = "-+*/";
bool isOperator = false;
while (!isOperator)
{
printf("Enter an operator (+, -, *,/): \n");
scanf("%c", &operator);
switch (operator)
{
case '+':
printf("Enter two numbers: ");
scanf("%lf %lf", &firstNumber, &secondNumber);
printf("%.2f + %.2f = %.2f", firstNumber, secondNumber, firstNumber + secondNumber);
break;
case '-':
printf("Enter two numbers: ");
scanf("%lf %lf", &firstNumber, &secondNumber);
printf("%.2f - %.2f = %.2f", firstNumber, secondNumber, firstNumber - secondNumber);
break;
case '*':
printf("Enter two numbers: ");
scanf("%lf %lf", &firstNumber, &secondNumber);
printf("%.2f * %.2f = %.2f", firstNumber, secondNumber, firstNumber * secondNumber);
break;
case '/':
printf("Enter two numbers: ");
scanf("%lf %lf", &firstNumber, &secondNumber);
printf("%.2f / %.2f = %.2f", firstNumber, secondNumber, firstNumber / secondNumber);
break;
default:
printf("Error! operator is not correct.\n");
}
char* res;
res = strchr(operators,operator);
if (res != NULL)
{
isOperator = true;
}
else
{
isOperator = false;
}
}
return 0;
}
使用递归
#include<stdio.h>
}您可以做的是执行一个while循环和一个小条件语句
char choice ='y';
while(choice=='y'||choice=='Y')
{
switch(operator)
{
case '+':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f + %.2f = %.2f",firstNumber, secondNumber, firstNumber + secondNumber);
break;
case '-':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f - %.2f = %.2f",firstNumber, secondNumber, firstNumber - secondNumber);
break;
case '*':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f * %.2f = %.2f",firstNumber, secondNumber, firstNumber * secondNumber);
break;
case '/':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f / %.2f = %.2f",firstNumber, secondNumber, firstNumber / secondNumber);
break;
default:
printf("Error! operator is not correct.\n");
printf("Do you want to continue? Press y for yes and n for no");
scanf("%c",&choice);
break;
}
return 0;
}
希望这有帮助!
这是解决问题的一个非常简单的方法。在用C编写任何程序时,请始终记住程序的流程。如果你想让你的计算器一直运行,直到你告诉它停止,那么一定要使用循环。它将根据您的需要不断迭代代码段。在您的示例中,while或do-while循环更可取,因为您不知道用户需要调用函数多少次
编写此代码的更好方法是将整个开关盒写入一个函数,并将数字和运算符传递给所述函数。然后,在主块中,您可以使用while循环来调用函数,并检查您的响应,如果您想继续或终止程序。开始编写函数总是一个好习惯,尤其是因为你只是C语言的初学者。你已经学习了循环吗?你需要一个循环。如果用户输入了无效的运算符,则需要返回并读取输入。在C中对循环进行Google搜索。特别是,您可能希望使用类似Do{…}while;或者当。。。{…}.@rohan saini检查这个解决方案,我认为你想要的是错误的,这不是递归,这是错误的。我在stackover flow中添加评论时遇到了麻烦。我编辑了答案。很抱歉
char choice ='y';
while(choice=='y'||choice=='Y')
{
switch(operator)
{
case '+':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f + %.2f = %.2f",firstNumber, secondNumber, firstNumber + secondNumber);
break;
case '-':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f - %.2f = %.2f",firstNumber, secondNumber, firstNumber - secondNumber);
break;
case '*':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f * %.2f = %.2f",firstNumber, secondNumber, firstNumber * secondNumber);
break;
case '/':
printf("Enter two numbers: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
printf("%.2f / %.2f = %.2f",firstNumber, secondNumber, firstNumber / secondNumber);
break;
default:
printf("Error! operator is not correct.\n");
printf("Do you want to continue? Press y for yes and n for no");
scanf("%c",&choice);
break;
}
return 0;
}