当前位置: 首页 > news >正文

第五章 流程控制 Pro

五、流程控制

        1、条件语句

一、if语句(三种形式)

1、单分支语句:

        if (表达式)语句;      //表达式可以是任何表达式 0和非0     多条语句加{ }构成复合语句

2、双分支语句

        if(表达式)

                语句1;

         else

                语句2;

3、多分支语句

    (1)一般形式:if_else_if   形式

        if(表达式1)语句1;

        else if (表达式2) 语句2;

        else if(表达式3) 语句3;

        [else                        语句n;]

注意区别:if(a==5)  判断       

                if(a=5)赋值

                if(a)   if(a!=0)

(2) if嵌套形式

                if ()

                        if() 语句1;

                        else 语句2;

                else

                        if ()语句1;

                        else 语句2;

#include <stdio.h>void main(){
int m,x=3,y=4,z=5;
if(x>y) m=x;   //判断3大于4 不成立向下执行if(y<z) m=y; //判断4小于五成立 将y的4赋值给melse m=z;printf("%d",m); //m=4
}

2、空语句与复合语句

空语句即只有一个分号,它通常用于占位,为以后补充代码预留,是合法的语句。

if (x); //合法      if (x) {}//合法     if (x) {}//合法

    复合语句用于将一组语句视为  一条(一个整体) ,通常用于分支和循环中。

 3、 switch+break

#include <stdio.h>void main(){switch (表达式) {    //表达式只能是整型和字符型case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;case 常量表达式3:语句n;break;default:语句;break;}
}

       二、功能:

        1、计算表达式的值;

        2、值与某常量表达式的值相等,转常量表达式后面语句执行;直到遇break或switch结束时退出,期间不再进行同级别case判断。

        3、若均不相等,执行default部分,若无default,则switch语句什么也不做。

                三、知识点

                1、表达式的值必须是确定的,且应与case后面的常量为同类型变量,可以是字符型、整型;

                                        不可是实型,实型没有精确值

                2、case后面加空格,每个常量表达式后面有冒号;

                3、每个case后面的常量值不能相同;

                4、各个case后的语句可以是多个语句,可不用花括号括起来;

                5、不能漏掉break(如果需要);

                6、多case可共用同一组语句;

                7、 case后的值决定了入口, break决定了出口

                8、switch允许嵌套,break只能跳出紧包裹着switch结构;

                9、如果所有语句都有break ,则很容易用if-else语句表示

#include <stdio.h>void main(){int x=1,y=0,a=1,b=0;switch (x)       //x为1{case 1:  //执行switch (y)  //y=0执行{case 0:b++;  //b=1case 1:a++;break;//b=1,a=2   跳出case 2:b++;break;}case 2:a++;b++;break;  //b=2.a=3case 3:a++;b++;}printf("a=%d,b=%d\n",a,b);
}

        

#include <stdio.h>int main(void){int a=2,b=1;switch (a+1)   //3{ case 2:b=b+2;break;case 3:b=b*3; //1*3=3case 4:b=b*4;break; //3*4=12case 5:b=b+5;}printf("b=%d",b);
}

#include <stdio.h>int main(void){
int n='c';switch (n) {case 'c':case 'C':printf("pass");case 'd':case 'D':printf("fail");break;default:printf("error");break;}
}

      

 4、 if(x)与if(!x)的正确理解

        两个等价条件的四种形式

if(x) 等价于if(x!=0) 同理,while(x)等价于while(x!=0)

if(!x)等价于if(x==0)同理, while(!x)等价于while(x==0)

要区分!(逻辑,取反)和!=(关系符,不等于)

5、循环结构的三个语句

while    当型

do... while  直到型

 for 循环

 while循环语句

一、一般形式:

        while (表达式)    //可以是任何表达式,主要用于判断0和非0

                        循环体语句;

二、执行过程

        (1)计算表达式的值

        (2)如果表达式为真,执行循环体语句

        (3)如果表达式值为假,则退出循环

三、说明:

        1、表达式任意,表达式省略时,会有语法错误;

        2、先判断表达式,再执行循环体;

        3、循环部分为多个语句时,必须用大括号构成复合语句;

四、while关键点

        循环条件的初态

                while(循环条件){

                        循环体语句;

                                (一定要有改变循环条件的语句)

                }

        do while循环语句

一、一般形式

        do

                循环体语句;

             while(表达式);

二、执行过程

                1、执行循环体的语句

                2、计算循环控制表达式的值,如果表达式为真,则返回

                3、如果表达式值为假,则退出循环,执行循环后面的语句

三、注意:

1、先执行循环体,再判断表达式,循环体至少执行一次;

2、while后面要有分号;

for循环

一、一般形式

for (表达式1;表达式2;表达式3)

                                循环体语句;

二、执行过程

        (1)求解表达式1;

    (2)判断表达式2;

    (3)表达式2为真,执行循环体语句,求解表达式3;转(2),若为假,结束循环,执行下面语句;

1、结构体类型及变量定义与赋值

用途:把不同类型的数据组合成一个整体

1.定义结构体类型:

struct <结构体名>{

        成员表列

};

 由程序设计者指定了一个结构体类型struct Student可以用它定义变量它包括num,name,sex,age,score,addr等不同类型的成员

结构体的成员可以是另一个结构体

2.结构体变量的定义

定义结构体变量后,系统分配内存单元,单元个数为所有成员所占单元个数之和。

        三种定义方法:

1、先定义结构体类型再定义变量名

2、在定义结构体类型的同时定义变量

3、直接定义结构体类型变量(不出现结构体名)

struct student stu,a[3],*p;

3.结构体变量的引用(访问)

1、结构体变量名.成员名

        (*指针变量).成员                                   3种形式等价

        指针变量→成员

 a.age=21;strcpy(a.name, "zs"); //变量名.成员名:
("p).age=21; stropy(("p).name,"zs");//(*指针名).成员名: 
p->age=21; strepy(p->name,"zs"); " //指针名->成员名: 

2、结构体变量的成员还是结构体,则层层访问;

        stu.birthday.year

3、对结构体变量的成员可以像普通变量一样进行各种运算(根据成员的类型决定可以进行的运算) ;

4·结构体变量的赋值,输出和输入

        1、相同类型的结构体变量可以互相赋值

        2、不能将一个结构体变量作为一个整体进行输入输出。必须一个一个成员按其类型输入输出;

5,可在定义结构体类型同时自定义给类型别名:方便定义该类型变量

2019.设有定义:struct sk(int a; float b; }data,*p=&data;

则对data中成员b的引用不正确的是( )A. data.bB.p-> data.b C.(*p).b D.p->b

二、共用体

使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。

1.共同用体类型的定义

union 共用体类型标识符{类型标识符1 成员名1;类型标识符2 成员名2;类型标识符n 成员名n;};

       2. 共用体变量的定义

                共用体变量的定义

                        union data a, b, c;

                        (三种定义形式同结构体)

        占内存数是成员最大字节数;

        3,共用变量成员的引用:同结构体

重点

1、同一内存在每一瞬时只能存放其中一种类型的成员;

2、起作用的是最后一次存放的成员,不能作为函数参数;

3、只能对第一个成员初始化;

4、共用体变量的地址和它的各成员的地址都是同一地址;

5、不能对共用体变量名赋值,也不能企图引用变量名来得到一个值;

6、共用体类型可以出现在结构体类型定义中,作为共用体的成员。反之,结构体也可以出现在共用体类型定义中,作为共用体的成员;

共用体与结构体定义形式相似,但含义不同

1、结构体变量所占的内存长度等于各成员所占的内存长度之和。(每个成员分别占有自己的内存)

2、共用体变量所占的内存长度等于最长的成员的长度。

2018,当说明一个共用体变量时,系统分配给它的内存分配的是

A.第一个成员所需内存空间

B.各成员所需内存空间之和

C.各成员所需内存空间的最大值

D.最后一个成员所需内存空间

2017,当说明一个结构体变量时,系统分配给它的内存

A.各成员所需内存空间的最大值

B.各成员所需内存空间之和

C.结构中第一个成员所需内存空间

D.结构中最后一个成员所需内存空间

 1、宏(无参、带参)

程序在正式编译前,要进行预处理,对程序中所有出现的宏名使用宏定义中的字符串去替换,称宏替换或宏展开。

全屏宏替换时,特别注意的一点就是将宏定义中的"字符串"视为真正的字符串,进行原样替换,切忌不要人为计算!

调用带参宏时,首先进行宏展开,再实参代换形参。

宏不分配内存,不占用程序运行时间,只占用编译时间。

形参不分配内存,不必做类型说明

2、文件包含include

要想使用系统提供的库函数,必须将库函数对应的头文件通过include引入到当前文件中。

头文件引入的两种写法


-include <stdio.h>:标准格式,系统到存放C库函数头文件所在目录寻找要包含的文件(配置)。- include "my.c" :系统首先在当前目录寻找包含文件,找不到再按标准方式查找。

—一般使用系统库函数使用<>,包含自定义文件用双引号。

     

 2019.若程序中调用库函数strlen() ,则必须包含头文件

A.  stdio.h  (输出输出)

B. stdlib.h   (时间函数随机函数)

C. string.h  (四个函数)

D.  math.h   (数学函数)

相关文章:

第五章 流程控制 Pro

五、流程控制 1、条件语句 一、if语句&#xff08;三种形式&#xff09; 1、单分支语句: if &#xff08;表达式&#xff09;语句&#xff1b; //表达式可以是任何表达式 0和非0 多条语句加{ }构成复合语句 2、双分支语句 if(表达式) 语句1&#xff1b; else 语句2…...

CSS之实现线性渐变背景

1. background: linear-gradient() background: linear-gradient是CSS中用于创建线性渐变背景的属性&#xff0c;这个属性允许你定义一个在元素的背景中进行渐变的效果&#xff0c;可以从一个颜色过渡到另一个颜色。 基本语法 background: linear-gradient(direction, color-…...

软考 系统架构设计师系列知识点之特定领域软件体系结构DSSA(7)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之特定领域软件体系结构DSSA&#xff08;6&#xff09; 所属章节&#xff1a; 第7章. 系统架构设计基础知识 第5节. 特定领域软件体系结构 相关试题 5. 特定领域软件架构&#xff08;Domain Specific Software Archite…...

CentOS-7网卡重启后关闭的解决方法

第一步查找网卡&#xff1a; ip addr 如下图&#xff1a; 于是发现网卡eth0。 第二步进入网卡配置目录并进行配置&#xff1a; cd /etc/sysconfig/network-scriptsvim ifcfg-eth0 第三步改配置如下图&#xff1a; 然后每次重启后网卡会自动启动。...

Linux CentOS7 用户组管理

Linux操作系统基于多用户的设计理念&#xff0c;允许多个用户同时使用系统资源。用户是登录系统并使用系统资源的个体&#xff0c;其都有自己的账户和密码。用户组是将众多用户归类为一组。Linux中的用户和用户组是系统安全和权限管理的基础。本文将探讨Linux中用户组的创建和管…...

C++算法:前缀和基础

相关 源码测试用例下载 https://download.csdn.net/download/he_zhidan/88430716 包括4个压缩包&#xff0c;初始代码&#xff0c;实现前缀和&#xff0c;实现前缀积&#xff0c;实现前缀异或。都是在前者的基础上修改的。 本博文是CSDN学院课程的讲义 https://edu.csdn.net/c…...

vue和react的区别

目录 1. 数据绑定 Vue React 2. 组件化 Vue React 3. 学习曲线 4. 状态管理 Vue React 5. 社区和生态系统 3. 学习曲线 4. 状态管理 Vue React 5. 生态系统 6. 社区和支持 7. 性能 8. 生产环境性能 9.语法和模板: 结论 当涉及到前端开发框架时&#xff0c…...

STM32 之 HAL 库串口 USART 丢数据及ORE卡死的解决方案

STM32 之 HAL 库串口 USART 丢数据及ORE卡死的解决方案_hal_uart_error_ore-CSDN博客...

递归最小二乘法RLS

参考&#xff1a;RLS递归最小二乘法(Recursive Least Squares)_hymwgk的博客-CSDN博客...

Apache Doris (三十九):Doris数据导出 - MySQL dump导出

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录...

【Nginx32】Nginx学习:随机索引、真实IP处理与来源处理模块

Nginx学习&#xff1a;随机索引、真实IP处理与来源处理模块 完成了代理这个大模块的学习&#xff0c;我们继续其它 Nginx 中 HTTP 相关的模块学习。今天的内容都比较简单&#xff0c;不过最后的来源处理非常有用&#xff0c;可以帮我们解决外链问题。另外两个其实大家了解一下就…...

vue3后台管理框架之集成sass

我们目前在组件内部已经可以使用scss样式,因为在配置styleLint工具的时候,项目当中已经安装过sass sass-loader,因此我们再组件内可以使用scss语法!!!需要加上lang="scss" <style scoped lang="scss"></style> 接下来我们为项目添加一些…...

无需付费开会员,一个Python程序实现PDF转高清图片

今天需要将一个PDF导出为图片&#xff0c;但是一般的在线转换网站导出的图片清晰度都不高&#xff0c;分辨率只有1241*1754&#xff0c;这就导致输出的图片放大后字体是有点模糊的&#xff0c;所以就想到了使用Python中的PyPDF2库来处理PDF文件&#xff0c;以及Pillow库来处理图…...

为分布式系统设计数据库

【squids.cn】 全网zui低价RDS&#xff0c;免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 数据库设计是微服务和云原生解决方案的关键因素&#xff0c;因为基于微服务的架构导致了数据的分布式。数据管理不再在一个单一的过程中发生&#xff0c;而是可以通过多…...

Programming abstractions in C阅读笔记:p179-p180

《Programming Abstractions In C》学习第60天&#xff0c;p179-p180总结。 一、技术总结 1.palindrome(回文) (1)包含单个字符的字符串(如"a")&#xff0c;或者空字符串(如" ")也是回文。 (2)示例&#xff1a;“level”、“noon”。 2.predicate fun…...

在 VSCode 中使用 PlantUML

最近&#xff0c;因为工作需要绘制一些逻辑图&#xff0c;我自己现在使用的是 PlantUML 或者 mermaid&#xff0c;相比之下前者更加强大。不过它的环境也麻烦一些&#xff0c;mermaid 在一些软件上已经内置了。但是 PlantUML 一般需要自己本地安装或者使用远程服务器&#xff0…...

css3过渡属性属性名:transition

CSS3的过渡属性属性名是transition&#xff0c;它允许我们在状态改变时为元素添加过渡效果&#xff0c;例如在元素从一种样式变为另一种样式时添加平滑的过渡效果。 transition的语法如下&#xff1a; transition: property duration timing-function delay;其中&#xff0c;…...

关于数据链路层(初步)

以太网帧格式&#xff1a; 源地址和目的地址是指网卡的硬件地址&#xff08;也叫MAC地址&#xff09;&#xff0c;长度是48位&#xff0c;是在网卡出厂时固 化的&#xff1b; 帧协议类型字段有三种值&#xff0c;分别对应载荷的形式&#xff0c;有IP、ARP、RARP&#xff1b; …...

诊断DLL——CAPL_DLL集成安全访问算法

文章目录 前言一、CAPL DLL简介DLL生成C2338报错解决方案:二、添加27服务解锁算法三、CAPL调用dll前言 在实际诊断工程应用中,如UDS刷写——27服务,经常会遇到一些Seed2Key的算法问题,为了安全保密,这个算法的源码不便公开,我们可以将其打包成DLL,然后在CANoe诊断控制面…...

集合元素处理(传统方式和Stream方式)

1、集合元素处理&#xff08;传统方式&#xff09; 现在有两个ArrayList集合存储队伍当中的多个成员姓名&#xff0c;要求使用传统的for循环&#xff08;或增强for循环&#xff09;依次进行一下若干操作步骤&#xff1a; 第一个队伍只要 名字为 3 个字 的成员姓名&#xff1b;存…...

亲测好用,这3款免费高清录屏软件,效果惊人!

在当今社会上&#xff0c;录屏软件已经成为了人们日常生活中不可或缺的一部分。无论是在工作还是学习中&#xff0c;我们都需要使用录屏软件来录制屏幕上的内容。然而&#xff0c;许多录屏软件都是收费的&#xff0c;这对于那些想要尝试录屏软件但又不想花钱的人来说&#xff0…...

超声波清洗机洗眼镜真的可以洗干净吗?眼镜超声波清洗机推荐

截止2023年4月份近视眼的统计&#xff0c;我过近视人群高达3亿人&#xff0c;可想而知现在近视的群体是有多么庞大的。近视就免不了要戴眼镜&#xff0c;但是一副眼镜长时间的佩戴不清洗的话&#xff0c;镜片会不清晰&#xff0c;也有的朋友会眼镜脏了就去配一副新的&#xff0…...

centos7安装部署ElasticSearch

文章目录 ElasticSearch安装部署简介安装卸载 ElasticSearch安装部署 简介 全文搜索属于最常见的需求&#xff0c;开源的 Elasticsearch &#xff08;以下简称 es&#xff09;是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、G…...

websocket+node+vite(vue)实现一个简单的聊天

1.前端逻辑 本项目基于之前搭建的vite环境&#xff1a;https://blog.csdn.net/beekim/article/details/128083106?spm1001.2014.3001.5501 新增一个登录页和聊天室页面 <template><div>登录页</div><div>用户名:<input type"text" pl…...

YApi和Swagger接口管理

这篇博客针对苍穹外卖而写 YApi 之前的官网&#xff1a;yapi.smart-xwork.cn 由于之前的网址访问不了&#xff0c;现在我用的是这个网址&#xff1a;YApi Pro-高效、易用、功能强大的可视化接口管理平台 登录之后如下 创建两个工作空间 用户端接口也是如法炮制 Swagger 使用…...

在不安全的集群上启用 Elasticsearch Xpack 安全性

本博文详细描述如何把一个没有启动安全的 Elasticsearch 集群升级为一个带有 HTTPS 访问的启用 Elasticsearch xpack 安全的集群。 为了增强 Elasticsearch 集群的安全性&#xff0c;你需要执行完全集群重启&#xff0c;并在客户端进行一些更改。 启用身份验证后&#xff0c;所…...

vue清除动态路由

项目中往往都是添加动态路由&#xff0c;如何删除已经添加进来的路由往往被忽视&#xff0c;为此这里做一下记录&#xff1a; 查看vue-router路由文档 可以看出 Vue2中是通过matcher来进行重新赋值来进行清空的。 let createRouter () > new Router({mode: history, //ha…...

rsyslog实现将日志存储到mysql中

​ 前提&#xff1a;准备好msql server或mariadb server&#xff1b; ​ 1、安装rsyslog连接至mysql server的驱动模块&#xff1b; [13:24 rootcentos6.8~]# yum install -y rsyslog-mysql [13:24 rootcentos6.8~]# rpm -ql rsyslog-mysql /lib64/rsyslog/ommysql.so /usr/…...

2015架构案例(五十一)

第5题 【说明】某信息技术公司计划开发一套在线投票系统&#xff0c;用于为市场调研、信息调查和销售反馈等业务提供服务。该系统计划通过大量宣传和奖品鼓励的方式快速积累用户&#xff0c;当用户规模扩大到一定程度时&#xff0c;开始联系相关企业提供信息服务&#xff0c;并…...

亚马逊测评安全吗?

测评可以说是卖家非常宝贵的财富&#xff0c;通过测评和广告相结合&#xff0c;可以快速有效的提升店铺的产品销量&#xff0c;提高转化&#xff0c;提升listing权重&#xff0c;但现在很多卖家找真人测评补单后店铺出现问题导致大家对测评的安全性感到担忧&#xff0c;因为真人…...

wordpress打开html/最新全国疫情消息

它取决于您定义为必需的&#xff1a;没有任何头字段必须与每个响应一起发送&#xff0c;无论什么情况&#xff0c;但有真正应该发送的头字段。唯一接近的头字段是Date&#xff0c;但即使它有它的情况下它不是必需的。在RFC 2119的说法中&#xff0c;术语MUST意味着某些是规范的…...

wordpress最新博客主题/奇葩网站100个

重点&#xff1a; 插入数据  INSERT 更新数据  UPDATE 删除数据  DELETE 再来回顾一下之前我们练过的一些操作&#xff0c;相信大家都对插入数据、更新数据、删除数据有了全面的认识。那么在mysql中其实最重要的不是这三大操作&#xff0c;而是 查数据最重要&#xff0c;…...

网站开发模板专家数据库/爱站网关键字挖掘

伴随着疫情影响的逐渐减弱和国际竞争的不断加剧&#xff0c;全球制造业的数字化转型正在加速推进。中国作为全球的制造业大国、全球供应链体系最完备的国家&#xff0c;只有快速实现数字化的升级和转型&#xff0c;才能持续的在风高浪急的新局面中保持“中国制造”的优势。当前…...

网站栏目内容/武汉谷歌seo

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2022低压电工考试题是低压电工题库上机考试练习题&#xff01;2022年低压电工考试试题模拟考试平台操作依据低压电工考前押题。低压电工练习题通过安全生产模拟考试一点通模拟在线真实考试。 1、【单选题】( )仪表由固…...

新桥专业网站建设/淘宝搜索指数

(一)预应力钢筋的特性1 应力-应变曲线碳素钢丝或钢绞线均属硬钢。当钢丝拉伸到超过比例极限σp (取残余应变为0.01%时的应力)后&#xff0c;σ-ε关系呈非线性变化&#xff0c;没有明显的屈服点。当钢丝拉伸超过σ0.2 (残余应变为0.2%)后&#xff0c;应变ε增加较快&#xff1b…...

php动态网站开发论文/什么是百度竞价推广

转自&#xff1a;https://blog.csdn.net/paincupid/article/details/49924299 经常会接触到VO&#xff0c;DO&#xff0c;DTO的概念&#xff0c;本文从领域建模中的实体划分和项目中的实际应用情况两个角度&#xff0c;对这几个概念进行简析。 得出的主要结论是&#xff1a;在项…...