Linux--C语言之分支结构

文章目录

  • 一、分支结构
    • (一)概念
    • (二)条件构建
      • 1.关系表达式:
      • 2.逻辑表达式:
      • 3.常量/变量:值是否非0,取值(0|1)
    • (三)选择结构的形式
      • 1.单分支
      • 2.双分支
        • (1)三目运算符
      • 3.多分支
      • 4.switch
      • 5.switch语句的case穿透:
  • 二、总结
  • 三、扩展
    • (一)条件表达式中的运算符优先级
    • (二)设置vim中tab字符数
      • 设置vim默认tab长度

一、分支结构

​ 分支结构:又被称之为选择结构

(一)概念

​ 选择结构:根据条件成立与否,选择相应的操作。

(二)条件构建

1.关系表达式:

​ 是指用关系运算符将两个表达式连接起来组成的有意义的式子,即含有关系运算符的表达式(>,<,>=,<=,!=,==)

2.逻辑表达式:

​ 用逻辑运算符将关系表达式或逻辑量连接起来构成的有意义的式子,即含有逻辑运算符的表达式(&&,||,!),往往是用来构建复杂的复合条件,比如:

if(year % 100 == 0 && year % 4 !=0) // 这种既含有关系表达式,又含有逻辑表达式的条件叫做复合条件 

3.常量/变量:值是否非0,取值(0|1)

​ 注意:类似以下写法,是无效的,没有意义的。

if(x+y) // 编译通过,但是没有实际意义,不建议这样写
if(5*6)

(三)选择结构的形式

1.单分支

​ 语法:

if(条件表达式)
{语句1;
}

​ 说明: 条件表达式成立,执行语句1,否则跳过该分支结构。单分支条件不满足可以不执行。

​ 流程图:

在这里插入图片描述

​ 例子:

int a = 5;
if(a < 0)
{a = -a;
}
printf("a=%d\n",a);

​ 例子:

/**
* 需求:从键盘输入一个字符,如果输入的是英文大写字母,则将它转换成小写字母后输出,否则输出原来输入的字符
*/
#include <stdio.h>
int main()
{// 声明一个变量,存放从键盘录入的字符char c;printf("请输入一个英文字母:\n");scanf("%c",&c);// 判断if(c >= 'A' && c <= 'Z'){// c = c + 32;c += 32;}printf("输入的字符是:%c\n",c);return 0;
}

2.双分支

​ 语法:

if(条件表达式)
{语句1}
else
{语句2;
}

​ 说明: 条件表达式成立,执行语句1,否则执行语句2。双分支不管条件是否满足,都要执行。

​ 流程图:

在这里插入图片描述

​ 例子:

#include <stdio.h>
int main(void)
{// 声明三个变量来存放计算数double x,a,y;// 通过键盘录入x,aprintf("请输入两个数值:\n");scanf("%lf,%lf",&x,&a);// 检验除数if(x != 0 && a != 0){y = 1.0/x + 1.0/a;}else{y = 10000;}// 输出printf("y=%f\n",y);return 0;
}
(1)三目运算符

​ 语法:

表达式1 ? 表达式2 : 表达式3;

​ 说明:?: 条件运算符,主要可以简化双分支为同一变量赋值的操作。

​ 求值过程:先计算表达式1的值,非0,则将表达式2的结果作为条件运算符的最终结果;否则将表达式3的结果作为条件运算符最终结果

​ 案例1:

#include <stdio.h>
int main(void)
{// 需求:求a,b两个数中最大数// 写法1:正常写法int a = 5,b = 3;if(a > b){printf("最大数是:%d\n",a);}else{printf("最大数是:%d\n",b);}// 写法2:省略{}int a1 = 5,b1 = 3;if(a1 > b1)printf("最大数是:%d\n",a1);elseprintf("最大数是:%d\n",b1);// 写法3:三目运算符int a2 = 5,b2 = 3;int ret = a2 > b2 ? a2 : b2;printf("最大数是:%d\n",ret);return 0;
}

​ 案例2:

#include <stdio.h>
int main(void)
{// 需求:输入两个实数,按代数值由 小到大的顺序输出这两个实数。// 声明变量,存储操作数int a,b;printf("请输入两个数值作为操作数:\n");scanf("%d,%d",&a,&b);// 校验// 方式1if(a > b){printf("由小到大的顺序是:%d,%d\n",b,a);}else{printf("由小到达的顺序是:%d,%d\n",a,b);}// 方式2// 创建一个临时变量,用来存放交换信息int t = 0;if(a > b){t = a;a = b;b = t;}printf("由小到大的顺序是:%d,%d\n",a,b);return 0;
}

​ 案例3:

#include <stdio.h>
int main(void)
{// 需求:输入3个数a,b,c,要求按由小到大的顺序输出这3个数// 声明变量,用来存放操作数int a,b,c,tmp;printf("请输入三个整数:\n");scanf("a=%d,b=%d,c=%d",&a,&b,&c);// 条件判断if(a > b){tmp = a;a = b;b = tmp;}if(a > c){tmp = a;a = c;c = tmp;}if(b > c){tmp = b;b = c;c = tmp;}printf("a,b,c三个数按照由小到大的顺序是:%d,%d,%d\n",a,b,c);return 0;
}

3.多分支

​ 语法:

if(条件1)
{语句1;
} else if(条件2)
{语句2;
}
...
else 
{语句n+1;
}

​ 流程图:

在这里插入图片描述

​ 案例1:

#include <stdio.h>
int main(void)
{// 需求:编一程序,要求输入一个x值,输出y值// 方式1:嵌套的if..int x,y;printf("请输入一个整数:\n");scanf("%d",&x);// 条件判断if(x < 0){y = -1;}else{// x >= 0if(x == 0){y = 0;}else{y = 1;}}printf("方式1:x=%d,y=%d\n",x,y);// 方式2:多分支if..else if....else..// 条件判断if(x < 0){y = -1;}else if(x == 0){y = 0;}else{y = 1;}printf("方式2:x=%d,y=%d\n",x,y);return 0}

​ 案例3:

#include <stdio.h>
/**
* 需求:高校要求粤嵌对实训学生根据实训成绩进行评级范围:0 <= score <= 100;评级:score >= 90 优秀score >= 80 良好score >= 70 中等score >= 60 及格score < 60 不及格
*/
int main(void)
{// 声明一个变量,存储成绩int score; printf("请录入学生成绩:\n");scanf("%d",&score);// 对score进行合法校验if(score >= 0 && score <= 100){// 对合法输入的成绩进行评级if(score >= 90){printf("优秀\n");}else if(score >= 80){printf("良好\n");}else if(score >= 70){printf("中等\n");}else if(score >= 60){printf("及格\n");}else{printf("不及格\n");}}else{printf("成绩录入不合法!\n");}return 0;
}

4.switch

​ 语法:

switch(表达式) // 不能是布尔型 和 浮点型
{case 常量表达式1:语句体1;break;case 常量表达式2:语句体2;break;...case 常量表达式n:语句体n;break;default:语句体n+1;break;// 可以省略
}

​ 流程图:

在这里插入图片描述

​ 说明:

​ ⑴ switch后括号内的表达式可以是任何类型的表达式;

​ ⑵ 若表达式的值与某个常量表达式的值相等时,执行此case后面的语句;若没有相等的值时,执行default后面 的语句;

​ ⑶ 每个case后面的常量表达式的值都必须不相同,否则出现矛盾;

​ ⑷ 各个case 和default出现的次序不影响执行结果;

​ ⑸ case后面的语句中如果没有break语句,则执行完本case后的语句会接着执行下面的case(case穿透) ;

​ ⑹ 多个case可共用一组语句。

​ 注意:

​ (1)表达式一般写一个变量,变量的值是一个确定的常量。

​ (2)当遇到break或者switch语句的右大括号时,switch语句结束。

​ (3)表达式中的数据类型:char,short,int,long,long long,不能是浮点型。

​ 表达式和常量的数据类型要一致(支持隐式转换),比较是否相同。

​ 案例1:

/*
需求:根据成绩进行评级
score <= 100;
评级:90 <= score < 100 优秀 90~99/10 == 9 && 100/10 ==1080 <= score < 90 良好 80~89/10 == 870 <= score < 80 中等 70~79/10 == 760 <= score < 70 及格 60~69/10 == 6score < 60 不及格
*/
#include <stdio.h>
int main(void)
{int score;// 成绩printf("请输入实训成绩:\n");scanf("%d",&score);if(score >= 0 && score <= 100){// 对成绩进行加工int l = score / 10;switch(l){case 10:// 100分case 9:// 90~99分printf("优秀\n"); // 这里:多个case共用一块代码break;case 8:printf("良好\n");break;case 7:printf("中等\n");break;case 6:printf("及格\n");break;default:printf("不及格\n");}}else{printf("成绩录入不合法!\n");}return 0;
}

​ 案例2:

/*
需求:实现一个简易计算器,要求实现+,-,×,/运算
*/
#include <stdio.h>
int main()
{printf("简易计算器 v1.0\n");printf("请输入两个操作数:\n");double x,y;// 存放计算数char ch;// 运算符scanf("%lf,%lf",&x,&y);scanf("%c",&ch);// 消除上面产生的最后一个回车符printf("请输入运算符:(+、-、.*、/)\n");scanf("%c",&ch);// 计算switch(ch){case '+':printf("%.2lf+%.2lf=%.2lf\n",x,y,x+y);break;case '-':printf("%.2lf-%.2lf=%.2lf\n",x,y,x-y);break;case '.':case '*':printf("%.2lf*%.2lf=%.2lf\n",x,y,x*y);break;case '/':if(y == 0){printf("除数不能为0\n");}else{printf("%.2lf/%.2lf=%.2lf\n",x,y,x/y);}break;default:printf("输入错误!");}return 0;
}

5.switch语句的case穿透:

​ (1)case穿透:当case后的break被省略;就会直接执行它后面紧跟的case中的语句(不会判断表达式是否和它后面的case常量是否相同),这样的现象称之为case穿透。

​ (2)default语句一般放在所有case之后,表明所有的case都不成立时,执行default中的语句;default语句可以放在switch语句{}内的任意位置。

二、总结

​ 1.如果只需要一个判断结果,使用单分支

​ 2.如果需要两个判断结果,且只能有两个判断结果,使用双分支

​ 3.如果需要判断N个结果中的某几个,或者所有,使用多分支

三、扩展

(一)条件表达式中的运算符优先级

​ 逻辑非(!) > 算数运算符 (±*/%)>关系运算符(> < >= <= != == )> 逻辑运算符(&&、||)> 赋

值运算符(=、+=)

(二)设置vim中tab字符数

设置vim默认tab长度

  1. 打开终端;

  2. 输入 vim~/.vimrc命令,按回车键。这将创建一个名为.vimrc的文件(如果尚不存在)或打开现有文件夹;

  3. 在文件夹中添加以下内容来设置tab长度,例如设置为4个空格:

    set tabstop = 4
    set shiftwidth = 4
    set expandtab
    

​ set tabstop = 4 设置tab停止的长度为4个空格,set shiftwidth = 4设置自动缩进长度也是4个空格,set expandtab设置 使用空格而不是制表符进行缩进;

  1. 保存并关闭文件。在vim编辑器中,按下Esc键,然后在英文状态下输入“:wq”,最后按回车键;
  2. 重新启动终端或运行source ~/.vimrc 命令以应用更改。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea项目注册在nacos错误:Cannot determine local hostname

一开始想把项目注册在nacos上&#xff0c;启动报错是这样的&#xff0c;而且yml文件也不生效&#xff0c;因为默认端口是8080&#xff0c;我在yml文件中写了8081没用&#xff0c;正好nacos的配置也在yml文件中。各种百度&#xff0c;各种依赖添加删除&#xff0c;反复启动没用 …

振德医疗选择泛微千里聆RPA,助力电商、人事业务流程自动化

振德医疗用品股份有限公司成立于1994年&#xff0c;中国A股上市公司&#xff0c;是医用敷料和感控防护产品主要的供应商之一。 &#xff08;图片素材来自振德医疗官网&#xff09; 振德医疗的业务在线上线下齐发力。目前拥有5个国内生产基地&#xff0c;3个海外工厂&#xff0…

SQL Server 2022的游标

《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;》图书介绍-CSDN博客 《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) 游标是SQL Serv…

分布式知识总结(一致性Hash算法)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 一致性Hash算法 假如有三台服务器编号node0、node1、node2&…

【系统维护】Dll文件修复工具使用教程,Windows系统必备!

一、dll文件是什么 dll文件是是一种Windows操作系统下的可执行文件格式&#xff0c;包含可由多个程序同时使用的代码和数据的文件&#xff0c;它的主要作用是实现代码和数据的共享&#xff0c;从而节省内存和硬盘空间&#xff0c;并提高程序的性能和可维护性 二、如何解决dll文…

云计算实训26——部署LVS负载均衡项目

LVS LVS是linux virtural server的简称——免费、开源、四层负载均衡 工作原理&#xff1a; 通过linux达到负载均衡好和linux操作系统实现高性能高可用的linux服务集群&#xff0c;具有良好的可靠性、可扩展性、可操作性、可扩展性、从而实现以低廉的成本实现最优的性能。LV…

PTA 7-21 求特殊方程的正整数解

7-21 求特殊方程的正整数解&#xff08;15分&#xff09; 本题要求对任意给定的正整数N&#xff0c;求方程的全部正整数解。 输入格式&#xff1a; 输入在一行中给出正整数N&#xff08;≤10000&#xff09;。 输出格式&#xff1a; 输出方程的全部正整数解&#xff0c;其…

Wise Registry Cleaner:程序员必备的电脑加速工具!

前言 但你知道吗&#xff1f;随着时间的推移&#xff0c;Windows注册表就像是一个不断膨胀的宇宙&#xff0c;里面充满了无效、过时或残留的“星际垃圾”&#xff1b;这些看似不起眼的碎片&#xff0c;却在悄然间拖慢了你的电脑速度&#xff0c;让系统变得不那么“听话”&#…

CSS3下拉菜单实现

导航菜单&#xff1a; <nav class"multi_drop_menu"><!-- 一级开始 --><ul><li><a href"#">Power</a></li><li><a href"#">Money</a></li><li><a href"#"…

React + React-tsparticles + Tsparticles完成炫酷的登录特效

效果(动态) npm i react-tsparticles2.12.2 npm i tsparticles2.12.0 注意:最好和上面的版本一样,不然会出现一个报错,具体如何解决的话去官网吧,上面的版本是没有问题的 代码块 总计6个代码块, options里面是相关粒子的配置 完整代码 import ./index.sass import { Form, Inp…

【简历】宜宾某学院简历:通过率低,JVM是必考点,不能写了解

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这是一份25届的宜宾某二本学院的Java简历&#xff0c;那么这个简历&#xff0c;因为说二本的校招&#xff0c;主体在小公司&#xff0c;…

Redis的过期策略与内存淘汰机制详解

文章目录 Redis的过期策略1. 定时删除2. 惰性删除3. 定期删除 Redis的内存淘汰机制1. noeviction2. volatile-random3. volatile-ttl4. volatile-lru5. volatile-lfu6. allkeys-random7. allkeys-lru8. allkeys-lfu LRU与LFU算法总结 Redis作为一种高性能的键值对存储系统&…

OJ-0813

题目 示例&#xff1a; 输入&#xff1a; 1-2abcd 输出&#xff1a; -1参考 import java.util.Arrays; import java.util.HashSet; import java.util.Scanner; import java.util.Set; import java.util.Stack;public class Main {// 保存数字的栈static Stack<Long> nu…

Qt使用lupdate工具生成.ts文件

Qt提供了lupdate工具&#xff0c;用于从源代码中提取需要翻译的字符串【1】&#xff0c;并生成或更新.ts文件 注解【1】&#xff1a;使用tr()函数&#xff08;或者QCoreApplication::translate()等其他相关的翻译函数&#xff09;来标记所有需要翻译的文本。例如&#xff1a; …

WEB应用(十五)---文件包含

文件包含的概念 在各种开发语言中都提供了内置的文件包含函数&#xff0c;可以使得开发人员在一个代码文件中直接包含&#xff08;引入&#xff09;另外一个代码文件。 由于文件包含可以达到复用和方便修改的目的&#xff0c;在代码设计中常常使用。 大多数情况下&#xff0…

Ethercat学习-SOEM主站源码解析(DC部分)

文章目录 SOEM DC模式源码简介示例用图ecx_porttimeecx_parentportecx_configdc如果从站不支持DC如果从站支持DC SOEM DC模式源码简介 示例用图 本文中都会围绕着这个图来讲&#xff0c;从站的port编号依次为0&#xff0c;3&#xff0c;1&#xff0c;2 在SOEM中&#xff0c;与…

【vulnhub】Broken: Gallery靶机

靶机安装 下载地址&#xff1a;Broken: Gallery ~ VulnHub 信息收集 靶机IP发现 nmap 192.168.93.0/24 端口扫描 nmap -A 192.168.93.167 -p- 目录扫描 dirsearch -u http://192.168.93.167 页面访问&#xff0c; 没有可用的信息 尝试22端口的ssh进行爆破 hydra -L roc…

算法的学习笔记——二进制中 1 的个数(牛客JZ15)

&#x1f600;前言 在计算机科学中&#xff0c;二进制是计算和存储数据的基础。理解二进制中的基本运算有助于我们解决各种编程问题。一个经典的问题是&#xff1a;给定一个整数&#xff0c;如何快速计算该整数的二进制表示中1的个数。 &#x1f3e0;个人主页&#xff1a;尘觉主…

【计算机毕设】基于SpringBoot的教育局综合信息管理平台-学生端

&#x1f497;博主介绍&#xff1a;✌全平台粉丝5W,高级大厂开发程序员&#x1f603;&#xff0c;博客之星、掘金/知乎/华为云/阿里云等平台优质作者。 【源码获取】关注并且私信我 【联系方式】&#x1f447;&#x1f447;&#x1f447;最下边&#x1f447;&#x1f447;&…

在Windows上用Visual Studio编译OpenCV

在Windows上编译开源项目&#xff0c;有时候让人痛不欲生&#xff0c;有时候却出奇地顺利。OpenCV属于后者。本文记录这次愉快的过程。 注&#xff1a;OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它提供了大…