c语言多功能计算软件170

该文章描述了一个编程任务,要求设计一个具备加减乘除功能的计算器,以及将十进制转换为二进制、八进制和十六进制的功能,同时还包括一元二次方程的求解。文章提供了C语言的代码片段作为实现示例。
摘要由CSDN通过智能技术生成

定制魏:QTWZPW,获取更多源码等

目录

题目

要求

主要代码片段


题目

设计一个计算器软件,具备如下功能提示界面。

要求

  1. 设计出界面,注意界面名称最后为自己的姓名;(20分)
  2. 能够实现加、减、乘、除功能;(40分)
  3. 能够将十进制转换成相应的二级制、八进制、十六进制数(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;       // 返回主函数
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值