【C语言基础考研向】08判断语句与循环语句

1.关系表达式与逻辑表达式

算术运算符的优先级高于关系运算符、关系运算符的优先级高于逻辑与和逻辑或运算符、相同优先级的运算符从左至右进行结合等,那么表达式5>3&&8<4-!0的最终值是多少?其计算过程如下图所示。
在这里插入图片描述


2.if-else语句

引入:在你打开衣柜拿出最上面的一件衣服时,你会判断这件衣服是不是你想穿的.如果是,那么你就会穿上;如果不是,那么你就会去找其他衣服.在计算机中,我们用 if判断语句来实现这样的效果: if判断条件(表达式)为真,就执行某个语句,反之不执行这个语句.当然,也可以if 判断条件(表达式)为真,就执行某个语句,反之用else分支执行另一个语句.

当输入值大于0时,打印“i is bigger than 0”,当输入值小于等于0时,打印 "i is not biggerthan 0”,具体代码如下例所示.注意,在这个例子中,if 后面不能加分号,因为如果有else分支语句,那么加分号会导致编译不通过;如果没有else分支语句,那么加分号会导致i无论取何值,都会打印“ i is bigger than o” .

【例】判断输入值是否大于0

#include <stdio.h>
int main() {
int i;
while (scanf("%d",&i)){
if (i > 0)//不要在括号后加分号
{
printf("i is bigger than O\n");
} else {
printf("i is not bigger than O\n");
}
}
return O;

if语句和else 语句也可以多个同时使用(多分支语句),但是,无论有多少个if语句或else if语句,程序都只会执行其中的一个语句.下面是一个关于用电量的例子:用电量越高,电的单价越高,但最终cost只会被赋值一次.同时, if 语句也支持多层嵌套,在if 语句中又包含一个或多个if语句称为if 语句的嵌套.

if (number>500)cost=0.15;
else if(number>300)cost=0.10;
else if(number>100)cost=0.075;
else if(number>50)cost=0.05;
else cost=O;

使用if嵌套语句时,要考虑“悬空的else”问题.例如,在下面的例子中, else子句从斥于哪个if语句?

if(i>1)if(i<10)printf("i>1 and i<10in");
elseprintf("no,they are notin");

和其他绝大多数语言一样,C语言中的else子句从属于最靠近它的不完整的if语句.上.例中的else子句从属于第二个if语句,如果想让它从属于第一个if 语句,那么可以用一个花括号把第二个if 语句包含在一个单独的代码块内,如下所示.

if(1>1){
if(i<10)
printf("i>1 and i<10in");
)
else
printf( "no,they are notin");

在f语句中的语句列表前后加上花括号,可以防止不小心加了一句代码后,使实际未被包含的语句被包含在某个if语句中的错误.


3.while循环

引入:while 语句用来实现“当型”循环结构,其一般形式为“while(表达式)语句;”,当表达式的值非0时,执行while 语句中的内嵌语句.其特点是:先判断表达式,后执行语句.当表达式的值非0时,就会执行语句,从而实现语句多次执行的效果.为了避免程序进入死循环(不停地进行循环操作)﹐在语句中需要有让表达式趋近于假的操作来使程序跳出循环.

下面是用while 语句计算1到100之间所有整数之和的例子,如下例所示.注意, while后面不能加分号,否则虽然编译可以通过,但是执行程序时会发生死循环.通常我们会将while语句用花括号括起来,就算while 语句只有一句,也会用花括号括起来,这么做是因为一个程序往往会经过多次修改,使用花括号可以让程序更加清晰,避免向循环内添加语句时出错.

#include <stdio.h>
int main(){
int i=1,total=O;
while(i<=100)//不能在while后面加分号
{total+=i;i++;//循环内要有使循环趋近丁假的操作
}printf("%d\n",total);return 0;
}

4.for循环

C语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while循环语句。其一般形式为

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

for循环语句的执行过程如下,具体流程如下图所示.
(1)先求解表达式1.
(2)求解表达式2,若其值为真(值为非O) ,则先执行for语句中指定的内嵌语句,后执行第(3)步.若其值为假(值为O),则结束循环,转到第(5)步.
(3)求解表达式3.
(4)转回第(2)步继续执行.
(5)循环结束,执行for语句下面的语句.
在这里插入图片描述
下面来看一个使用for循环语句计算1到100之间的所有整数之和的例子, for循环语句中必须且只能有两个分号,用于分割表达式1、表达式2和表达式3.表达式1、表达式2、表达式3也可省略,省略写法用得较少.如下例所示,“i=1,total=0”是表达式1,即表达式1可以使用逗号初始化多个变量,表达式3的作用是使表达式2趋近于假.

【例】for循环语句实现计算1到100之间的所有整数之和

int main() {int i,total;for(i=1,total=O;i<=100;i++)//在for加分号不会死循环,会结果不对{total+=i;}printf("%d\n",total);return 0;
}

for循环的可读性要比 while 循环的好,所以能使用for循环时不要强制改为while循环.


5.continue语句

continue 语句的作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行是否执行下一次循环的判断.其一般形式为

continue

下面来看一个对1到100之间的奇数进行求和的例子,如下例所示.这个例子是对上一节中的for循环的改写,执行“continue;”语句后,执行的语句是“i++;”.当continue用于 while和do while 循环中时,注意不要跳过让循环趋近于假的语句.


【例】对1到100之间的奇数进行求和

#include cstdlo.h>
int main() {
int i,total;total=O;
for(i=1;i<=100;i++)//在for加分号不会死循环,会结果不对
{if(i%2==O){continue;}total+=i;
}printf("%d\n";,total);return o;
}

5.break语句

break语句的作用是结束整个循环过程,不再判断执行循环的条件是否成立.下例是关于break语句的例子,例子从1开始累加,当累加的和大于2000时,结束 for循环,同时打印此时total的值和i 的值.一旦执行break 语句,下一句要执行的就是“printf(“total=%d,i=%d\n” ,total,i);”. break语句也可用在while 循环和do while 循环中,起结束对应循环的作用.
【例】break 语句实例

#include <stdio.h>
lnt main(){
int i,total;
total=O;
for(i=1;i<=100;i++)//在for加分号不会死循环,会结果不对
{if(total>2000){break}total+=i;
}
printf("total=%d,I=%d\n",total,i);
return 0;
}

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

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

相关文章

[小程序]使用代码渲染页面

一、条件渲染 1.单个控制 使用wx:if"{{条件}}"来判断是否需要渲染这段代码&#xff0c;同时可以结合wx:elif和wx:else来判断 <view wx:if"{{type0}}">0</view> <view wx:elif"{{type1}}">1</view> <view wx:else>…

MySQL UNION 操作符

昨天介绍了 MySQL 数据库使用 LIKE 子句来进行筛选查询&#xff0c;今天主要讲解下 MySQL UNION 操作符。 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合&#xff0c;并去除重复的行。UNION 操作符必须由两个或多个 SELECT 语句组成&#xff0c;每…

Angular系列教程之父子组件通信详解

文章目录 前言组件通信方法1. 输入属性&#xff08;Input Properties&#xff09;2. 输出属性&#xff08;Output Properties&#xff09;3. 服务&#xff08;Services&#xff09;4. ViewChild与ContentChild 示例代码说明结论 前言 在Angular应用程序开发中&#xff0c;父子…

将输入框的数据输出成json

刚学&#xff0c;做一下记录 先上效果图&#xff0c;来不及解释了&#xff0c;后面再说 源码&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1pV8hDVwpB1kresHag7gIew 提取码&#xff1a;**** 操作&#xff1a; 进入项目目录下&#xff0c;cmd 清除npm缓存&#xff1…

(二十三)Kubernetes系列之prometheus+grafana安装

1.kube-prometheus安装 1.1 下载 访问地址&#xff1a;https://github.com/prometheus-operator/kube-prometheus/releases 点击Source code (tar.gz)进行下载&#xff0c;并上传到k8s服务器master节点 1.2解压 tar zxvf kube-prometheus-0.11.0.tar.gz 1.3进入kube-prome…

C++函数对象-函数包装器-调用空的 std::function 时抛出的异常(std::bad_function_call)

任何定义了函数调用操作符的对象都是函数对象。C 支持创建、操作新的函数对象&#xff0c;同时也提供了许多内置的函数对象。 函数包装器 std::function 提供存储任意类型函数对象的支持。 用空的 std::function 时抛出的异常 std::bad_function_call class bad_function_cal…

“gradle project sync failed”

很久没打开AndroidStudio了&#xff0c;打开电脑发现这个软件都没了。重新安装后创建项目不成功&#xff0c;就提示了这个错误。 错误原因 “gradle project sync failed”&#xff1a;gradle没有配置成功。在安卓项目下找到目标文件&#xff1a;gradle --> wrapper -->…

尝试解决githubclone失败问题

BV1qV4y1m7PB 根据这个视频 似乎是我的linux的github似乎下好了 我没有配置好 比如我的ssh-key 现在根据视频试试 首先需要跳转到ssh的文件夹&#xff1a; cd ~/.ssh 然后生成一个ssh-key&#xff1a; ssh-keygen -t rsa -C "<github资料里的邮箱>" 然后…

IaC基础设施即代码:Terraform 创建 docker 网络与容器资源

目录 一、实验 1.环境 2.Terraform查看版本 3.Linux主机安装Docker 4.Terraform使用本地编译&#xff08;In-house&#xff09;的Providers 5.Docker-CE 开启远程API 6. Linux主机拉取镜像 7.Terraform 创建docker 网络资源 8.Terraform 创建docker 容器资源 一、实验 …

C语言算法赛——蓝桥杯(省赛试题)

一、十四届C/C程序设计C组试题 十四届程序C组试题A#include <stdio.h> int main() {long long sum 0;int n 20230408;int i 0;// 累加从1到n的所有整数for (i 1; i < n; i){sum i;}// 输出结果printf("%lld\n", sum);return 0; }//十四届程序C组试题B…

[机缘参悟-129] :我个人对人生之苦解决之道的思考

目录 前言&#xff1a; 第1层&#xff1a;环境层 1.1 环境的分类 1.2 理解环境的运作的基本原理 1.3 主动选择适合自己的愉快的环境 1.4 主动构建适合自己的愉快的环境 第2层&#xff1a;生理层 2.1 生理健康和情绪之间的关系 2.2 学习人的生物、生理、健康的基本知识…

基于SpringBoot Vue档案管理系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

(2024,小波变换,空文本反演,负提示反演)基于扩散的图像编辑中文本反演的小波引导加速

Wavelet-Guided Acceleration of Text Inversion in Diffusion-Based Image Editing 公众号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 初步分析 2.1. 空文本优化分析 2.2. 频率…

数据结构之树和二叉树定义

数据结构之树和二叉树定义 1、树的定义2、树的基本概念3、二叉树的定义 数据结构是程序设计的重要基础&#xff0c;它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发&#xff0c;分析和研究计算机加工的数据的特性&#xff0c;以…

Web03--CSS进阶

1、CSS常用属性 1.1 文本字体相关属性设置 样式名 描述 text-align 设置内容位置 text-decoration 控制下划线 none没有 underline有 line-hight 行高 font-size 设置字体大小 font-weight 设置字体粗细的 font-famliy 设置字体样式 letter-spacing 设置中文字…

【Python代码】以线性模型为例,详解深度学习算法流程,包括数据生成、定义模型、损失函数、优化算法和训练

**使用带有噪声的线性模型构造数据集&#xff0c;并根据有限的数据恢复该线性模型的参数。**其中包括数据集构造、模型参数初始化、损失函数定义、定义优化算法和训练等过程。是大多数算法实现过程的一个缩影&#xff0c;理解此过程有助于在开发或改进算法时更深刻了解其算法的…

寒假每日一题-公路

小苞准备开着车沿着公路自驾。公路上一共有 n个站点&#xff0c;编号为从 1 到 n。其中站点 i与站点 i1 的距离为 vi公里。 公路上每个站点都可以加油&#xff0c;编号为 i的站点一升油的价格为 ai元&#xff0c;且每个站点只出售整数升的油。 小苞想从站点 1开车到站点 n&am…

golang学习笔记——http.Handle和http.HandleFunc的区别与type func巧妙运用

文章目录 http.Handle和http.HandleFunc的区别http.Handle分析type func巧妙运用 http.HandleFunc分析总结参考资料 http.Handle和http.HandleFunc的区别 http.Handle和http.HandleFunc的区别体现了Go语言接口的巧妙运用 下面代码启动了一个 http 服务器&#xff0c;监听 808…

基于python的数字识别-含数据集和代码

数据集介绍&#xff0c;下载本资源后&#xff0c;界面如下&#xff1a; 有一个文件夹一个是存放数据集的文件。 数据集介绍&#xff1a; 一共含有:16个类别&#xff0c;包含:division, eight, five, four, left_bracket, minus, multiplication, nine, one, plus, right_brac…

逻辑回归中的损失函数

一、引言 逻辑回归中的损失函数通常采用的是交叉熵损失函数&#xff08;cross-entropy loss function&#xff09;。在逻辑回归中&#xff0c;我们通常使用sigmoid函数将线性模型的输出转换为概率值&#xff0c;然后将这些概率值与实际标签进行比较&#xff0c;从而计算损失。 …