系列目录
上一篇:白骑士的C语言教学高级篇 3.5 性能优化
在本项目中,我们将设计并实现一个简单的计算器程序,涵盖程序设计与实现、用户输入处理、算术运算与结果显示。该计算器可以进行基本的加减乘除运算,并能处理用户的连续输入。
程序设计与实现
首先,我们需要设计计算器的基本结构和功能。我们将创建一个命令行程序,用户可以输入简单的算术表达式,程序会解析并计算结果,然后将结果显示给用户。
程序的主要模块包括:
- 用户输入处理模块
- 算术运算模块
- 结果显示模块
用户输入处理
用户输入处理模块负责接收用户输入的算术表达式,并将其拆分成操作数和操作符。这部分需要注意输入的合法性和错误处理。以下是用户输入处理的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
// 判断字符是否为运算符
int isOperator(char ch) {
return ch == '+' || ch == '-' || ch == '*' || ch == '/';
}
// 提取操作数
double getOperand(char *input, int *index) {
double operand = 0.0;
while (isdigit(input[*index]) || input[*index] == '.') {
operand = operand * 10 + (input[*index] - '0');
(*index)++;
}
return operand;
}
// 获取操作符
char getOperator(char *input, int *index) {
char operator = input[*index];
(*index)++;
return operator;
}
int main() {
char input[100];
printf("请输入算术表达式(例如 3 + 5):\n");
fgets(input, sizeof(input), stdin);
int index = 0;
double operand1 = getOperand(input, &index);
char operator = getOperator(input, &index);
double operand2 = getOperand(input, &index);
// 处理运算结果
double result = 0.0;
switch (operator) {
case '+': result = operand1 + operand2; break;
case '-': result = operand1 - operand2; break;
case '*': result = operand1 * operand2; break;
case '/': result = operand1 / operand2; break;
default: printf("无效的运算符\n"); return 1;
}
// 显示结果
printf("结果: %lf\n", result);
return 0;
}
算术运算与结果显示
- 算术运算模块:负责执行基本的加减乘除运算,并将计算结果返回给主程序。我们将使用 ‘switch‘ 语句来处理不同的运算符,并进行相应的运算;
- 结果显示模块:负责将计算结果格式化并输出给用户。为了提高用户体验,程序可以处理一些特殊情况,比如除数为零等错误。
以下是算术运算与结果显示的示例代码:
double calculate(double operand1, char operator, double operand2) {
double result = 0.0;
switch (operator) {
case '+': result = operand1 + operand2; break;
case '-': result = operand1 - operand2; break;
case '*': result = operand1 * operand2; break;
case '/':
if (operand2 != 0) {
result = operand1 / operand2;
}
else {
printf("错误: 除数不能为零\n");
exit(1);
}
break;
default:
printf("无效的运算符\n");
exit(1);
}
return result;
}
int main() {
char input[100];
printf("请输入算术表达式(例如 3 + 5):\n");
fgets(input, sizeof(input), stdin);
int index = 0;
double operand1 = getOperand(input, &index);
char operator = getOperator(input, &index);
double operand2 = getOperand(input, &index);
// 处理运算结果
double result = calculate(operand1, operator, operand2);
// 显示结果
printf("结果: %lf\n", result);
return 0;
}
总结
通过本项目,我们实现了一个简单的计算器程序,涵盖了程序设计、用户输入处理、算术运算与结果显示等模块。这不仅让我们巩固了C语言的基础知识,也提升了我们对实际项目开发的理解和能力。在实际开发中,可以根据需要扩展计算器的功能,例如支持更多的运算符和复杂表达式处理等。
下一篇:白骑士的C语言教学实战项目篇 4.2 文件加密与解密