1〉顺序结构
顺序结构是按照代码的书写顺序从上到下执行的结构。
顺序结构是C语言最简单、最基本的结构。
举个栗子:打印个人信息
1>C语言在使用scanf()函数读取用户输入的字符串时,如果遇到第一个空白字符(空格,制表符、换行符),就认为完成数据读取工作,后面的数据不再写入当前变量,而是保存在输入缓冲区中,等待下次scanf函数的输入。
2>%4d表示以4位的宽度显示整型数据
3>%4.2f表示以4位的宽度显示浮点型数据,且保留两位小数
4>%-20s表示以20位的宽度显示字符串,并且左对齐
5>在输入时,如果忽略字符串,可以通过*修饰字符串转换说明符。
例如: int age;scanf("%*s%d",&age);
2〉选择结构
选择结构主要分为两类if语句和switch语句。
1〉if语句
1)单分支语句
语法结构: if(表达式){ 语句块 }
含义:如果表达式的结果为真,则执行语句
2)双分支语句
语法结构:if(表达式){ 语句块 }
else{ 语句块 }
含义:如果表达式的结果为真,则执行语句块1;否则,执行语句块2。
3)多分支语句
语法结构:if(表达式1){ 语句块 1 }
else if(表达式2){ 语句块2 }
else if(表达式3){ 语句块3 }
else{ 其他情况的语句块 }
含义:如果表达式1的结果为真,则执行语句块1;否则,如果表达式2的结果为真,则执行语句块2; 否则,如果表达式3的结果为真,则执行语句块3; 其它情况,执行其它情况的语句块
注意:语句块的含义就是有多条语句,多条语句必须要用{}进行包裹;如果语句块中只有一条语句,可以省略{}。但C语言建议不要省略。
思考:上面的代码是否可以进行优化?
有一种简化结构:悬空else
但将其打印运行时,我们发现什么都没有打印,这是为什么?
我们将代码格式化后发现else与和它最近的if进行匹配。
我们将其改正
由此在简化代码时我们要注意语句是否对应正确。
2〉switch语句
它是一种多分支结构,其结构为
注意:
<1>switch语句中应该在每个选项的最后都添加 break ;
<2>break的实际效果是把语句列表划分为不同的部分;
<3>switch-case结构中声明局部变量要在每个case下加一个大括号;
<4>default子句
如果表达式的值与所有的case选项都不匹配,怎么办?
其实也没什么,结果就是所有的语句都被跳过而已,程序并不会终止,也不会报错,因为这种情况在C语言中并不认为是错误。
<5>编程好习惯:在每个switch语句中都放一条default子句,甚至可以在后边再添加一个break。