首页 > 其他分享 >C语言新手入门---分支与循环(上)

C语言新手入门---分支与循环(上)

时间:2025-01-17 17:30:50浏览次数:3  
标签:语句 --- 逻辑 执行 else 新手入门 case printf C语言

前言

鼠鼠也是才学C语言,屏幕前的各位多指教,鼠鼠耐骂。

编程里的分支结构要理解其实也就是数学里的树状图,把所需要的情况一点点根据数据分类好,再用编程语言的语法写好就行。

一、if语句

1、if本身用法

如果判断表达式的结果为真(也就是表达式内容正确(或者说表达式返回的值非0),比如判断a>6,正确则返回值1,执行if管理的语句块,错误则返回值0,不执行并继续往下走)

最建议的就是不管if下方跟着几条语句,咱都向条件反射一般地在if下方先打入一个花括号,毕竟学校教材总是在语句那里只写一条语句,虽然是可行的,但if下方智能管理一条语句,咱老实人就老实点奥

if(判断表达式)
{
   语句块
}
//不太建议的写法,因为容易只操作一条语句而不自知,
//就像别人触怒(条件)你
//但是你只能骂出来一句小学生语录(跟紧的一条语句)
//有攻击性的话说不出来一样(剩下需要但搞不出来的语句)

if(a==1)
  printf("沃恁爹");
  printf("对不起啦别生气");

2、else用法

(1)简单用法

简单用法就是在if语句的大括号下方写else,若程序不满足if的条件表达式,那么就必然执行else内的语句块。

当然“咱都向条件反射一般地在if下方先打入一个花括号”这一中肯建议同样适用于else。

if(判断表达式)
{
语句块
}
else
{
语句块
}

(2)嵌套用法(有两种写法)

写法一 根源的写法

按照if 和else的语法规则运行

if(exp1)
{
  if(exp2)
  {
  语句
  }
  else
  {
  语句
  }
}
写法二 简写的写法(这样写的话我更愿意叫他分割)

同样按照先前讲解的语法运行

 if(exp1)
 {
 }
 else if
 {
 }
 else if
 {
 }
 else
 {
 }

(3)else就近原则

也就是else会和最上面的且最近的一个if语句构成if else语句
对齐没有任何效果。
拿一个可读性不高的但是经常狗屎学校被拿来出题的东西举例:

int a=0,b=2;
 if(a == 1)
   if(b == 2)
   printf("hehe\n");
 else
  printf("haha\n");
return 0;

运行结果是啥都么有:
此时第二个if和else构成一个if else语句整体,第一个if(没有{})由于能够管理仅仅下一行的代码,而第一个表达式判断为假,故而不执行下一行的代码,不进入第二个if语句的判断,直接return 0 。

二、 三种常用操作符

1、关系操作符

六种:< <= > >= == !=
小于 小于等于 大于 大于等于 等于 不等于
判定通过则降下雷罚(bushi),通过则返回真(即非0值)
假则返回0

必然不能像数学里那样连续使用
举错误例子:a<b<c
举正确例子:a<b && b<c
(&&是逻辑操作符,下面马上讲到)

2、条件操作符(C的唯一三目操作符)

如果exp1为真,那么执行exp2
如果exp1为假,那么执行exp3

exp1 ? exp2 : exp3

3、逻辑操作符(双目操作符)

(1)种类共有三种

逻辑或 ||

只要有一个逻辑或管理的语句为真,那么逻辑或整条语句都为真
如果逻辑或管理的语句全部为假,那么逻辑或整条语句都为假

if(month == 12 || month==1 || month == 2)
{
printf("冬季\n");
}
逻辑与 &&

只要有一个逻辑与管理的语句为假,那么逻辑与整条语句都为假
如果逻辑与管理的语句全部为真,那么逻辑与整条语句都为真

if(month >= 3 && month <= 5)
{
printf("春季\n");
}
逻辑否 !

能够逆转真与假

if(!a)//没有!的原本语句是a非0就执行语句,有了!后是a为0执行语句
{
printf("fuck the world !");
}

(2)逻辑短路

只出现在||和&&的情况里
由于逻辑操作符是从左到右依次执行
那么逻辑或||,只要按顺序执行的时候出现任何一个返回值为真的表达式,那么后面的逻辑或语句就不再执行,整个逻辑或表达式返回值为真。
那么逻辑与&&,只要按顺序执行的时候出现任何一个返回值为假的表达式,那么后面的逻辑与语句就不再执行,整个逻辑与表达式返回值为假。

int i = 0,a=0,b=2,c =3,d=4;
i = (a++ && ++b && d++);
//若i = (a++||++b||d++)是什么结果
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;

运行结果的值是1 2 3 4
开局直接断 对a加1 剩下的的语句都不操作
运行结果的值是 1 3 3 4
判断完b的时候就断 a=0的返回值为假 a加1 b=2的返回值为真 b加1 剩下的语句都不操作

三、 switch语句

C语言用来使用分支结构的另一种语句,是⼀种特殊形式的 if…else 结构,用于判断条件有多个结果的情况。它把多重的 else if 改成更易用、可读性更好的形式。

使用方法:
exp可以是任意整型和字符型(可以是一个式子的计算结果),同样case后面跟的v也必须是整型和字符型。
若exp和case后面的值能对应则执行该条case后面的语句,且没有其他操作语句,就会向下执行下方所有case后面跟着的语句到default后的语句,除非有其他的操作语句。
若不可对应则跳转到default并执行后面的语句(可以没default语句,这样的话在exp和v无法对应的时候就直接结束这段switch语句)

switch (exp) 
{
case v1: statement
case v2: statement
...
default: statement
}

1、特殊语句

(1)break语句

效果是退出当前层级的switch语句

int day = 0;
scanf("%d", &day);
switch(day)
{
case 1:
  printf("星期⼀\n");
  break;
case 2:
  printf("星期⼆\n");
  break;
case 3:
  printf("星期三\n");
  break;
case 4:
  printf("星期四\n");
  break;
case 5:
  printf("星期五\n");
  break;
case 6:
  printf("星期六\n");
  break;
case 7:
  printf("星期天\n");
  break;
}

输入1,则打印:星期一

(2)default语句

可以放在switch语句里的任何地方,但是通常放在结尾处,因为放在哪并不改变其功能。
功能:1、表达式的值与所有case后的值都无法对应时,那么直接执行default后的语句
2、在switch语句里如果没有提前结束switch语句的话,就会按顺序执行到default后的语句

(3)go to语句和跳转标号

go to语句可以在一个函数内实现任意位置的跳转,跳转后按顺序继续往下执行

goto fzx;

fzx: 
printf("嗨嗨嗨,鸡汤来咯");

那么执行到goto这一行的时候,就会直接跳转到跳转标号的位置继续往下执行

共勉

以下就是我对 分支 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出哦,同时我还会继续更新【C】,请持续关注我哦!!!
在这里插入图片描述

标签:语句,---,逻辑,执行,else,新手入门,case,printf,C语言
From: https://blog.csdn.net/sbsztdl/article/details/145146024

相关文章

  • 编程题-最小高度树
    题目:给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。解法一(二分查找+二叉搜索树构建):二叉搜索树的中序遍历是升序序列,题目给定的数组是按照升序排列的有序数组,因此可以确保数组是二叉搜索树的中序遍历序列。二叉搜索树中,左子树的......
  • P1135 - 【入门】歌德巴赫猜想 -
    难度:4-题目描述任一个大于等于4的偶数都可以拆分为两个素数之和。(5.1.40)输入格式一个整数n(4<=n<=200)输出格式将小于等于n的偶数拆分为2个质数之和,列出所有方案!输入数据110输出数据14=2+26=3+38=3+510=3+710=5+5代码:#include<iostream>usingname......
  • P1126 - 【提高】英文翻译 -
    难度:8+输入格式一个自然数n,0<=n<=2^31-1。输出格式输出这个数的英文,最后不要有多余的空格。输入数据11111111111输出数据1onebilliononehundredandelevenmilliononehundredandeleventhousandonehundredandeleven 代码:#include<iostream>#incl......
  • vue中使用axios获取不到响应头Content-Disposition的解决办法
    项目中,后端返回的文件流,fileName是机构名称+服务器时间。前端需要拿到响应头里的Content-Disposition字段的值,从中获取文件名在控制台Headers中可以看到相关的字段和文件名,但是在axios里面却获取不到 如果想要让客户端访问到相关信息,服务器不仅要在heade里添加,还要将它们在......
  • [Machine Learning] 使用经典聚类模型k均值(k-means)实现blobs聚类
    一、内容实现概述本文主要讲述使用scikit-learn库内置的kNN模型,实现鸢尾花分类。具体实现过程如下:1.导入所需库:预先导入numpy、matplotlib以及scikit-learn库2.导入数据:调用sklearn库内置的加载数据的方法make_blobs(),导入斑点数据3.数据预处理:对blobs数据进行预处理,获得......
  • Biotin sulfo-N-hydroxysuccinimide ester ;生物素磺基-N-羟基琥珀酰亚胺酯;生物素衍生
    一、生物素及其衍生物的概述      生物素衍生物是指在生物素(VitaminH或B7)分子基础上进行化学修饰得到的衍生化合物。这些衍生化合物在生物医学研究、临床诊断和药物开发等领域有着广泛的应用。    生物素(Biotin)是一种水溶性维生素,也被称为维生素H或维生素......
  • Laminin Pentapeptide YIGSR-NH2;层粘连蛋白五肽;抗黏附肽;YIGSR;LAMININ (929-933)肽;1105
    YIGSR 简介    YIGSR是一种能够抑制白血病细胞肿瘤生长和转移的多肽。YIGSR通过67kDa层粘连蛋白结合蛋白阻断细胞与层粘连蛋白I的结合,并抑制剪切诱导的层粘连蛋白细胞 eNOS 表达增加。   【中文名称】层粘连蛋白(929-933);抗黏附肽;酪氨酰-异亮氨酰-......
  • (14-4)基于Latent Diffusion Transformer的文生视频系统:视频数据的预处理和增强
    6.4.5 视频数据的预处理和增强文件video_transforms.py主要实现了视频数据的预处理和增强功能,包括对视频帧的随机裁剪、中心裁剪、尺度调整、归一化、随机水平翻转等操作。通过自定义的多种预处理类,例如RandomCropVideo、CenterCropVideo和NormalizeVideo,可以对输入的视......
  • SpringCloudAlibaba:从0搭建一套快速开发框架-04 OpenFeign的使用
    序言:上篇安装了Nacos并注册了系统服务,本篇主要介绍OpenFeign的集成使用。OpenFeign简介OpenFeign是一个声明式的HTTP客户端,它通过注解的方式简化了调用RESTfulAPI的过程。它是SpringCloud的一部分,用于在微服务架构中简化服务间的通信。与传统的使用RestTemplate......
  • ffmpeg简易播放器(2)--了解音频格式
    声音是个啥初中物理学过,声音是由物体振动产生的,声音是一种机械波,传播的介质是空气。声音的频率决定了声音的音调,频率越高,音调越高。声音的振幅决定了声音的大小,振幅越大,声音越大。也就是说,声音实质上是一个连续的信号,他有着频率以及振幅这两个基本属性。而我们的音频文件无非就......