解决。谢谢!
我是C编程的初学者。我写了一个简单的计算器代码,它的工作正常。这是代码 -
#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;
}
我希望如果用户输入了错误的操作符,那么程序而不是结束会返回到开始。知道怎么做吗? 感谢。
答案 0 :(得分:1)
我使用有效的运算符创建一个字符数组,在切换条件结束时我们检查它是否有效运算符,否则它会要求用户再次进入运算符:
# 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;
}
答案 1 :(得分:0)
您可以使用do while循环来完成此操作。
int main()
{
char ch;
do
{
/* code for calculator*/
...
...
printf("Enter your choice(y/n)?\n");
scanf("\n%c", &ch);
}while(ch == 'y' || ch == 'Y');
return 0;
}
答案 2 :(得分:0)
使用递归
#include<stdio.h>
void main() {
计算();
}
int calculate(){
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:
calculate();
}
return 1;
}
答案 3 :(得分:0)
你可以做的是采用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循环,因为您不知道用户需要在函数上调用多少次。
编写此代码的更好方法是将整个开关案例写入函数中,并将数字和运算符传递给所述函数。然后在main()块中,您可以使用while循环来调用该函数,如果要继续或终止该程序,请检查您的响应。开始写作函数总是一个好习惯,特别是因为你只是C语言的初学者。