c,#includeint main() {, int a, b;, char op;, printf("Enter an expression (e.g., 3 + 4): ");, scanf("%d %c %d", &a, &op, &b);, switch(op) {, case '+': printf("%d,", a + b); break;, case '-': printf("%d,", a b); break;, case '': printf("%d,", a b); break;, case '/': if (b != 0) printf("%d,", a / b);, else printf("Division by zero error!,");, break;, default: printf("Invalid operator!,");, }, return 0;,},
“
在C语言中实现一个存储器计算器,可以设计为支持基本算术运算(加、减、乘、除)以及存储和调用功能的程序,以下是一个简单的示例代码,展示了如何实现这样的计算器:
#include <stdio.h> #include <stdlib.h> // 定义一个结构体来存储操作数和运算符 typedef struct { double operand1; double operand2; char operator; } CalculatorMemory; // 函数声明 void performOperation(double num1, double num2, char op, double result); void storeResult(CalculatorMemory memory, double result); double recallResult(CalculatorMemory memory); int main() { CalculatorMemory memory = {0}; // 初始化存储器 double num1, num2, result; char op; int choice; while (1) { printf(" 存储器计算器 "); printf("1. 输入第一个数字 "); printf("2. 输入第二个数字 "); printf("3. 选择运算符 (+, -, , /) "); printf("4. 执行计算并显示结果 "); printf("5. 存储结果到存储器 "); printf("6. 从存储器中调用结果 "); printf("7. 退出 "); printf("请输入你的选择: "); scanf("%d", &choice); switch (choice) { case 1: printf("请输入第一个数字: "); scanf("%lf", &num1); break; case 2: printf("请输入第二个数字: "); scanf("%lf", &num2); break; case 3: printf("请输入运算符 (+, -, , /): "); scanf(" %c", &op); // 注意在%c前面的空格,用于忽略之前的换行符 break; case 4: performOperation(num1, num2, op, &result); printf("计算结果: %.2lf ", result); break; case 5: storeResult(&memory, result); printf("结果已存储到存储器。 "); break; case 6: result = recallResult(&memory); printf("从存储器中调用的结果是: %.2lf ", result); break; case 7: exit(0); default: printf("无效的选择,请重新输入。 "); } } return 0; } // 执行计算的函数 void performOperation(double num1, double num2, char op, double result) { switch (op) { case '+': result = num1 + num2; break; case '-': result = num1 num2; break; case '': result = num1 num2; break; case '/': if (num2 != 0) { result = num1 / num2; } else { printf("错误:除数不能为零。 "); result = 0; // 或者你可以返回一个特殊的错误码 } break; default: printf("无效的运算符。 "); result = 0; // 或者你可以返回一个特殊的错误码 } } // 存储结果到存储器的函数 void storeResult(CalculatorMemory memory, double result) { memory->operand1 = result; // 这里只存储了结果,可以根据需要扩展存储更多信息 } // 从存储器中调用结果的函数 double recallResult(CalculatorMemory memory) { return memory->operand1; // 返回存储的结果 }
1、结构体定义:CalculatorMemory
结构体用于存储操作数和运算符,虽然在这个简单示例中只存储了最终结果,但可以根据需要扩展以存储更多的信息。
2、函数实现:
performOperation
函数根据用户输入的操作符对两个操作数进行相应的数学运算,并将结果存储在result
指针指向的变量中,如果遇到除零错误,会打印错误信息并返回0(或特殊错误码)。
storeResult
函数将计算结果存储到CalculatorMemory
结构体的operand1
成员中。
recallResult
函数从CalculatorMemory
结构体的operand1
成员中返回存储的结果。
3、主函数逻辑:通过无限循环提供菜单选项,允许用户输入数字、选择运算符、执行计算、存储结果到存储器以及从存储器中调用结果,当用户选择退出时,程序结束。
这个示例是一个简化的实现,实际应用中可能需要更复杂的错误处理和功能扩展。
为了提高用户体验,可以添加更多的输入验证和提示信息。
如果需要在嵌入式系统或其他特定环境中使用,可能需要根据硬件平台进行相应的调整和优化。