定制魏: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) { // 检查除数是否为0result = 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) { // 判别式大于0double x1 = (-num2 + sqrt(delta)) / (2 * num1); // 计算第一个根double x2 = (-num2 - sqrt(delta)) / (2 * num1); // 计算第二个根printf("方程的根为:%lf, %lf\n", x1, x2); // 打印结果} else if (delta == 0) { // 判别式等于0double x = -num2 / (2 * num1); // 计算唯一根printf("方程的根为:%lf\n", x); // 打印结果} else {printf("方程无实数根!\n"); // 判别式小于0,打印错误信息}}break; // 结束本次操作default: // 无效选项printf("无效的选择!\n"); // 打印错误信息}}return 0; // 返回主函数
}