C语言学习 四、选择与循环

4.1关系表达式与逻辑表达式

  • 算术运算符的优先级高于关系运算符
  • 关系运算符的优先级高于逻辑与 和 逻辑或运算符
  • 相同优先级的运算符从左到右进行结合

【例】

表达式 5 > 3 && 8 < 4 - !0 的最终值为多少

4.2 if-else语句

4.2.1 if-else单分支语句
  • if判断条件(表达式)为真,就执行某个语句,反之不执行这个语句
  • if判断条件(表达式)为真,就执行某个语句,反之用else分支执行另一个语句

 【if-else单分支例子:判断输入值是否大于0】

#include <stdio.h>int main() {//if-else单分支//判断输入值是否大于0int i;//用while循环是因为可以反复进行测试while (scanf("&d", &i)) {if (i > 0) {printf("i is bigger than 0\n");} else {printf("i is smaller than 0\n");}}return 0;
}
 4.2.2 if-else多分支语句

无论有多少个if语句或else if语句,程序都只会执行其中的一个语句

 【if-else多分支例子:阶梯电费】

#include <stdio.h>int main() {//if-else多分支语句//阶梯电费int num; //用电几度while (scanf("%d", &num)) {if (num > 500) {printf("电费为0.15元/度\n");} else if (num > 300) {printf("电费为0.10元/度\n");} else if (num > 100) {printf("电费为0.075元/度\n");} else if (num > 50) {printf("电费为0.05元/度\n");} else {printf("电费为0元/度\n");}}
}

【运行结果】

【小结】

注意多个if-else语句要加上 {} 括号

若没有加上 {} 括号,else子句从属于最靠近它的不完整if语句

4.3循环语句

4.3.1 while循环
  • while语句用来实现“当型”循环结果,其一般形式为“while(表达式) 语句;”
  • 当表达式的值非0时,执行while语句中的内嵌语句
  • while循环特点:先判断表达式,后执行语句
  • 为避免程序死循环,在语句中需要有让表达式趋近于假的操作来使程序跳出循环

 【while循环实现计算1-100之间所有整数之和】

#include <stdio.h>//while循环
int main() {//计算1到100的和int i = 1, total = 0;while (i <= 100) { //若是在这里的while后加上分号会导致死循环total = total + i;//把i加到total上i++; //若是循环体内没有让while判断表达式趋近于假的操作会导致死循环}printf("total=%d\n", total);return 0;
}

【运行结果】

4.3.2 for循环

for循环可用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while循环语句,其一般形式为

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

 其中:

  • 表达式1为循环变量初始化
  • 表达式2为循环条件
  • 表达式3为循环变量迭代

for循环执行过程如下:

(1)先求解表达式1

(2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,后执行第(3)步。若其值为假(为0),则结束循环,转第(5)步

(3)求解表达式3

(4)转回第(2)步继续执行

(5)循环结束,执行for语句下面的语句

【for循环实现计算1-100所有整数之和】

#include <stdio.h>//for循环
int main() {//计算i到100的和int i, total = 0;for (int i = 1; i <= 100; i++) {total += i;}printf("total=%d\n", total);return 0;
}

【运行结果】

【小结】

  • for循环语句中必须且只能有2个分号,用于分割表达式1,表达式2和表达式3
  • 表达式1,表达式2和表达式3也可以省略,但省略写法用的较少
  • 表达式1中可以用逗号初始化多个变量,如:i=1,total=0
  • 表达式3的作用是使表达式2趋近于假
  • for循环的可读性要比while循环好,能使用for循环时不要强制改为while循环
 4.3.3 continue语句

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

continue;

 【for循环中的continue语句】

#include <stdio.h>//for循环中的continue语句
int main() {//计算i到100之间奇数的和int i, total = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {//如果为偶数则不加入totalcontinue;//continue下面的代码均不会得到执行}total += i;}printf("total=%d\n", total);return 0;
}

【运行结果】

【while循环中的continue语句】

#include <stdio.h>//while循环中的continue语句
int main() {//计算1到100之间所有奇数的和int i = 1, total = 0;while (i <= 100) { //若是在这里的while后加上分号会导致死循环if (i % 2 == 0) {//如果为偶数则不加入totali++;//这里也需要i++,不然没有让循环结束的条件continue;//continue下面的代码均不会得到执行}total = total + i;//把i加到total上i++; //若是循环体内没有让while判断表达式趋近于假的操作会导致死循环}printf("total=%d\n", total);return 0;
}

【运行结果】

4.3.4 break语句
  • break语句的作用是结束整个循环过程,不再判断执行循环的条件是否成立。
  • break语句也可以用在while循环和do while循环当中,起到结束对应循环的作用。

【break语句例子】

从1开始累加,累加的和大于2000时结束for循环,同时打印此时total和i的值

#include <stdio.h>int main() {int i, total;for (i = 1,total = 0; i <= 100; i++) {if (total > 2000) {break;//当和大于2000时,循环结束}total += i;}printf("total=%d,i=%d\n", total, i);//total=2016 i=64//i = 64并没有加入到total当中,所以2016其实是1加到63的总值return 0;
}

【运行结果】

【小结】

  • i=64并没有加入到total中,所以2016其实是1累加到63的总和
  • 一旦执行break语句,下一句要执行的就是 printf("total=%d,i=%d\n", total, i);

4.4课时作业

  • 课时4作业1

描述:输入一个整型数,判断是否为对称数,如果是,输出yes,否则输出no。不用考虑这个整型数过大,int类型存不下,不用考虑负值

输入:一个整型数

输出:输出yes或no

【课时4作业1代码】

#include <stdio.h>//逆置数的判断
//比如:12321 逆置后:12321 与原来数相等
int main() {int a;int b = 0, backup;backup = a;//备份后的变量scanf("%d", &a);//读取一个整型数backup = a;//备份awhile (a) {//a%10取出最后面一位数//b*10将原来的数*10b = b * 10 + a % 10;//b把原来的值乘10,然后再加上余数a = a / 10;}//printf("b=%d\n",b);//判断b和backup是否相等,相等即为对称数if (b == backup) {printf("yes\n");} else {printf("no\n");}return 0;
}

【运行效果】

  

  • 课时4作业2

描述:利用while 或 for循环计算n!的值

n!=1*2*3…*n

输入:一个正整数n (1<=n<=10)

输出:n!的值

【课时4作业2代码】

#include <stdio.h>//求n的阶乘
int main() {int n;scanf("%d", &n);//输入一个正整数nint i, result = 1;//i 为游标for (int i = 1; i <= n; i++) {result *= i;}printf("%d\n", result);return 0;
}

【运行结果】

  • 课时4作业3

描述:某人想将手中一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求正好40张,且每种票子至少一张,问:有几种换法

输入:无输入

输出:一个数,表示共有多少种换法

【课时4作业3代码】

#include <stdio.h>int main() {//a面值为10元,b面值为5元,c面值为2元,d面值为1元int a, b, c, d, count = 0;//count为换法for (int a = 1; a <= 10; a++) {for (int b = 1; b <= 20; b++) {for (int c = 1; c <= 40; c++) { //c<=37for (int d = 1; d <= 40; d++) { //d<=37if (a + b + c + d == 40 && 10 * a + 5 * b + 2 * c + d == 100) {count++;//换法加1}}}}}printf("count=%d\n", count);return 0;
}

【运行效果】

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

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

相关文章

力扣日记3.21【贪心算法篇】45. 跳跃游戏 II

力扣日记&#xff1a;【贪心算法篇】45. 跳跃游戏 II 日期&#xff1a;2024.3.21 参考&#xff1a;代码随想录、力扣 45. 跳跃游戏 II 题目描述 难度&#xff1a;中等 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转…

C语言例:设 int x; 则表达式 (x=4*5,x*5),x+25 的值

代码如下&#xff1a; #include<stdio.h> int main(void) {int x,m;m ((x4*5,x*5),x25);printf("(x4*5,x*5),x25 %d\n",m);//x4*520//x*5100//x2545return 0; } 结果如下&#xff1a;

网络仿真3-NS2协议修改和移植

Ns2实现原理 OTcl与C关联 执行路径&#xff1a;Tcl->Otcl->C 返回路径&#xff1a;C->Otcl->Tcl NS2协议修改和移植 NS2中的各种网络协议在底层通过C实现&#xff0c;在网络仿真过程中最终通过调用底层C代码实现网络行为、算法、功能等各种仿真 NS2协议修改&…

牛客NC403 编辑距离为一【中等 模拟法 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/0b4b22ae020247ba8ac086674f1bd2bc 思路 注意&#xff1a;必须要新增一个&#xff0c;或者删除一个&#xff0c;或者替换一个&#xff0c;所以不能相等1.如果s和t相等&#xff0c;返回false,如果s和t长度差大于1…

【数据库系统】SQL和T-SQL

第四章 SQL 基本内容 系统结构、DDL、DML、视图、数据控制、嵌入式SQL SQL介绍 特点 一体化&#xff1b;面向集合操作&#xff1b;非过程化语言&#xff1b;可以单独写&#xff0c;也可以作为嵌入式语言&#xff08;JDBC&#xff09; 体系结构 数据库存储结构 逻辑存储结构 面…

在vscode中使用git-新手向

Git 应该是必学的版本同步工具&#xff0c;是代码管理的好帮手。 可是对新手来说上手还是有一丢丢门槛&#xff0c;结合 vscode 同步非常方便。 可实现可视化代码变化&#xff0c;提醒自己记录版本修改内容。非常好用。 在 VSCode 中将项目上传至 GitHub 私有仓库基本步骤 确保…

基于ssm电子竞技管理平台的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本电子竞技管理平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

Prometheus(四):VMware Vsphere监控及数据展示

目录 1 vmware exporter安装配置1.1 vmware exporter介绍1.2 安装 - 使用kubernetes部署1、下载2、修改配置文件3、执行安装4、查看 1.3 安装-使用docker的方式1.4 Prometheus配置1.5 Grafana配置&#xff08;模板页面还需要修改&#xff09; 总结 1 vmware exporter安装配置 …

cloudflare 应用例子几则

Cloudflare&#xff08;以下简称 CF&#xff09; 堪称互联网活菩萨&#xff0c;造就一大批高质量的互联网基础技术服务&#xff0c;更难得的是&#xff0c;几乎所有的服务都有对应的免费的套餐&#xff0c;而且出手大方&#xff0c;基本上有足够的容量或请求次数。 CDN CF 最…

MySQL的基本操作

目录 引言 一、SQL语句简介 &#xff08;一&#xff09;SQL通用语法 &#xff08;二&#xff09;SQL分类 &#xff08;三&#xff09;数据类型 1.数值类型 2.字符串类型 3.日期/时间类型 4.修饰符 二、登录mysql服务 三、SQL语句操作 &#xff08;一&#xff09;DD…

深度学习500问——Chapter04:经典网络解读(1)

文章目录 4.1 LeNet-5 4.1.1 模型介绍 4.1.2 模型结构 4.1.3 模型特性 4.2 AlexNet 4.2.1 模型介绍 4.2.2 模型结构 4.2.3 模型特性 4.3 ZFNet 4.3.1 模型介绍 4.3.2 模型结构 4.3.3 模型特性 4.4 Network in Network 4.4.1 模型介绍 4.4.2 模型结构 4.4.3 模型特性 4.1 LeNet-…

java面试:常见的限流算法有哪些

1 什么是限流算法 限流算法是一种用于限制流量请求的频率或速率的算法&#xff0c;其目的是在高并发或大流量请求的情况下&#xff0c;保护系统服务的安全性和可用性。限流算法可以应对热点业务带来的突发请求、调用方bug导致的突发请求以及恶意攻击请求等情况。是一种系统保护…

金融知识分享系列之:出场信号RSI指标

金融知识分享系列之&#xff1a;出场信号RSI指标 一、出场信号RSI指标二、RSI指标原理三、 指标用法四、RSI指标总结 一、出场信号RSI指标 名称&#xff1a;相对强弱指标参数&#xff1a;(默认14)组成&#xff1a;RSI线以及30轴、50轴、70轴构成 0-30是极弱&#xff1a;0-30的…

jmeter接口自动化测试框架

接口测试可以分为两部分&#xff1a; 一是线上接口&#xff08;生产环境&#xff09;自动化测试&#xff0c;需要自动定时执行&#xff0c;每5分钟自动执行一次&#xff0c;相当于每5分钟就检查一遍线上的接口是否正常&#xff0c;有异常能够及时发现&#xff0c;不至于影响用…

服务器病毒木马通用排查处理应急响应流程

目录 一、勒索病毒发作的特征 二、勒索病毒的应急响应 三、勒索病毒预防与事后加固 一、勒索病毒发作的特征 如果发现大量统一后缀的文件&#xff1b;发现勒索信在Linux/home、/usr等目录&#xff0c;在Windows 桌面或者是被加密文件的文件夹下。如果存在以上特…

四十八岁男子心慌心悸,失眠,喉咙有异物,刘家峰告诉你怎么办!

植物神经功能紊乱&#xff0c;通常简称为植物神经紊乱&#xff0c;是一种涉及自主神经系统的失调疾病。自主神经系统负责控制人体内许多自动功能&#xff0c;如心率、血压、消化和体温调节。植物神经功能紊乱是指由于自主神经系统失衡导致的一系列症状和体征的综合症。 植物神经…

windows DCMTK编译使用(qt) 医学图像

由于项目需要生成DICOM格式的图片&#xff0c;需要使用到第三方开源库DCMTK&#xff0c;于是研究了一番&#xff0c;该库是C编写的&#xff0c;DICOM主要用于医疗体系中&#xff0c;除了可以保存图片信息外&#xff0c;还可以储存患者信息&#xff0c;病例信息&#xff0c;医疗…

【Emgu CV教程】10.2、轮廓之外接矩形、面积计算

文章目录 一、轮廓的外接矩形二、轮廓的面积三、两个函数的简单应用1.原始素材2.代码3.运行结果 一、轮廓的外接矩形 轮廓的外接矩形&#xff0c;函数是&#xff1a; public static Rectangle BoundingRectangle (IInputArray points // 输入的轮廓 )函数返回的是一个矩形&am…

unity3d——沙盒路径

文章目录 Unity3D中不同平台的沙盒路径&#xff1a; 示例 在Unity3D中&#xff0c;尤其是在移动平台如Android和iOS上&#xff0c;由于系统安全机制&#xff0c;应用程序不能直接访问操作系统的所有文件和目录&#xff0c;而是被限制在一个特定的“沙盒”环境中。这个沙盒是一个…

宜搭低代码高级认证实操题1 todolist

进行中待办 已完成待办 待办事项 待办事项远程api和变量配置 回调函数 function didFetch(content) {//console.log(content.data);// content.b = 1; 修改返回数据结构中的 b 字段为1let res = content.data;let todoList = [];for(let i in res){todoList.push(res[i]);}con…