1.设计一个计算器,除了基本的数学运算(加、减、乘、除、取余)外,再加上xy、ex、log(x)、log10(x)等运算。 2.本程序一旦运行,就开始计时,程序退出时,结束计时,并在退出前告知用户本次程序运行了多长时间。 C语言
时间: 2024-11-09 09:29:51 浏览: 17
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
设计一个简单的命令行计算器,包括基本数学运算和科学函数,可以按照以下步骤进行:
1. 定义结构体,存储操作符和对应的处理函数:
```c
typedef enum {
OP_ADD,
OP_SUBTRACT,
OP_MULTIPLY,
OP_DIVIDE,
OP_REMAINDER,
OP_XY,
OP_EXPONENT,
OP_LOG,
OP_LOG10
} Operation;
typedef void (*OperatorFunc)(double x, double y, double *result);
struct CalculatorOperation {
Operation op;
OperatorFunc func;
};
```
2. 实现操作函数:
```c
void add(double x, double y, double *result) { *result = x + y; }
void subtract(double x, double y, double *result) { *result = x - y; }
// ... 以此类推,为其他运算编写对应函数
void xy(double x, double y, double *result) { *result = x * pow(y, 2); } // 这里假设xy表示y的平方
// ... 其他科学函数也类似,如exp(x) = e^x 和 log(x), log10(x) = ln(x)/ln(10)
```
3. 主循环,获取用户输入并调用相应的函数计算结果:
```c
#include <stdio.h>
#include <time.h>
int main() {
struct CalculatorOperation operations[] = {
{ OP_ADD, add },
{ OP_SUBTRACT, subtract },
// ... 其他运算
{ OP_XY, xy },
// ... 科学函数
};
double num1, num2;
char input[8];
time_t start_time;
printf("Welcome to the calculator!\n");
while (true) {
printf("Enter an operation (e.g., '+', '-', 'xy'): ");
fgets(input, sizeof(input), stdin);
input[strlen(input)-1] = '\0'; // Remove newline character
if (input[0] == '\0' || strcmp(input, "exit") == 0) break; // 用户输入"exit"或空行退出
for (Operation op : operations) {
if (strcmp(input, op.op_str()) == 0) {
printf("Enter two numbers: ");
scanf("%lf %lf", &num1, &num2);
time(&start_time);
op.func(num1, num2, &num2); // 计算结果
time_t end_time = time(NULL);
double elapsed_time = difftime(end_time, start_time) / CLOCKS_PER_SEC;
printf("Result: %.2f\nElapsed Time: %.2fs\n", num2, elapsed_time);
break;
}
}
}
printf("Program ended.\n");
return 0;
}
```
这里假设已经实现了`op_str()`函数将操作符转换为字符串形式。注意实际项目中还需要处理错误情况,如非法输入。
阅读全文