Scanf函数基本概念
scanf函数是一个阻塞式函数
程序会停在scanf函数出现的地方,
格式:scanf("格式控制字符串",输入项地址列表);
输入项时,各个地址名之间以逗号“,”分隔。输入格式和变量类型要保持一致。
|格式|意义|
|--|--|
|d|输入一个十进制整数|
|o|输入一个八进制整数|
|x|输入一个十六进制整数|
|i|输入一个有符号或无符号的十进制、八进制、十六进制整数|
|u|输入一个无符号十进制整数|
|f 、e或E、 g或G|输入一个小数形式或指数形式的浮点数|
|c|输入一个字符|
|s|输入一个字符串|
scanf("%d", &num);
非法的输入
除"空格","回车","tab"之外, 如果输入的数据和scanf接收的数据不匹配将会自动结束接收
运算符优先级
!(非) // 注意
↑
算术运算符
↑
关系运算符
↑
&&和|| // 注意
↑
赋值运算符
¬¬与短路:&& 只要第一个条件表达为假那么后面的条件表达就不参与运算了
或短路:|| 只要第一个条件表达式为真那么后面的条件表达式就不参与运算了
三目运算符格式:表达式1?表达式2(结果A):表达式3(结果B)
3种流程结构分别是顺序、选择、循环三种基本控制结构构造.
• 顺序结构:默认的流程结构。按照书写顺序从上至下执行每一条语句。
• 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
• 循环结构:在给定条件成立的情况下,反复执行某一段代码。
if基本概念
• if(表达式1)
• {
• 语句块1
• }else if(表达式2){
• 语句块2
• }else if(表达式3){
• 语句块3
• }else{
• 语句块4
• }
• Switch基本格式
switch(表达式){
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2; ...
break;
case 常量表达式n:
语句n;
break;
default:
语句n+1;
break;
}
计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
switch中case后面的表达式的值不能相同
case的值1、值2...值n只能为常数或常量,不能为变量。
switch里面的case只要匹配一次其它的都失效,包括default. 正是因为switch的这个特性, 所以可能导致程序出现逻辑错误
执行流程:在执行的过程中,如果遇到break语句,则跳出switch语句。如果没有遇到break语句,则一直执行到switch语句的结束。
分支比较多且无法穷尽或进行大量列举时最好用if, Switch对遇见判断非常不利
如果数据量不是很大, 并且数据是固定的可以用Switch
理论上Switch的效率比if高
循环结构概述
循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段, 直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。
C语言供了多种循环语句,可以组成各种不同形式的循环结构:
goto语句和if语句构成循环;
while语句;
do-while语句;
for语句;
一般来说一个循环需要以下几部分构成:
循环控制条件
循环退出的主要依据,来控制循环到底什么时候退出
循环体
|
|