【C语言程序设计】选择结构程序设计

目录

前言

一、程序阅读

二、程序改错

三、程序设计

总结


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

前言

if语句的三种形式:

1. 第一种形式: if 语句只包含一个条件,当该条件为真(true)时,执行 if 语句块中的代码。
2. 第二种形式:if-else 语句包含两个条件,当第一个条件为真时,执行 if 语句块中的代码,否则执行 else 语句块中的代码。
3. 第三种形式:if-else-if 语句包含多个条件,当第一个条件为真时,执行第一个 if 语句块中的代码,否则检查第二个条件,第二个条件为真时执行第二个 if 语句块中的代码,否则继续检查下个条件,一直到所有条件都被检查过为止。

表达式的值在 switch 语句中只能是基本数据类型,如 int、char、枚举、bool 等。实型数据(浮点数)不能直接作为 switch 语句的表达式,因为 switch 语句在比较值时使用的是恒等比较,而实型数据的恒等比较容易出现精度问题。


一、程序阅读

#include <stdio.h>

int main() 
{
    int a, b, c, t;

    printf("输入3个整数的值: "); // 提示用户输入三个整数
    scanf("%d %d %d", &a, &b, &c); // 接收用户输入的三个整数

    if (a > b) // 如果第一个数大于第二个数,则交换它们的值
    {
        t = a;
        a = b;
        b = t;
    }

    if (a > c) // 如果第一个数大于第三个数,则交换它们的值
    {
        t = a;
        a = c;
        c = t;
    }

    if (b > c) // 如果第二个数大于第三个数,则交换它们的值
    {
        t = b;
        b = c;
        c = t;
    }
    
    printf("3个数按照从小到大排列为: %d %d %d\n", a, b, c); // 打印按照从小到大排列的三个数

    return 0;
}

运行结果:

输入:18 66 32

二、程序改错

程序中有错误,上机调试程序,修改有错误的语句行,并输出正确的运行结果。

修正后的代码:

#include <stdio.h>

int main() 
{
    int x;

    printf("请输入一个整数: ");
    scanf("%d", &x);

    if (x % 3 == 0 && x % 5 == 0)
        printf("yes !\n");
    else
        printf("no !\n");

    return 0;
}

修改后的程序中,修复了以下错误:

1.在使用scanf函数接收用户输入时,修正了缺少&符号的问题。

2.在if语句中,修正了比较运算符应该使用==而不是=的问题。

运行结果:

输入:15

三、程序设计

编写一个程序实现这样的功能:商店卖软盘,每片定价3.5元,按购买的数量可给予如下的优惠:购买满100片,优惠5%;购买满200片,优惠6%;购买满300片,优惠8%;购买满400片,优惠10%;购买500片以上,优惠15%。根据不同的购买量,打印应付货款。(用switch语句编程

实现代码:

#include <stdio.h> 

int main ()
{
    int x;
    float y, total;

    printf("请输入软盘购买数量:");
    scanf ("%d", &x);

    if (x < 0)
    {
        printf("你输入的值超出正常范围!");
    }
    else
    {
        switch (x / 100) 
        {
            case 0:
                y = 0;
                break;
            case 1:
                y = 0.05;
                break;
            case 2:
                y = 0.06;
                break;
            case 3:
                y = 0.08;
                break;
            case 4:
                y = 0.10;
                break;
            default:
                y = 0.15;
        }

        total = 3.5 * x * (1 - y);
        printf("应付价钱=%0.2f\n", total);
    }

    return 0;
}

运行结果:

输入:500

代码思路:

1. 首先,定义了三个变量:x是购买软盘的数量,y是折扣率(浮点数),total是最终的应付价钱(浮点数)。

2. 代码通过printf函数打印出提示信息,要求用户输入购买数量。

3. 然后使用scanf函数将用户输入的值存储到变量x中。

4. 接下来,代码通过if-else语句进行条件判断。如果x小于0,表示输入的值超出了正常范围,那么代码会打印一条错误信息。如果x大于等于0,则进入else语句块。

5. 在else语句块中,通过switch语句根据x除以100的商的值来确定折扣率y的取值。根据不同的商值,将y设置为不同的折扣率。如果商值为0,表示购买数量小于100个,那么折扣率y为0;如果商值为1,表示购买数量在100到199之间,那么折扣率y为0.05,以此类推。如果商值超过4,则表示购买数量大于等于500个,折扣率y为0.15。

6. 计算最终的应付价钱,将结果存储到变量total中。计算公式为:total = 3.5 * x * (1 - y),其中3.5是每个软盘的价格。

7. 最后,使用printf函数打印出应付价钱的结果,保留两位小数。

8. 程序执行完毕,返回0表示正常结束。


总结

当涉及到对不同情况进行处理和判断时,C语言中常用的语言结构是选择结构。选择结构的关键就在于判断条件。根据判断的条件是否成立,程序会执行其中一个分支里面的代码。
C语言中有两种常用的选择结构:if-else和switch-case。if-else语句用于针对一个条件判断,当条件为真时执行一个代码块,否则执行另一个代码块。switch-case语句用于根据一个表达式的值,在同的情况下执行不同的代码块。

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

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

相关文章

时间序列预测 — CNN-LSTM实现多变量多步光伏预测(Tensorflow)

目录 1 数据处理 1.1 导入库文件 1.2 导入数据集 1.3 缺失值分析 2 构造训练数据 ​3 模型训练 3.1 CNN-LSTM网络 3.2 模型训练 4 模型预测 专栏链接&#xff1a;https://blog.csdn.net/qq_41921826/category_12495091.html 1 数据处理 1.1 导入库文件 import scip…

一些paper工具帮你搞定日常科研工作

如果你是在校生&#xff0c;科研er 你的日常避免各种各样的pepers&#xff1b;找papers&#xff0c;读papers&#xff0c;写papers。这三部曲贯穿这你整个科研工作&#xff0c;如何在有限的时间里&#xff0c;能够高效的完成科研&#xff0c;且保质保量&#xff0c;我们需要一些…

C# WPF上位机开发(内嵌虚拟机的软件开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 学习过halcon的同学都知道&#xff0c;它不仅有很多的图像算子可以使用&#xff0c;而且调试很方便。每一步骤的调试结果&#xff0c;都可以看到对…

MES系统设备日常点检:提升设备管理效率与维护质量

一、MES系统设备日常点检概述 MES系统设备日常点检是指通过MES系统对设备进行定期的外观、功能、性能等方面的检查&#xff0c;以评估设备的运行状态和潜在问题。这种检查方式有助于及时发现设备故障和隐患&#xff0c;确保设备的正常运行&#xff0c;提高生产效率。 二、MES系…

公益众筹源码系统:水滴筹模式+完整的安装包+部署教程

今天小编i来非大家来介绍一款公益众筹源码系统&#xff0c;带有完整的搭建教程。 一、系统开发 1.需求分析&#xff1a;在开发公益众筹源码系统之前&#xff0c;我们首先进行了深入的需求分析&#xff0c;明确了系统的目标、功能、性能等方面的要求。 2.技术选型&#xff1a;根…

什么是泊松图像混合

泊松图像混合&#xff08;Poisson Image Editing&#xff09;的原理基于泊松方程。该方法旨在保持图像中的梯度一致性&#xff0c;从而在图像编辑中实现平滑和无缝的混合。以下是泊松图像混合的基本原理和公式&#xff1a; 泊松方程 泊松方程是一个偏微分方程&#xff0c;通常…

【头歌系统Python实验】经典函数实例

目录 第1关&#xff1a;递归函数 - 汉诺塔的魅力 第2关&#xff1a;lambda 函数 - 匿名函数的使用 第3关&#xff1a;Map-Reduce - 映射与归约的思想 如果对你有帮助的话&#xff0c;不妨点赞收藏评论一下吧&#xff0c;爱你么么哒&#x1f618;❤️❤️❤️ 第1关&#xff…

Leetcode刷题笔记题解(C++):BM11 链表相加(二)

思路&#xff1a;先对两个链表进行反转&#xff0c;反转求和注意进位运算&#xff0c;求和完成之后再进行反转得到结果 /*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) : val(x), next(nullptr) {}* };*/ #include <cstddef> class Soluti…

使用ffmpeg命令进行视频格式转换

1 ffmpeg介绍 FFmpeg 是一个非常强大和灵活的开源工具集&#xff0c;用于处理音频和视频文件。它提供了一系列的工具和库&#xff0c;可以用于录制、转换、流式传输和播放音频和视频。 FFmpeg 主要特点如下&#xff1a; 格式支持广泛&#xff1a;FFmpeg 支持几乎所有的音频和视…

AQS的应用

文章目录 1. 概述2. ReentrantLock 原理 什么是AQS 口述&#xff1a;全称是 AbstractQueuedSynchronizer&#xff0c;是一个框架&#xff0c;提供了这种 通用的同步器机制&#xff0c;它里面也是定义了很多的方法&#xff0c;像获取锁啊释放锁啊&#xff0c;其实释放啊获取啊是…

输出网络结构图,mmdetection

控制台输入&#xff1a;python tools/train.py /home/yuan3080/桌面/detection_paper_6/mmdetection-master1/mmdetection-master_yanhuo/work_dirs/lad_r50_paa_r101_fpn_coco_1x/lad_r50_a_r101_fpn_coco_1x.py 这个是输出方法里面的&#xff0c;不是原始方法。 如下所示&a…

Windows 下 PyTorch 入门深度学习环境安装与配置 GPU 版

1.确定自己的硬件信息&#xff0c;确定电脑有英伟达 (NVIDIA)显卡 在任务栏上右键打开任务管理器 2.下载安装 Anaconda &#xff08;建议安装迅雷下载&#xff0c;同时浏览器添加扩展 “迅雷Chrome支持”&#xff09; https://www.anaconda.com/ https://repo.anaconda.com/arc…

无需重启,修改Linux服务器时区

Linux修改服务器时区&#xff08;无需重启&#xff09; 1、复制命令&#xff1a;2、使用tzselect命令&#xff1a;3、使用date查看是否修改正确 1、复制命令&#xff1a; cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime2、使用tzselect命令&#xff1a; tzselect按照要…

GIT提交规范-范式和示例

关注公众号&#xff1a;”奇叔码技术“ 回复&#xff1a;“java面试题大全”或者“java面试题” 即可领取资料 主题&#xff1a;GIT提交规范 一、GIT提交范式 feat(功绩)&#xff1a; 新增 feature fix: 修复 bug docs: 仅仅修改了文档&#xff0c;比如 README, CHANGELOG, CO…

MISC之LSB

LSB隐写 简介 LSB隐写&#xff08;Least Significant Bit Steganography&#xff09;是一种隐写术&#xff0c;它通过将秘密信息嵌入到图像、音频或视频等多媒体文件中的最低有效位中来隐藏信息。在数字图像中&#xff0c;每个像素由红、绿、蓝三个通道的颜色值组成。每个颜色…

构建自己专属seata-server 镜像(分布式事务)?(第二篇)

码云地址&#xff1a;https://gitee.com/jessyxu/yc-seata-server 一.镜像构建前确保自己的seata-server 能够启动成功&#xff01; seata-server 官方建议&#xff1a;JDK版本不低于 1.8.0_281版本&#xff0c;兼容JDK 8、JDK11,可使用OpenJDK 8/11、Alibaba Dragonwell 8/、…

Java - Spring中Bean的循环依赖问题

什么是Bean的循环依赖 A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你&#xff0c;你也依赖我。 比如&#xff1a;丈夫类Husband&#xff0c;妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 Spring解决循环依赖的机理 Spring为什么可以解决set s…

MSPM0L1306例程学习-ADC部分(2)

MSPM0L1306例程学习系列 使用的TI的官方例程&#xff0c;即SDK里边包含的例程代码。 可以到TI官网下载并且安装SDK: https://www.ti.com.cn/tool/cn/download/MSPM0-SDK/ MCU使用的是MSPM0L1306, 对于ADC部分&#xff0c;有10个例程&#xff1a; 前边讲了3个例程&#xff0c…

企业选CRM系统,这3个关键点你一定不能错过

在充满竞争的商业市场中&#xff0c;企业需要一种强大的工具来管理客户关系&#xff0c;从而提高销售效率。CRM客户关系管理软件就是企业所需要的。然而仅仅是在国内&#xff0c;CRM的供应商就超过了一千家&#xff0c;那么应该怎样选择适合企业的CRM系统&#xff1f; 一、软件…

设计模式——观察者模式(Observer Pattern)

概述 观察者模式是使用频率最高的设计模式之一&#xff0c;它用于建立一种对象与对象之间的依赖关系&#xff0c;一个对象发生改变时将自动通知其他对象&#xff0c;其他对象将相应作出反应。在观察者模式中&#xff0c;发生改变的对象称为观察目标&#xff0c;而被通知的对象称…