1.scanf的使用:
(1)scanf 出现非输入控制符,需要从终端原封不动的输入;
(2)scanf 除%s外,后面必须加&符;
(3)scanf 中%c外,无法接受' '和'\n'
(4)scanf中禁止出现'\n'
(5)scanf中,用_%c接受一个非' '和'\n'的字符;
1.1 scanf接收非输入控制符
scanf("m");
双引号中间的内容要从终端原封不动输入
1.2 scanf接收输入控制符
%d 按照int类型接收数据
%f 按照float类型接收数据
%lf 按照double类型接收数据
%c 按照char类型接收数据(可以接收' '和'\n')
_%c 按照char类型接收数据(无法接收' '和'\n')
%s 按照字符串类型接收
如:char ch = 0;
scanf("%c", &ch);
1.3 scanf接收多个输入控制符
如:int num1 = 0;
int num2 = 0;
scanf("%d%d", &num1, &num2);
2. gets和puts
2.1 puts
功能:在终端打印一行字符串( puts会多打印一个\n字符);
注意:
puts和printf的区别:
1.puts会多打印一个\n字符
2.printf不会多打印\n字符
2.2 gets
功能:从终端接收一行字符串(gets会去掉从终端接收的\n字符)
注意:
gets和scanf的区别:
gets:可以接收带' '的字符串
scanf:无法接收带' '的字符串
===============================
3.流程控制:
(1)顺序结构(2)分支结构(3)循环结构
3.1 顺序结构:
从main函数第一句开始执行,执行到main函数结束
3.2 分支结构:
1.判断时候使用分支语句;
2.同一类数据执行不同操作的时候使用分支语句;
3.2.1 if分支:
(1)简单分支:
if (逻辑表达式)
{
语句块1;
}
else
{
语句块2;
} 注意:
1.if后面必须加条件,else不能加条件
2.if可以脱离else单独使用,但是else不能脱离if单独使用
3.if和else不加大括号默认控制1句代码
3.2.2 阶梯分支:
if (表达式1)
{
语句块1;
}
else if (表达式2)
{
语句块2;
}
else if (表达式3)
{
语句块3;
}
else
{
语句块4;
}
3.2.3嵌套分支:
if (表达式1)
{
if (表达式2)
{
if (表达式3)
{
}
}
}
最多嵌套3 - 5层,深层次嵌套会影响代码的可读性
4. 逻辑表达式:
(1)关系运算符:
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
(2) 逻辑运算符:
&& 逻辑与 既..又.. 一假为假,全真为真 num >= 0 && num <= 100 num在0-100之间
|| 逻辑或 要么..要么.. 一真为真,全假为假 num < 0 || num > 100 num在0-100之外
! 逻辑非 真取非得假、假取非得真
截断特性:
逻辑与左边为假值,右边不再计算
逻辑或左边为真值,右边不再计算
(3)三目运算符:
逻辑表达式?表达式1:表达式2;
a > b ? a : (b > c ? b : c);
C语言中运算符结合方向:
1.大部分自左至右
2.单目运算符 自右至左
赋值运算符 自右至左
三目运算符 自右至左