编程环境:vs2022(x86)
为什么说是初识篇呢?
1.作为个人第一篇学习内容博客,可谓真是无从下手!
2.作为一名初学者,要做到初步认识与归纳,才能更加深入。
3.内容仅涵盖基本的语法,例子,常见错误与练习仅供初学者参考。
首先,C语言是一门结构化的高级程序设计语言
可分为:
顺序结构
选择结构(if,switch)
循环结构(while,for,do while)
其次,认识语句
由一个分号隔开就是一条语句,类似的只有一个分号,我们就叫它空语句
//那接下来,就可以开始对分支与循环语句的了解了
1.选择结构-分支语句(选择语句)---if语句
先来认识它的语法结构吧:
<1>if(表达式) //若表达式为真(即非0),执行语句,否则,什么都不执行,要注意
语句; //的是,表达式为假可就不进if语句了
<2>if(表达式) //若表达式为真,执行语句1,否则,执行语句2
语句1;
else
语句2;
<3>if(表达式1); //此为if的多分支即else if的个数取决于你,但只能执行一条语句
语句1;
else if(表达式2);
语句2;
else
语句3;
可以看出,只要逻辑清楚,是很容易理解的,那让我们来看看它要注意什么吧:
<1>他们彼此是可以嵌套使用的,在后面解逻辑缜密的题目时,你自然而然就会使用
<2>要执行多条语句时,需要用到代码块,即我们平常说的大括号或者花括号(后面还会提)
<3>else只会与它离得最近的,未匹配的if相匹配,与位置可没关,定语好多啊!上例子!
可以看到,什么也没输出,唉?等等,刚说了执行多条语句要用代码块,这里为什么没有?因为else与它上方的if相匹配,构成了一条语句,符合语法,但是格式很挫,所以要养成尽管1条语句也要加{ }的习惯,虽然有些麻烦,但不容易出错啊!(尽管我们的c课老师天天这样写)。好了我们回归正题,因为第一个if条件为假所以就不执行它的语句即后面的打印,如果我们在第二个if语句外加上{ },来看
这里else就与第一个if匹配了,也不难理解吧!
<4>if以及else if后面跟的()后面可没有分号啊,对于初学者来说,这是很容易犯的错误并且很难发现,可else那一行报错了,为什么?因为没有与它相匹配的if了,分号去掉OK
<5>if后面表达式常见的错误
这可不是判断num是否等于5啊,这是将5赋给了num,表达式结果还是真,所以会打印,正确意思要用==,虽然这是运算符的知识点,但是这也是新手在这一章常犯难找的错误
2.选择结构-分支语句(选择语句)---switch语句
C语言也为多分支情况提供了一种语句即switch语句,同样的,先来认识语法结构:
switch(整形表达式) //整形表达式用char类型当然可以,本质是ASCII码值嘛
{
case 整形常量表达式://这里case后要有空格隔开表达式
语句项;
...... //可以有很多情况
}
很短也很好理解吧,那接下来我们来介绍与它形影不离的两个语句吧
<1>default
英文原意是默认的意思,那就好理解了,例如给定5种情况,那你要是输入其他情况(非法情况)该怎么办,那就用到default语句,当然,它的存在可有可无,为了完善代码,最好还是加上!
<2>break
这个更好理解了,break是中止,停止的意思,在switch语句,它被用来执行完对应语句跳出来,在后面提到循环时他也有跳出循环的功能,上图!
可以看到,执行完第一种情况后,没有break,它就会一直执行直到遇到break,所以你输入1-5的数字都会打印工作日,类似的,6,7两天会被打印为假期,这里也用到了default,当你输入的情况不在1-7里面时,就会打印 有这一天吗!!!所以要想打印输入情况的一种,就每个情况后都加上break。
那我们再来说说它们的注意事项
<1>default的位置是不定的,放到哪里都行,但只能出现一次,并且建议default的后面也要有break(尽管你要放到最后)
<2>switch语句允许嵌套使用,但仍需注意使用break,下面给定一个例题
先说结果,m=5,n=3,注意第3个情况后可没break,即执行完嵌套后还会执行第4种情况,总之,记住只有遇到break才会停止!
<3>switch语句可以出现if,break,但是不能出现continue!(后面会介绍continue)
3.循环结构-循环语句 ---while循环
来到重要的一节了,循环!先来看while的语法结构:
while(表达式) //表达式为判断条件,结果为真,进到循环
{
循环语句;
} //建议不管内容多少都给上代码块
然后介绍break与continue:
<1>break就是直接跳出循环,简单粗暴,后面两个循环语句它都是这个功能,不再累赘
<2>continue功能为终止本次循环后面的代码,直接跳转循环的判断条件,while与do while在continue时功能一样,但for略有差异,稍后会介绍,先给图理解它们在while中的用法:
可以看到,当用到break时,当i等于5时,直接跳出循环,来到了程序结尾,故结果为1,2,3,4然后程序结束,而用到continue时可以明显看到光标落到了4的后面,说明程序并没有结束,为什么呢?因为它只是终止后面的循环内容,然后来到判断条件,i此时为5,再进循环,遇到continue又来到判断条件,诶,没错,i的结果为5会一直循环,程序就没法结束。好,如果我们将i++放到if的前面呢?这里不再解释,放到前面并且用continue,结果为1-11而没有5。
3.循环结构-循环语句 ---for循环
for循环相比其它循环在风格上有明显优势,体现在哪,来看看它的语法结构:
for(表达式1;表达式2;表达式3) //表达式123分别为初始化,条件判断,调整
{
循环语句;
} //同样建议带上代码块
很明显,一个括号就让循环要做的内容都做了,风格优势就体现出来了,逻辑也很明了,那刚刚在说continue时说for与其它略有差异在呢?看例子:
可以看到不同的是,竟然没有进入死循环啊,差异就体现在因为这里continue终止本次循环后面代码后会来到调整阶段即i++,所以再判断的时候i已经变为6了,所以结果只是不打印5而已,初学者要注意区分。
那for有什么要注意的吗?
<1>不可在for循环体内修改变量,放在for循环失去控制
<2>建议for语句的循环控制变量取值采用左开右闭的写法
<3>for循环的初始,调整,判断部分都可省,若判断部分被省略,即判断条件会恒为真,建议对于初学者来说,不熟练不要省
<4>for可用两个循环变量
值得一提的是,当真正用到的时候,会自然就注意到这些规则,不再举例子
3.循环结构-循环语句 ---do while循环
终于来到最后一个循环了!看语法
do //从这里可以看到循环特点是循环至少会执行一次
{
循环语句;
}while(表达式); //while判断为真后会回到循环
continue在do while中的用法:
程序没有结束,说明陷入了死循环
基本内容大致如此,初学者如果想要练习可以参考以下几个经典题目:
<1>求n的阶乘并计算阶乘之和
<2>二分查找
<3>模拟用户登录,3次机会,均错误则退出程序
<4>3个数从大到小排序
<5>求最大公约数
<6>求100-200间的素数(质数)
<7>打印1000-2000内的闰年
<8>1-100整数之间出现9的个数
<9>计算1/1-1/2+1/3-1/4+...+1/99-1/100的值
<10>求10个整数中最大值
<11>打印9*9乘法口诀表
(程序参考会在积累了一些练习后,发表新的博客---刷题篇中展示)