前言

对于一个C言语菜鸟来说,说出这些话无疑是大吹牛皮的,但我有信心也有才能为咱们讲好C言语,体系的带咱们入门C言语,也期望咱们可以信任我,支撑我,在接下来的几个月中,我会继续更新这个系列,当然,我的笔记也会同步更新的,感谢咱们的支撑!假如觉得内容还不错的话,点一个小小的赞和支撑吧!

课前预备

内容总览:

分支句子

if

switch

循环句子

while

for

do while

\

信任咱们都听说过一句话是:C言语是结构化程序设计言语,可是为什么这么说呢?咱们想一下咱们日子中做一件事,有三种情况,言语表明呢,不是很好表明,先给咱们画图表明一下!

C语言初阶教学----分支和循环(1)

这个图画得的确不是很好,但我觉得咱们应该能了解到我的意思,这三种做事或者解决问题的办法,也别离对应着C言语中的三种结构(不得不感叹最初编程设计言语的笼统归纳才能),这个当地需求告知咱们,C言语中也只有这三种结构,而咱们今日讲的也便是分支和循环句子,对应的也便是分支和循环结构,那么我为什么不讲次序结构呢?

由于在计算机中,在没有分支和循环结构参与的情况下,所有的程序都是默认的次序结构,即程序是次序履行的,所以次序结构并没有讲的必要,一起,次序结构也是咱们可以进行程序编程的根底地点,也是计算机的根底内涵逻辑地点,从某种程度上讲,在进行分支和挑选结构的过程中,也同样在进行着次序结构。

\

1.什么是句子?

C言句子子可分为以下五类:

(1)表达式句子(例如 y=x+3;假定变量y和x均已界说)

(2)函数调用句子(MAX(x,y);假定函数MAX()现已界说)

(3)操控句子

(4)复合句子(把多种句子复合在一起形成的句子)

(5)空句子(例如 ;分号本身就可以作为一条句子,称为空句子,至于空句子的作用,后续会讲到 )

不管上述哪一种句子,都必须以分号完毕!

今日介绍的分支和循环句子便是操控句子。

\

操控句子用于操控程序的履行流程,以实现程序的各种结构方式,它们由特定的句子界说符组成,C言语有九种操控句子。

可分红以下三类:

  1. 条件判别句子(也叫分支句子):if句子、switch句子;

  2. 循环履行句子:do while句子、while句子、for句子;

  3. 转向句子:break句子、goto句子、continue句子、return句子。

\

2、分支句子(挑选结构)

C语言初阶教学----分支和循环(1)

你遇到了你喜欢的女生,假如你表达了,她成了你的女朋友,你和她在一起了;

假如你没有表达,她成了他人的女朋友,你看着她躺在他人的怀里,后悔莫及。

这便是挑选!

C语言初阶教学----分支和循环(1)

当然,也有多分支挑选,假如你表达成功了,她成了你的女朋友;相反,假如你表达失败了,她说:你是个好人,假如你压根就没有表达,那她终究仍是成为了他人的女朋友。(遇到喜欢的人就要勇敢表达哦!!)

2.1if句子

那if句子的语法结构是怎么样的呢?

C语言初阶教学----分支和循环(1)

if()括号中的表达式假如为真,就履行后边的句子;假如为假,就不履行后边的句子,去履行else后边的句子,那么什么是真?什么是假呢?

C言语规则,0为假,非0为真。

\

下面就代码给咱们演示一下吧!

首要是单分支的情况:

C语言初阶教学----分支和循环(1)

然后是双分支的情况:

C语言初阶教学----分支和循环(1)

接下来是多分枝的情况:

C语言初阶教学----分支和循环(1)

哎,许多同学们看到这就想问了,多分支情况下后边的条件判别是不是不写前面的age>=18也是可以的呢?很明显当然是可以的,由于前面不满意age<18的时分此刻age是必定大于18的了,那么此刻依照道理来说,咱们不写age>=18也是没有问题的,但这个当地,引荐同学们仍是要加上的,为什么呢?咱们将来写代码,不仅仅是给自己看的,也是要给他人看的,加上之后,条理就很明晰明了,便利他人查看的一起,也有利于咱们后期的维护与调试。

\

看到这,信任同学们也会有这样的疑问,便是咱们在写条件表达式(age>=18&&age<60)的时分可不可以这样写呢?(18<=age<60)信任咱们会有这样的疑问,其实有这样的疑问也是正常的,由于咱们在数学中便是这样写的,但这样写究竟行不行呢?咱们直接代码走起!

C语言初阶教学----分支和循环(1)

C语言初阶教学----分支和循环(1)

在同学们看到第一张图的时分,哎,感觉没问题啊,但看到第二张图的时分,出问题了!为什么会呈现这种问题呢?接下来呢,我给咱们剖析一下! 咱们知道,> >= < <= == ,这些运算符都是联系运算符,假如成果为真,就回来1,假如成果为假,就回来0,并且结合方向是自左向右 (有关于运算符的结合方向,我会把各种运算符的结合方向以图片的方式在本篇文章的最后分享给咱们) ,在第二个比如中,咱们输入了100,首要对第一个if后边的表达式进行判别,很明显,100>18,不满意条件,接下来进入了第一个else if句子进行判别,18<=100,是真的,回来1,然后1<60,是真的,终究,回来1成果是成立的,所以会输出“青年”,信任咱们看到这就理解了,在计算机中是不可以这样写的,虽然语法上没有问题,但逻辑上却无法正确表达咱们的意思,无法满意咱们的要求,所以不要这样运用!

\

看到这许多同学们又有问题了,那咱们在if()的后边直接跟一个变量是不是也是可以的呢?是的,彻底没有问题!由于上面现已说了,c言语规则,0为假,非0为真,所以在if()后边直接跟变量是彻底没有问题的! 假如变量值为非0,那么判别成果为真,就履行后边的句子,假如变量值为0,那么判别成果为假,就不履行后边的句子。

\

一起在这给咱们顺便提一下,赋值表达式的回来值是赋的值本身,即if(i = n)中(n为常数),假如n为0,那么回来值为0,假如n为非0,那么回来值为n,即回来值为非0,为真,会履行后边的句子,一起告知咱们,printf和scanf函数也是有回来值的,小伙伴们课下可以自己去查一下哦!

\

假如咱们想对if有更深化的了解的话,就可以看我另一篇有关于if的博客,那篇文章对if有个比较深化的探求!

\

假如条件成立,要履行多条句子,则应该运用代码块!事实上,我前面就全部都运用代码块了,那么什么是代码块呢?C言语中,被{}括起来的叫做代码块,接下来给咱们代码展现一下,假如不必{}会怎样!

C语言初阶教学----分支和循环(1)

咱们都看到了,假如咱们想在if后边跟多条句子的话,咱们不必{}就会犯错,这是由C言语语法本身所决定的,由于这样的话,后边的else就没有匹配的if了,默认情况下,if后边只能跟一条句子,而计算机把{}内的句子当作一条句子,所以咱们假如if后边想跟多条句子的话,就要用{}括起来形成一个句子块。

简单给咱们代码展现一下:

C语言初阶教学----分支和循环(1)

我给咱们的主张呢。便是不管后边跟的是几条句子,咱们都加上{} ,为什么这么说呢,第一个原因便是防止咱们在if后边跟多条句子时可能会忘了加{};第二个原因是就代码块愈加简洁有条理;第三个原因就便是今后便利咱们今后再向里边增加代码。

2.1.1 悬空else

下面给咱们一段代码,期望咱们可以给出输出的成果!

C语言初阶教学----分支和循环(1)

信任咱们有人会给出”hehe” 的输出成果,也会有人给出”haha”的输出成果,当然也有人会给出一些其它的成果,咱们都各有各的想法,这并不会让人意外,那我告知咱们,输出成果是空白,咱们会感到意外吗?咱们可能会觉得我说的是假的,那我就给咱们代码展现一下!

C语言初阶教学----分支和循环(1)

没错,输出成果的确是空白,这个成果的确让人感到意外,这个题中咱们需求学习的知识点是,else总是跟最近的If进行匹配!

\

该如何了解这句话呢?咱们就以下面这段代码为例给咱们解释一下吧!

首要只看这张图的话,很简单让人误解后边的这个else会跟if(a==1)进行匹配,可是咱们应该记住else契合就近原则,即总跟最近的未配对的if进行匹配,从这个else向前找前面的if句子,首要找到的一个未配对的if句子是if(b==2),信任咱们清楚了这个这个就不难了解了,下面给咱们展现一下代码的本来面目!

C语言初阶教学----分支和循环(1)

看到这咱们应该都能了解了吧,首要对if(a==1)进行判别,不成立,然后后边的if(b==2)与else句子均不履行了,咱们可以这么了解:if和else组成的是一个句子 。

\

实际上,这个代码咱们还可以去改进一下,使这个代码变得愈加的明晰,愈加的便利咱们的了解:

C语言初阶教学----分支和循环(1)

这样加上一个代码块是不是更有助于咱们的了解了呢? 所以代码标准很重要!

这个当地呢,期望咱们可以养成杰出的代码书写风格,使代码美观、契合标准、并且简单了解!在这给咱们引荐一本书,叫《高质量的C-C++编程》,里边有许多杰出的代码书写风格还有一些好的习气,咱们可以去网上找一找,应该使可以找到电子版的,假如有时间,我也会依据书上的内容写一些相关的博客!假如咱们真实找不到,就在谈论区告知我,我会分享在谈论区的。

\

2.1.2if书写方式的对比

首要咱们看代码1和代码2,它们表达的意思是彻底相同的,便是假如condition条件成立,就履行return x;句子回来x,反之不成立就履行return y;回来y,可是代码块2表达意思就比代码块1更简单了解,逻辑也愈加的明晰,期望咱们在写代码的时分能像代码2相同这样写!

\

//代码1
if (condition) {
    return x;
}
return y;
//代码2
if(condition)
{
    return x;
}
else
{
    return y;
}
//代码3
int num = 5;
if(num == 5)
{
    printf("hehe\n");
}
//代码4
int num = 5;
if(5 == num)
{
    printf("hehe\n");
}

\

接下来咱们看代码3和代码4,它们表达的意思是彻底相同的,那我为什么还要给咱们讲这个点呢?是由于老是有许多同学在写if(num==5)使写成了if(num=5),留意虽然前后两者的成果是相同的(后边表达式是否履行),但它们所表达的意思却是彻底不同的,前者是进行判别,而后者是进行赋值,履行完这条句子之后,前者的num的值并没有发生任何改动,而后者不管原先num的值是否为5,在履行完if(num=5)之后,num的值都将变成5。

它们的断定成果的确是相同的,为什么呢?前面现已给咱们说了,赋值表达式的回来成果是所赋的那个值,在第二个句子中赋的值为5,所以回来值为5,是非零的数,为真,而前者由于num本身就等于5了,所以断定成果为真,两者都为真,均履行后边的句子。

这两种写法第二种虽然是过错的,但成果确是正确的,但所形成的结果却是天壤之别的,期望咱们可以留意!

\

然后给咱们讲讲为什么我要给咱们展现代码3和代码4,依照咱们正常的逻辑来说,咱们应该会像代码3这样写,但前面现已给咱们说了,代码3这样写咱们会很简单写成if(num=5),从而改动了变量的值,那为什么要写成代码4这样呢?便是为了防止犯这样的过错!给咱们代码展现一下咱们就理解了!

C语言初阶教学----分支和循环(1)

在这种情况下,假如咱们仍是依照过错的办法去写,很明显程序就报错了,为什么会报错呢?咱们只能给变量赋值,即咱们书写赋值句子的时分,=左面必须是变量,而不能是常量!这样编译器一旦提示咱们程序过错,咱们一检查,就知道自己又犯了老过错,就能及时更正过来!所以引荐咱们在写if()里边的条件判别表达式时,将常量放在联系运算符的左面!

好了,今日的分支和循环(1)就到这了,假如咱们觉得不错的话,点个小小的赞和关注吧,后边还会继续更新哦!

\

给咱们分享的操作符结合性次序表:

C语言初阶教学----分支和循环(1)

C语言初阶教学----分支和循环(1)

C语言初阶教学----分支和循环(1)