定制魏:QTWZPW,获取更多源码等
目录
题目
设计一个计算器软件,具备如下功能提示界面。
要求
- 设计出界面,注意界面名称最后为自己的姓名;(20分)
- 能够实现加、减、乘、除功能;(40分)
- 能够将十进制转换成相应的二级制、八进制、十六进制数;(20分)
4. 能够求解一元二次方程。(20分)
主要代码片段
#include <stdio.h> // 包含标准输入输出库
#include <math.h> // 包含数学函数库
#include <stdlib.h> // 包含标准库函数
long decimalToBinary(long decimalNum); // 声明十进制转二进制函数
long decimalToOctal(long decimalNum); // 声明十进制转八进制函数
char* decimalToHex(long decimalNum); // 声明十进制转十六进制函数
int main() { // 主函数开始
int choice; // 定义选项变量
double num1, num2, result; // 定义输入数和结果变量
while (1) { // 进入无限循环
printf("|-------------------------------|\n"); // 打印菜单
printf("|请选择你要的计算方法: |\n");
printf("|-------------------------------|\n");
printf("|加法请按_1 进制转换_5 |\n");
printf("|减法请按_2 求一元二次方程_6 |\n");
printf("|乘法请按_3 |\n");
printf("|除法请按_4 退出_0 |\n");
printf("|-------------------------------|\n");
printf("Please write down the number: \n"); // 提示用户输入选项
scanf("%d", &choice); // 读取用户选项
if (choice == 0) { // 如果选择退出
printf("感谢使用!\n"); // 打印退出信息
break; // 跳出循环
}
switch (choice) { // 根据选项进行操作
case 1: // 加法
printf("请输入两个数:\n"); // 提示用户输入两个数
scanf("%lf %lf", &num1, &num2); // 读取两个数
result = num1 + num2; // 计算结果
printf("结果为:%lf\n", result); // 打印结果
break; // 结束本次操作
case 2: // 减法
printf("请输入两个数:\n"); // 提示用户输入两个数
scanf("%lf %lf", &num1, &num2); // 读取两个数
result = num1 - num2; // 计算结果
printf("结果为:%lf\n", result); // 打印结果
break; // 结束本次操作
case 3: // 乘法
printf("请输入两个数:\n"); // 提示用户输入两个数
scanf("%lf %lf", &num1, &num2); // 读取两个数
result = num1 * num2; // 计算结果
printf("结果为:%lf\n", result); // 打印结果
break; // 结束本次操作
case 4: // 除法
printf("请输入两个数:\n"); // 提示用户输入两个数
scanf("%lf %lf", &num1, &num2); // 读取两个数
if (num2 != 0) { // 检查除数是否为0
result = num1 / num2; // 计算结果
printf("结果为:%lf\n", result); // 打印结果
} else {
printf("除数不能为0!\n"); // 若除数为0,打印错误信息
}
break; // 结束本次操作
case 5: // 进制转换
printf("请输入一个十进制数:\n"); // 提示用户输入十进制数
scanf("%lf", &num1); // 读取十进制数
printf("转换的进制(2/8/16):\n"); // 提示用户选择转换进制
scanf("%d", &choice); // 读取用户选择
switch (choice) { // 根据选择进行转换
case 2: // 二进制
printf("结果为:%ld\n", decimalToBinary((long)num1)); // 打印结果
break; // 结束本次操作
case 8: // 八进制
printf("结果为:%ld\n", decimalToOctal((long)num1)); // 打印结果
break; // 结束本次操作
case 16: // 十六进制
printf("结果为:%s\n", decimalToHex((long)num1)); // 打印结果
break; // 结束本次操作
default: // 其他情况
printf("无效的选择!\n"); // 打印错误信息
}
break; // 结束本次操作
case 6: // 求一元二次方程
printf("请输入一元二次方程的三个系数(a, b, c):\n"); // 提示用户输入系数
scanf("%lf %lf %lf", &num1, &num2, &result); // 读取系数
if (num1 == 0) { // 检查是否为一元二次方程
printf("不是一元二次方程!\n"); // 若不是,打印错误信息
} else {
double delta = num2 * num2 - 4 * num1 * result; // 计算判别式
if (delta > 0) { // 判别式大于0
double x1 = (-num2 + sqrt(delta)) / (2 * num1); // 计算第一个根
double x2 = (-num2 - sqrt(delta)) / (2 * num1); // 计算第二个根
printf("方程的根为:%lf, %lf\n", x1, x2); // 打印结果
} else if (delta == 0) { // 判别式等于0
double x = -num2 / (2 * num1); // 计算唯一根
printf("方程的根为:%lf\n", x); // 打印结果
} else {
printf("方程无实数根!\n"); // 判别式小于0,打印错误信息
}
}
break; // 结束本次操作
default: // 无效选项
printf("无效的选择!\n"); // 打印错误信息
}
}
return 0; // 返回主函数
}