除功能; 2.要求运算式整体输入; 3.具有- -定的容错能力; 4.按回车键或等号键则显示计算结果 1.基本功能 a. 有提示文字,如“请输入算式: ",“出错,请重新输入”,“结果如下”等;b.可以实现基本的“2+3”、 “45"等运算; c.可以实现带 小数点的运算,计算结果保留小数点后有效数字3位;d.如果输入特殊字符例如#, &等时会提示错误; a.计算结果可以选择保 留作为继续运算的数字; b. 可以进行开根号与三角函数的运算; c.如果输 入错误字符,提示后自动删除。 可以直接输入"1+23-4*4/8+9"之类的算式进行直接运算;
时间: 2024-03-26 19:35:06 浏览: 169
好的,以下是使用 C 语言编写的实现基本要求的计算器程序,可以进行加减乘除运算和带小数点的运算。
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
int main() {
char input[100];
double result = 0.0;
int i, len, decimal = 0, flag = 1;
printf("请输入算式:");
fgets(input, 100, stdin);
len = strlen(input);
for (i = 0; i < len; i++) {
if (isdigit(input[i])) {
if (decimal == 0) {
result = result * 10 + (input[i] - '0');
} else {
result = result + (input[i] - '0') * pow(0.1, decimal);
decimal++;
}
} else if (input[i] == '.') {
decimal = 1;
} else if (input[i] == '+' || input[i] == '-' || input[i] == '*' || input[i] == '/') {
if (flag && i > 0) {
printf("出错,请重新输入\n");
return 0;
}
flag = 1;
switch (input[i]) {
case '+': result += atof(input + i + 1); break;
case '-': result -= atof(input + i + 1); break;
case '*': result *= atof(input + i + 1); break;
case '/': result /= atof(input + i + 1); break;
}
} else if (isalpha(input[i])) {
if (input[i] == 's' && input[i + 1] == 'i' && input[i + 2] == 'n') {
result = sin(result);
i += 2;
} else if (input[i] == 'c' && input[i + 1] == 'o' && input[i + 2] == 's') {
result = cos(result);
i += 2;
} else if (input[i] == 't' && input[i + 1] == 'a' && input[i + 2] == 'n') {
result = tan(result);
i += 2;
} else if (input[i] == 's' && input[i + 1] == 'q' && input[i + 2] == 'r' && input[i + 3] == 't') {
result = sqrt(result);
i += 3;
} else {
printf("出错,请重新输入\n");
return 0;
}
} else if (!isspace(input[i])) {
printf("出错,请重新输入\n");
return 0;
} else {
flag = 0;
}
}
printf("结果如下:%.3f\n", result);
return 0;
}
```
程序使用 `fgets` 函数接受用户输入的算式,并逐个字符进行处理。当遇到数字时,根据小数点的位置计算出具体的数值;当遇到运算符时,根据运算符的类型计算出结果;当遇到字母时,根据字母的类型计算出结果;当遇到空格时,跳过该空格。同时,程序还可以进行容错处理,例如当输入的算式不符合要求时,输出提示信息并退出程序。
注意,在进行运算符的计算时,需要使用 `atof` 函数将字符转换为浮点数进行计算。另外,在进行三角函数和开根号的计算时,需要包含头文件 `<math.h>` 才能使用相应的函数。
阅读全文