c语言是一种【结构化】的程序设计语言,大致可分为三种结构:
顺序结构
选择结构【if switch】
循环结构【while for do..while】
现在将对这几种语言做一一的介绍。
if语句
语法结构:
if(表达式)
语句;
else if(表达式)
语句;
else
语句;
举一个简单的例子:

这便是一个最简单的if语句。如果if表达式中判断表达式为真,则执行该条语句。当然,我们也可以在其中加上一些其他的else if语句,使得整个程序变得更加饱满。
现在我们来看接下来的一个程序代码

按照正常的流程,我们可能会认为结果打印的是haha,但是让我们来看一下运行结果:

结果却是空白,这是为什么呢?
原因是if else的语句匹配。
请大家切记:else只与最离它最近的if匹配!
正常的程序代码应该是:

如果我们这样看的话,是否就能一眼明了到底谁跟谁匹配了呢。
所以说代码风格对于一个程序员来说是非常重要的。
switch语句
switch语句作为一个分支语句,与if语句的判断比较相似
语法结构:
switch(整形表达式)
{
case:语句;
}
现在我们来看一个例子:

录入一个1-7的数字,我们可以根据switch语句准确地判断该走哪条循环

但是我们要注意break的使用,我们来看一个没有合理使用break的例子。如果我们把case567语句后面的break去掉,结果就会变得不一样。

这是因为我们在去掉break后,从case5出来的语句不会跳出分支循环,而是会直接进入下一个case分支,一直到最后一个分支结束。
当然,我们可以对代码做一些简化,例如输入67的时候输出统一为休息日。只需要将上面代码稍作修改:

结果如下:

default语句
如果以上的case语句都没有合适的判断语句,我们可以使用default语句在判断条件,default语句和case语句是一样的结构,并且没有特别的位置要求,只要语法结构是对的即可。
while语句
语法结构:
while(表达式)
循环语句;
举一个简单的例子:打印1-10的整数。

while后面括号中的是判断条件,若在其中加上一条continue语句会怎么样呢?

continue语句在此次循环中会跳出此次循环,进入下一次循环的判断语句,因为判断条件一直成立,所以光标会卡在4之后不动了。
由此我们可得continue的作用是跳过本次循环,直接进入下一次循环。
getchar字符
我们在写代码时容易遇到一些问题,现在我们来看一个例子:

在我们输入密码之后,本来应该确的y与n还没打出来就直接跳转到确认成功与失败了,这是为什么呢?
这是因为,scanf与getchar并不是直接从键盘输入得到字符的。
键盘在输入一个字符后,字符会先送到缓冲区,scanf和getchar从缓冲区中取字符再送入变量中。
例如我们输入了123456作为密码,按下回车后,缓冲区中一共有123456\n这几个字符,但是scanf在接受到缓冲区数字后,只把123456拿走了,留下了一个\n,这就使得getchar在来到缓冲区后,发现缓冲区中的\n(回车键),便直接把\n带走了,从而导致我们还没输入确认密码就直接跳转了。

此时我们需要一条语句来处理这条空格

这样即可成功去掉多余的\n。