作者 颜晖
单位 浙大城市学院
输入一个四则运算表达式,输出运算结果,要求对除数为0的情况作特别处理。题目保证输入与输出均在双精度范围内。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间没有空格,操作数的数据类型为实型。
输出格式:
在一行中输出表达式的运算结果,保留两位小数。
如果除法分母为0,则输出错误信息“Divisor can not be 0!”;如果输入了除加减乘除以外的非法运算符,则输出错误信息“Unknown operator!”。
输入样例1:
3.1+4.8
输出样例1:
7.90
输入样例2:
98/0
输出样例2:
Divisor can not be 0!
输入样例1:
123%3
输出样例1:
Unknown operator!
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
char expression[20]; // 假设表达式长度不超过20个字符
char operator;
double operand1, operand2, result;
// 读取一行输入,假设输入格式正确且长度不超过19个字符(留一个字符给'\0')
scanf("%19s", expression);
// 提取操作数和运算符
// 注意:这里假设输入格式严格符合题目要求,即没有空格,且运算符只有一个字符
sscanf(expression, "%lf%c%lf", &operand1, &operator, &operand2);
// 将运算符转换为小写,以便统一处理(虽然题目没有明确要求,但这是一个好习惯)
operator = tolower(operator);
// 根据运算符执行相应的运算
switch (operator)
{
case '+':
result = operand1 + operand2;
break;
case '-':
result = operand1 - operand2;
break;
case '*':
result = operand1 * operand2;
break;
case '/':
if (operand2 == 0)
{
printf("Divisor can not be 0!\n");
return 0; // 提前退出程序
}
result = operand1 / operand2;
break;
default:
printf("Unknown operator!\n");
return 0; // 提前退出程序
}
// 输出运算结果,保留两位小数
printf("%.2f\n", result);
return 0;
}
流程图如下: