c语言多功能计算软件170

定制魏: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;       // 返回主函数
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/541477.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Godot4.2】CanvasItem绘图函数全解析 - 3.绘制纹理

概述 前两节我们讲述了常见几何图形绘制以及对几何图形应用变换的基础知识。 本节我们来讲如何在CanvasItem中绘制纹理。 系列目录 0.概述1.绘制简单图形2.设定绘图变换3.绘制纹理4.绘制样式盒5.绘制字符和字符串6.TextLine和TextParagraph详解7.自定义节点TextBoard8.绘制点…

C语言 函数——函数封装与程序的健壮性

目录 函数封装&#xff08;Encapsulation&#xff09; 如何增强程序的健壮性&#xff1f; 如何保证不会传入负数实参&#xff1f; 函数设计的基本原则 函数封装&#xff08;Encapsulation&#xff09; 外界对函数的影响——仅限于入口参数 函数对外界的影响——仅限于一个…

MySQL前缀索引(3/16)

前缀索引 前缀索引&#xff1a;MySQL支持前缀索引&#xff0c;允许定义字符串的一部分作为索引。如果不指定前缀长度&#xff0c;索引将包含整个字符串。前缀索引可以节省空间&#xff0c;但可能会增加查询时的记录扫描次数&#xff08;因为会查询到多个前缀相同的数据&#x…

MySQL数据库的增删改查(进阶)

1.新增 将一个表中的内容插入到另一个表中. 这里需要确保查询集合的列数,类型,顺序要和插入表的列数,类型,顺序一致,这里列的名称可以不一样. values 替换成了select 查询的临时表. 2. 查询 2.1 聚合查询 2.1.1 聚合查询 函数 说明COUNT([DISTINCT] expr)返回…

python爬虫--------Beautiful Soup 案列(二十一天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

同城O2O系统搭建实战:外卖跑腿APP发全攻略

在同城服务领域&#xff0c;外卖和跑腿服务成为了人们生活中不可或缺的一部分。接下来小编将带领读者进入同城O2O系统搭建的实战领域&#xff0c;详细介绍如何打造一款外卖跑腿APP。 第一步&#xff1a;需求分析 这包括对目标用户群体的调研&#xff0c;明确用户的需求和痛点。…

FreeFileSync|本地自动备份设置教程,终于可以不用手动同步了

前言 昨天小白给各位小伙伴分享了FreeFileSync软件&#xff0c;由于篇幅过长&#xff0c;所以整个教程中并没有教小伙伴们如何设置自动同步的办法。 今天小白就来唠唠&#xff1a;如何让FreeFileSync自动同步。 教程分为几种&#xff1a; 开机自动同步 开机之后自动执行一次…

OpenHarmony南向嵌入式:【XR806开发板指导文档】

一. 简介 芯片介绍 XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片&#xff0c;支持OpenHarmony轻量设置系统。具有集成度高、硬件设计简单、BOM成本低、安全可靠等优点。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞…

【uniapp】省市区下拉列表组件

1. 效果图 2. 组件完整代码 <template><view class="custom-area-picker"><view

C语言函数指针应用——计算器(转移表)的使用

对与上一节&#xff0c;我们对指针函数已经有了深刻意识了&#xff1b;练一练吧 如果还没有学习到&#xff0c;也是没有关系的&#xff0c;可以看一看这一篇 C语言详解指针-CSDN博客https://blog.csdn.net/Asuku_/article/details/137690083希望能提高你对指针的理解 计算器的实…

在Windows下面的vscode配置cmake使用vcpkg包管理器

安装 vscode下载地址 cmake下载地址 vcpkg下载地址 创建CMake项目 // main.cpp #include <fmt/core.h>int main() {fmt::print("Hello World!\n");return 0; }// CMakeLists.txtcmake_minimum_required(VERSION 3.10)project(HelloWorld)find_package(fmt…

详解“国九条3.0版”重磅落地:A股这些方向或有新气象

围绕资本市场下一阶段的重大改革举措&#xff0c;正在从更高层面赫然开启。 4月12日&#xff0c;国务院发布《关于加强监管防范风险推动资本市场高质量发展的若干意见》&#xff08;以下简称“意见”&#xff09;&#xff0c;全文围绕新股上市发行、上市公司监管、退市机制、强…

nacos 安装保姆级教程

安装nacos nacosVersion:2.2.3 需要的java版本较高&#xff0c; 所以这里直接安装jdk17&#xff1b; 安装链接见nacos 和jdk 官网&#xff0c;具体选择下面图片中的两个版本哈 本来想直接传到csdn的&#xff0c;结果这边的资料审核还是有点繁琐&#xff0c;然后上传的速度也有点…

生产环境中秒杀接口并发量剧增与负载优化策略探讨

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 1. 实施限流措施 1.1 令牌桶算法&#xff1a; 1.2 漏…

精品资料-2024护网HVV实战教程资料合集(共20章)

以下是资料目录&#xff0c;如需下载&#xff0c;请前往星球获取&#xff1a;https://t.zsxq.com/19vwYrf4t 精品推荐&#xff0c;2024护网HVV实战教程资料合集&#xff0c;压缩包内涵大量实战资料&#xff0c;共20章。星球内会持续更新教程包。 01-HW介绍.zip 02-HTTP&Bu…

第六季:RTSP协议详解与实时流视频预览(2)

目录 前言1 网络传输基本知识1.1 OSI七层模型1.2 TCP/IP四层模型1.3 总结 2 RTSP协议详解 前言 经过上篇文章的学习&#xff0c;我们已经了解了H.264标准的基本组成与原理&#xff0c;知道了发送的数据的格式与组成&#xff0c;即NALU。但是数据的发送要通过RTSP协议进行发送&…

Project Euler_Problem 160_Factorial Trailing Digits_费马小定理,威尔逊定理,左右互搏

原题目&#xff1a; 题目大意&#xff1a;1e12的阶乘&#xff0c;不算末尾的0&#xff0c;后5位数字为多少 解题思路&#xff1a; 暴力运算也能算&#xff0c;就是有点慢&#xff0c;优化过后可能也得算个几十分钟 这里考虑使用威尔逊定理费马小定理 用这个方法我们就可以得到…

使用Riverpod在Flutter中创建Todo列表

使用Riverpod在Flutter中创建Todo列表 视频 https://youtu.be/mlbeSD1KSIo https://www.bilibili.com/video/BV1jj42197c8/ 前言 原文 https://ducafecat.com/blog/flutter-todo-list-with-riverpod-guide-02 学习如何使用Riverpod在Flutter中构建一个功能完整的Todo列表应用…

VMware EXSI

VMware ESXI是一款行业领先、专门构建的裸机hypervisor。 它直接通过安装在物理服务器上并将其划分为多个逻辑服务器&#xff0c;也就是虚拟机。 创建过程&#xff1a;就是F11Enter 输入账号密码 添加网卡 配置网卡地址 vsphere Client工具来连接EXSI EXSI资源分割&…

4. Django 探究FBV视图

4. 探究FBV视图 视图(Views)是Django的MTV架构模式的V部分, 主要负责处理用户请求和生成相应的响应内容, 然后在页面或其他类型文档中显示. 也可以理解为视图是MVC架构里面的C部分(控制器), 主要处理功能和业务上的逻辑. 我们习惯使用视图函数处理HTTP请求, 即在视图里定义def…