赞
踩
定制魏:QTWZPW,获取更多源码等
目录
设计一个计算器软件,具备如下功能提示界面。
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; // 返回主函数
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。