C语言基础应用(四)选择结构

news2024/11/18 11:25:22

引言:

在日常生活中,我们时时刻刻面临着选择,在C语言中,如果我们需要判断条件从而实现不同的要求,我们就需要使用选择结构。
注:以下代码均未导入头文件,如果读者使用了代码,请记得导入:

#include <stdio.h>

一、用if实现选择结构

1.1 简单的if语句

Q:输入一个整数,如果这个数大于0,输出True
A:

int main() {
   printf("Input a number:\n");
   int a;
   scanf("%d",&a);
   if(a > 0) {
       printf("True");
   }
   return 0;
}

运行结果:
在这里插入图片描述
在这里插入图片描述
可以看到,当我们输入了正数时,程序输出了 True,实现了题目要求。
上面的

    if(a > 0)

就是对if的简单使用。我们可以看到,当a为正数时,符合了if里面的条件,则应该执行if后面的复合语句。
注:复合语句:
我们可以用{}把一些语句和声明部分括起来成为复合语句。

1.2 if语句的完整使用

if语句的一般形式如下:
if(表达式) 语句1
[else 语句2]

当然如果条件有更多,我们可以嵌套更多层if语句
即:
if(表达式) 语句1
[else if 语句2]
[else if 语句2]
[else 语句3]

Q:输入两个数,输出两个数较大的数。
A:

int main() {
    printf("Input two numbers:\n");
    int a,b;
    scanf("%d%d",&a,&b);
    if(a > b) {
        printf("Maximum is %d\n",a);
    } else {
        printf("Maximum is %d\n",b);
    }
    return 0;
}

运行结果:
在这里插入图片描述
上述的条件语句也就是,如果a>b那么就输出a,否则输出b。

二、三目运算符

三目运算符的一般形式是:
表达式1?表达式2:表达式3
也就是,如果表达式1为真,那么执行表达式2;否则执行表达式3。
针对1.2的问题,我们也可以使用三目运算符解决
A:

int main() {
    printf("Input two numbers:\n");
    int a,b;
    scanf("%d%d",&a,&b);
    int max;
    max=(a>b)?a:b;
    printf("max is %d\n",max);
    return 0;
}

运算结果:
在这里插入图片描述
也能实现我们的需求。

三、switch语句

switch语句是多分支选择语句,一般形式如下:
switch(表达式)
{
case 常量1 : 语句1
case 常量2 : 语句2
case 常量3 : 语句3
default : 语句4
}

Q:按照考试成绩的等级输出百分制分数段,A等为85分以上;B等为70 ~ 84分;C等为60 ~ 69分;D等为60分以下。
A:

int main() {
    char level;
    printf("Input level:\n");
    scanf("%c",&level);
    switch (level) {
        case 'A':
            printf("Grade is between 85 and 100.\n");
            break;
        case 'B':
            printf("Grade is between 70 and 84.\n");
            break;
        case 'C':
            printf("Grade is between 60 and 69.\n");
            break;
        case 'D':
            printf("Grade is under 60.\n");
            break;
        default:
            printf("level is error!");
    }
    return 0;
}

运行结果:
在这里插入图片描述
上面代码里的break,作用是结束当前case字句,如果没有break,将进行连续输出
如:

int main() {
    char level;
    printf("Input level:\n");
    scanf("%c",&level);
    switch (level) {
        case 'A':
            printf("Grade is between 85 and 100.\n");
//            break;
        case 'B':
            printf("Grade is between 70 and 84.\n");
//            break;
        case 'C':
            printf("Grade is between 60 and 69.\n");
//            break;
        case 'D':
            printf("Grade is under 60.\n");
//            break;
        default:
            printf("level is error!");
    }
    return 0;
}

运行效果:
在这里插入图片描述

需要注意的是:case后面的常量值不能重复。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day9 条件变量的基本使用

目录 条件变量 条件变量 应用场景&#xff1a;生产者消费问题&#xff0c;是线程同步的一种手段&#xff1b; 必要性&#xff1a;为了实现等待某个资源&#xff0c;让线程休眠&#xff0c;提高运行效率&#xff1b; 等待资源&#xff1a; //1、一直等待资源 int pthread_c…

linux 匿名文件 memfd_create

专栏内容&#xff1a;linux下并发编程个人主页&#xff1a;我的主页座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物&#xff0e;目录 前言 概述 原理 接口 代码演示 结尾 前言 本专栏主要分享linux下并发编程相关知识…

慌了!ChatGPT吃我饭,还要掀我碗?

ChatGPT面世&#xff0c;各种被AI取代“失业言论”笼罩在人们头顶&#xff0c;本文聚焦这一问题&#xff0c;推荐关注ChatGPT的小伙伴阅读。 一时间火爆全网的新晋网红——ChatGPT&#xff0c;就问&#xff1a;还有谁不认识&#xff1f; 谷歌计划在旗舰搜索引擎中添加对话式人…

TCP/UDP协议 (详解)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

网络安全之入侵检测

目录 网络安全之入侵检测 入侵检测经典理论 经典检测模型 入侵检测作用与原理 意义 异常检测模型&#xff08;Anomaly Detection&#xff09; 误用检测模型&#xff08;Misuse Detection&#xff09; 经典特征案例 ​编辑自定义签名 ​编辑 签名检查过程 检测生命周期…

提升 Prometheus 的高可用性:Thanos 的部署与实践!

背景 在高可用 prometheus&#xff1a;问题集锦文章中有简单提到 Prometheus 的高可用方案&#xff0c;尝试了联邦、Remote Write 之后&#xff0c;我们最终选择了 Thanos 作为监控配套组件&#xff0c;利用其全局视图来管理我们的多地域、300集群的监控数据。本文主要介绍 Th…

NC237662 葫芦的考验之定位子串(SAM + 后缀链接树上倍增)

题意&#xff1a; 给出一个字符串S&#xff0c;|S| ≤ 250000&#xff0c;给出 Q < 250000 次询问&#xff0c;每次需要回答 S[l, r] 在 S 中共出现了多少次。 思路&#xff1a; 如果使用 SAM&#xff0c;我们提前求出每个状态的 cnt[u]&#xff0c;询问就是要求我们快速…

Nuxt3中的中间件-middleware

参考&#xff1a;nuxt3中间件(middleware)详解 - 简书nuxt3中间件(middleware)详解 在项目中有时候需要在网站切换路由的过程中添加一些自定义的逻辑&#xff0c;比如权限什么的。这个时候可以使用nuxt的middleware。 ...https://www.jianshu.com/p/bd22637c6447 中间件的作用…

【算法系列之动态规划】子序列篇

300.最长递增子序列 力扣题目链接 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1…

Ubunutu18.04+Qt5.14+Dlib19.24+Opencv3.4.16实时人眼监测实验

文章目录1 前言2 效果3 Ubuntu18.04下Qt、Opencv、Dlib的配置3.0 Ubuntu18.04的安装以及一些基本配置3.1 Qt3.2 Opencv3.3 Dlib4 核心代码4.1 pro文件4.2 Widget.cpp4.3 fatiguedetect.cpp5 资源下载1 前言 在Ubuntu18.04实现的一个人眼监测小程序&#xff0c;使用Qt5.14、Dlib…

仿京东放大镜效果的实现

仿京东放大镜 &#xff08;1&#xff09; 整个案例可以分为三个功能模块 &#xff08;2&#xff09; 鼠标经过小图片盒子&#xff0c; 黄色的遮挡层 和 大图片盒子显示&#xff0c;离开隐藏2个盒子功能 &#xff08;3&#xff09;黄色的遮挡层跟随鼠标功能。 &#xff08;4&…

百度文心一言与Notion的比较(机器人通信的例子)

文心一言出来有一段时间了&#xff0c;也经常会去问问&#xff0c;感觉对于简单的语义理解还是可以&#xff0c;其答案对于一些常见的常识等还是可以给出不错的答案&#xff0c;但是在数学与代码等方面基本上很差&#xff0c;基本的贷款利率、微积分、没有理解语义的代码等都是…

一篇五分生信临床模型预测文章代码复现——Figure 10.机制及肿瘤免疫浸润(一)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

C++篇 ---- 命名空间namespace

由于在c语言中在定义时可能会出现重命名现象&#xff0c;造成空间冲突&#xff0c;c语言中有命名冲突&#xff1a;1 和库冲突。2 互相之间的冲突&#xff0c;变量命名冲突。所以c中就有了对其改进的关键字namespace&#xff0c;针对重定义&#xff0c;解决空间冲突。 文章目录命…

总结820

学习目标&#xff1a; 4月&#xff08;复习完高数18讲内容&#xff0c;背诵21篇短文&#xff0c;熟词僻义300词基础词&#xff09; 学习内容&#xff1a; 高等数学&#xff1a;巩固所学&#xff0c;1~10讲内容回顾 rule No.1:never lost your knowledge. rule No.2:never f…

C++基础语法(模板)

C的模板是什么&#xff1f;有什么用&#xff1f;如果你想知道问题的答案&#xff0c;那么看这篇博客就对了&#xff0c;在这篇博客中&#xff0c;我们将探讨泛型编程&#xff0c;C模板的具体内容 目录 模板概念 函数模板 显示实例化与隐式实例化 模板不支持声明和定义分离 类模…

104.(cesium篇)cesium卫星轨道模拟

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en"> <

【数据结构】带你细致理解八大排序

文章目录前言一.冒泡排序前一个数跟后一个数比较后一个数跟前一个数比较优化复杂度与稳定性二.插入排序初始化条件从第一个元素开始初始化条件从第二个元素开始复杂度与稳定性三.选择排序一趟选出一个最小的一趟选出一个最大的和一个最小的复杂度与稳定性四.堆排序建堆用向下调…

数据结构入门(C语言版)栈和队列之栈的介绍及实现

栈栈的概念栈的实现过程栈的结构体与接口的定义1、静态栈结构2、动态栈结构3、栈的接口定义栈的接口实现①初始化栈(StackInit)②入栈(StackPush)③出栈(StackPop)④栈顶(StackTop)⑤栈元素个数(StackSize)⑥检测栈是否为空(StackEmpty)⑦销毁栈(StackDestroy)结语栈的概念 栈…

【EXata】在 Visual Studio 2010 上编译与调试 EXata

一、在 VS2010 中编译 Exata 通过命令行的形式来编译调试 EXata 的方式太过麻烦&#xff0c;一次两次还好&#xff0c;时间长了慢慢就烦了&#xff0c;于是想着有没有什么方法能够简化这些操作&#xff0c;翻看手册&#xff0c;发现是可以在 IDE 中进行编译&#xff0c;于是就有…