[C语言]分支与循环

导言:
在人生中我们总会有选择,**如下一顿吃啥?**又或者每天都是在重复,吃饭!!!!,当然在C语言中也有选择和重复那就是分支语句与循环语句
在这里插入图片描述


文章目录

  • 分支
  • 循环
    • 循环中的关键字


分支

在C语言中可以实现分支的有俩种语法

  1. if ,else if ,else
//他可以实现单分支也可以实现多分支

//简单的单分支的情况
int decide;
scanf("%d",&decide);
printf("是否要好好学习C语言(Y/N):")
if(decide == "Y")
	printf("你在不懈努力下学会C语言")
else
	printf("你没有学会C语言");


//多分支,最近学习考试给分不是已经按照不及格,及格,良,优秀,而不是分数,那按照上面的当分支的情况显然无法满足
int mark;
if(mark<60)
	printf("不及格");
else if(mark<80)
	printf("及格");
else if(mark <90)
	pritf("优秀");
else
	printf("优秀");

tips:

//当你只有1条语句的时候 `{}`是可以省去的,但是他会引发一个问题
int a =20;
if(a >10)
	if(a == 20)
		printf("haha");
else
	printf("hehe");
	
//你会不会立说结果是 hehe呢,其实是haha,因为else会与最近的if匹配,那么上述的代码调整一下就是如下所示:
int a =20;
if(a >10)
	if(a == 20)
		printf("haha");
	else
		printf("hehe");

//那么你在这里其实也可以看出一个现象,那就是if+else+无落多少个else if 都只算一条语句
  1. switch
//多用于不同数据同一结果,多分支来简化,主要语法如下
switch()
{
	case1:
		break;
	case2:
		break;
	case3:
		break
	case4:
		break
	case5:
		break
	default:
		break;
}


//1. case就等同与if但是他的值只有和switch的值一样才可以进入
//2. 如果case 后没有break就会一直执行下面case
//3. default可放在任何位置


int i =0;
switch(1)
{
	case 1:
	case=2:
	case 3:
	case 4:
	case 5:
	default:
		i++;
}
//结果是1 当进入case 1 没有brea解说判断则会一直往下知道找到break,或者判断结束

循环

  1. while(条件) { 语句 }
//一般用于不知道需要循环次数的情况
//这个其实就是if的进化版,if只执行一次,而while可执行多次

//不知道你是否听过1万小时定律,就是某件事知道学习进行1w小时那么你就算是在这件事上有话语权
int hour = 0; //与条件相关的变量
while(hour <10000) //条件
{
	hour++;//调整部分/执行的语句
}
printf("在你不懈的努力下,你终于在这件事有了一定的话语权")
  1. for( ; ; ) {}
//用于知道循环次数的情况
int hour;
for(hour = 0/*初始化*/;hour<10000/*条件*/;hour++/*调整部分*/)
{
	//循环体
}
printf("在你不懈的努力下,你终于在这件事有了一定的话语权")

//1. for循环初始化可以定义变量但是事在C99版本出的之前版本不匹配,那么跨平台性就不好所以建议分离出来,且分离出来那个变量还可以再次使用
// 2. 且初始化部分和调整部分可以省但是建议写上,方便自己观看,也可以减少出现bug的次数
int i,j,number=0;
for(i = 0;i<10;i++)
{
	for(;j<3;j++)
	{
		number++;
	}
}
//你觉得number是多少,如果你说30那么你就进坑了,因为j没初始化j在第一次循环就是3那么就不会进入循环了
  1. do {}while();
//一般用于循环体的内容需要一定一次的情况下,如开机启动
//实现1万小时的代码
int hour =0;
do
{
	hour++;
}while(hour==10000);
printf("在你不懈的努力下,你终于在这件事有了一定的话语权")


//如启动10次程序
int number =0 ;
do {
	//循环体
	//启动程序
	number ++;
}while(number <10/*判断*/);

循环中的关键字

  1. continue
//用于跳过本次循环,也就是执行到这句代码后面的代码都不执行了
int arr[]={1,2,3,4,5,6,7,8,9}
int index= 0;
while(index <=sizeof(arr)/sizeof(arr[0]))
{
	if(arr[index++] ==5)
		continue;
	printf("%d",arr[i]);
}
//结果1,2,3,4,6,7,8,9
  1. break
//用于终止循环
int arr[]={1,2,3,4,5,6,7,8,9}
int index= 0;
while(index <=sizeof(arr)/sizeof(arr[0]))
{
	if(arr[index++] ==5)
		break;
	printf("%d",arr[i]);
}
//结果1,2,3,4
  1. goto
//多用于跳出多层嵌套的循环,可以用于服务器出问题进行备份,如下伪代码
copy:
	//备份数据
while(1)
{

	while(1)
	{
		while(1)
		{
			while(1)
			{
				if(/*出问题/*)
					goto copy;
			}
		}
	}
}

//goto 可以跳转到任何设置过标签的位置,有没有点像哈利波特传送哈哈哈,但是这里会导致代码逻辑混乱,一般不建议使用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手写代码-前端面试

GitHub&#xff1a;手写代码集合

大数据-玩转数据-Flink营销对账

一、说明 在电商网站中&#xff0c;订单的支付作为直接与营销收入挂钩的一环&#xff0c;在业务流程中非常重要。对于订单而言&#xff0c;为了正确控制业务流程&#xff0c;也为了增加用户的支付意愿&#xff0c;网站一般会设置一个支付失效时间&#xff0c;超过一段时间不支…

一云多芯,智能化转型的下一个工程化挑战

进入2023年&#xff0c;产业数字化和智能化转型升级进入了大规模工程化落地阶段。根据中国信通院《中国数字经济发展研究报告&#xff08;2023&#xff09;》&#xff0c;数字经济已经占我国GDP比重达到41.5%&#xff0c;相当于第二产业占国民经济的比重。随着产业数字化和智能…

【数据结构】 LinkedList的模拟实现与使用

文章目录 &#x1f340;什么是LinkedList&#x1f334;LinkedList的模拟实现&#x1f6a9;创建双链表&#x1f6a9;头插法&#x1f6a9;尾插法&#x1f6a9;任意位置插入&#x1f6a9;查找关键字&#x1f6a9;链表长度&#x1f6a9;打印链表&#x1f6a9;删除第一次出现关键字为…

YOLOv5+deepsort实现目标追踪。(附有各种错误解决办法)

一、YOLOv5算法相关配置 🐸这里如果是自己只想跑一跑YOLOV5的话,可以参考本章节。只想跑通YOLOv5+deepsort的看官移步到下一章节。 1.1 yolov5下载 🐸yolov5源码在github下载地址上或者Gitee上面都有。需要注意的是由于yolov5的代码库作者一直在维护,所以下载的时候需…

【Unity小技巧】Unity探究自制对象池和官方内置对象池(ObjectPool)的使用

文章目录 前言不使用对象池使用官方内置对象池应用 自制对象池总结源码参考完结 前言 对象池&#xff08;Object Pool&#xff09;是一种软件设计模式&#xff0c;用于管理和重用已创建的对象。在对象池中&#xff0c;一组预先创建的对象被维护在一个池中&#xff0c;并在需要时…

OJ练习第152题——分割回文串 II

分割回文串 II 力扣链接&#xff1a;132. 分割回文串 II 题目描述 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文。 返回符合要求的 最少分割次数 。 示例 Java代码 class Solution {public int minCut(String s) {int n s.leng…

听说你还不知道什么是python?本文将带你发掘python的魅力并让你爱上他

文章目录 前言什么是pythonpython的由来我们为什么要学习python帮助python学习的网站总结 前言 各位朋友们&#xff0c;大家好。龙叔我后台经常收到私信问什么是Python&#xff1f;有必要学习这门语言么&#xff1f;今天&#xff0c;将通过本文告知大家Python是什么&#xff1…

浅谈日常使用的 Docker 底层原理-三大底座

适合的读者&#xff0c;对Docker有过简单了解的朋友&#xff0c;想要进一步了解Docker容器的朋友。 前言 回想我这两年&#xff0c;一直都是在使用 Docker&#xff0c;看过的视频、拜读过的博客&#xff0c;大都是在介绍 Docker 的由来、使用、优点和发展趋势&#xff0c;但对…

QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动

QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动 0、背景1、基本环境2、开发环境编译Qt MySql数据库驱动2.1 依赖说明2.2 MySQL驱动编译过程 3、交叉编译Qt MySql数据库驱动3.1 依赖说明3.3.1 如何在交叉编译服务器上找到mysql.h及相关头文件3.3.2 如果…

【PHP】基础语法变量常量

文章目录 PHP简介前置知识了解静态网站的特点动态网站特点 PHP基础语法代码标记注释语句分隔(结束)符变量变量的基本概念变量的使用变量命名规则预定义变量可变变量变量传值内存分区 常量基本概念常量定义形式命名规则使用形式系统常量魔术常量 PHP简介 PHP定义&#xff1a;一…

【服务器】Strace显示后台进程输出

今天有小朋友遇到一个问题 她想把2331509和2854637这两个进程调到前台来&#xff0c;以便于在当前shell查看这两个python进程的实时输出 我第一反应是用jobs -l然后fg &#xff08;参考这里&#xff09; 但是发现jobs -l根本没有输出&#xff1a; 原因是jobs看的是当前ses…

Oracle Database12c数据库官网下载和安装教程

文章目录 下载安装Oracle自带的客户端工具使用 下载 进入oracle官网 点击下载连接之后右上角会有一个下载 我们只需要数据库本体就够了 运行这个下载器 等待下好之后即可 出现 Complete 之后代表下载成功&#xff0c;然后我们解压即可 安装 双击 双击setup.exe 根据…

NLP | 基于LLMs的文本分类任务

比赛链接&#xff1a;讯飞开放平台 来源&#xff1a;DataWhale AI夏令营3&#xff08;NLP&#xff09; Roberta-base&#xff08;BERT的改进&#xff09; ①Roberta在预训练的阶段中没有对下一句话进行预测&#xff08;NSP&#xff09; ②采用了动态掩码 ③使用字符级和词级…

引领行业高质量发展|云畅科技参编《低代码开发平台创新发展路线图(2023)》

8月8日-9日&#xff0c;中国电子技术标准化研究院于北京顺利召开《低代码开发平台创新发展路线图&#xff08;2023&#xff09;》封闭编制会。云畅科技、浪潮、百度、广域铭岛等来自低代码开发平台解决方案供应商、用户方、科研院所等近30家相关单位的40余位专家参与了现场编制…

android studio gradle build running慢 卡住不动 失败 原因与解决方式

快速导航 分析原因解决办法 分析原因 主要原因是 gradle 构建时无法从网络获取需要的包或库。 解决办法 将国外库替换为阿里云镜像库。 例如 google 对应的库是 maven { url ‘https://maven.aliyun.com/repository/google’ }

基于决策树(Decision Tree)的乳腺癌诊断

决策树(DecisionTree)学习是以实例为基础的归纳学习算法。算法从--组无序、无规则的事例中推理出决策树表示形式的分类规则,决策树也能表示为多个If-Then规则。一般在决策树中采用“自顶向下、分而治之”的递归方式,将搜索空间分为若千个互不相交的子集,在决策树的内部节点(非叶…

容灾双活方案,异地容灾备份与双活

数据信息的安全性和完整性面临着硬件问题、病毒入侵、自然灾害等各种威胁。为了应对这些威胁&#xff0c;公司需要采取有效的数据保护措施&#xff0c;其中特别重要的是外部容灾备份和双活技术。  让我们来看看其他地方的容灾备份。这是一种可以将数据复制到避免初始区域的设…

IO day 7

1、使用消息队列完成两个进程间相互通信 msgsnd #include <myhead.h>typedef struct {long msgtype;char data[1024]; }Msg_ds;#define SIZE sizeof(Msg_ds)-sizeof(long)int main(int argc, const char *argv[]) {//创建key值key_t key;if((key ftok("/",k…

物通博联嵌入式数据采集网关采集传感器的数据上传到云端

在当今的物联网&#xff08;IoT&#xff09;时代&#xff0c;各种传感器广泛应用于各种工业领域。传感器数据采集是实现自动化生产的基础&#xff0c;可以为企业决策提供科学的数据支持&#xff0c;通过各类智能传感器采集传输终端&#xff0c;将采集的传感器数据实时传输到设备…