work03_1 实现一个简单的计算器,能够处理加法、减法、乘法和除法
编写一个程序实现一个简单的计算器,能够处理加法、减法、乘法和除法。
输入:用户输入两个数字(可以带小数)和一个操作符(+、-、*、/)。
输出:显示计算的表达式及结果。
注意以下几个要求:
代码可以直接写在main函数里,不需要提取函数。
输入的表达式应当符合格式要求,应当正常录入两个操作数和一个运算符,否则直接退出程序。
在进行除法操作时,需要保证除数不为0,若除数为0,则直接退出程序。
提示:考虑switch结构,选择不同的运算符。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
/*
计算器,能够处理加法、减法、乘法和除法。
输入:用户输入两个数字(可以带小数)和一个操作符(+、-、*、/)。
输出:显示计算的表达式及结果。
注意以下几个要求:
1. 代码可以直接写在main函数里,不需要提取函数。
2. 输入的表达式应当符合格式要求,应当正常录入两个操作数和一个运算符,否则直接退出程序。
3. 在进行除法操作时,需要保证除数不为0,若除数为0,则直接退出程序。
*/
int main(void) {
double num1, num2;
char operator;
double result;
printf("输入计算器的表达式(例如:1+1):");
int ret = scanf("%lf %c %lf", &num1, &operator,&num2);
//ret == 3 是用于判断输入是否 数字 字符 数字的格式.
if (ret != 3) {
printf("输入的表达式格式不合法!\n");
return 1;
}
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':{
if (num2 != 0) {
result = num1 / num2;
}
else {
printf("Error: 除数为0!\n");
return 1;
}
break;
}
default:
printf("Error: 无法识别的操作符!\n");
return 1;//程序异常退出
}
printf("计算的结果是: %.2lf %c %.2lf = %.2lf\n", num1, operator,num2, result);
return 0;
}
在上面简单计算器题目的基础上,实现以下功能:
1.在进行完一次运算后,询问用户是否继续运算。只要用户输入y/Y就可以继续运算,而不是只能计算一次。
2.当用户的输入有误时,不退出程序,而是要求用户继续输入表达式计算。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
/*
上面简单计算器题目的基础上,实现以下功能:
1.在进行完一次运算后,询问用户是否继续运算。只要用户输入y/Y就可以继续运算,而不是只能计算一次。
2.当用户的输入有误时,不退出程序,而是要求用户继续输入表达式计算。
可以考虑使用do...while循环结构,配合循环控制变量来解决,代码仍然都写在main函数中即可。
*/
int main(void) {
double num1, num2;
char operator;
double result;
char flag = 'y'; //flag: 控制循环是否继续的变量,初始化为'y'
do
{
printf("请输入需要计算的表达式(例如:1 + 1): ");
int ret = scanf("%lf %c %lf", &num1, &operator, &num2);
if (ret != 3) {
printf("Error: 输入的表达式格式不合法!请重新输入。\n\n");
while (getchar() != '\n')
; // 清空缓冲区至行尾,避免影响下次输入
continue; // 继续下一次循环
}
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/': {
if (num2 != 0) {
result = num1 / num2;
}
else {
printf("Error: 除数为0!请重新输入表达式。\n\n");
continue;
}
break;
}
default:
printf("Error: 无法识别的操作符!请重新输入表达式。\n\n");
continue;
}
printf("计算的结果是:%.2lf %c %.2lf = %.2lf\n\n", num1, operator, num2, result);
printf("是否继续计算?(输入'y/Y'继续,其他任意键结束): ");
while (getchar() != '\n')
; // 清空缓冲区至行尾,避免影响下次输入
scanf(" %c", &flag);
printf("\n");
} while (flag == 'y' || flag == 'Y');
return 0;
}