1. printf
"printf()"函数,可以打印非输出控制符,打印单个输出控制符,打印多个输出控制符。
1.打印非输出控制符
键上可见的就不做介绍了,其中比较隐晦的有
\n 换行符
\t 横向制表符
\v 纵向制表符
\b 退格符
\r 回车符
\\ \字符
\" "字符
空格也是字符。
2.打印单个输出控制符
输出控制符有
%d 按照十进制打印
%o 按照八进制打印
%x 按照十六进制打印
%c 按照字符打印
%f 按照浮点数类型打印
%s 按照字符串打印
%p 按照指针类型打印
%u 按照无符号类型打印
%e 按照科学计数法打印浮点数类型
%% 打印%号
3.打印多个输出控制符
如:
int Num1 = 100;
int Num2 = 200;
printf("Num2 = %d, Num1 = %d\n", Num2, Num1);
要注意,输出控制符的个数要与后边表达式的个数相匹配。
4.printf格式化打印
%nd n:域宽,数据不足域宽,高位用空格补齐
%0nd 0:数据不足域宽,高位用0补齐
%-nd -:左对齐
%.mf m:保留小数点后m位有效数字
2.scanf
scanf可以接收非输入控制符,可以接收输入控制符,可以接收多个输入控制符。
1.接收非输入控制符
scanf("m");
只有输入一个'm' 才能被scanf函数接收
2.接受输入控制符
%d 按照有符号十进制接收数据
%c 按照字符接收数据
_%c 接收一个' '和'\n'的字符
%f 按照float接收数据
%lf 按照double接收数据
%s 按照字符串接收数据
注意:
1.scanf如果输入数据与想要接收的数据不匹配,从不匹配的位置开始不再向后读取
2.scanf除了%s形式外,都需要加 &
3.scanf除了%c形式外,均无法接收' '和'\n'字符
4.scanf中_%c可以屏蔽' '和'\n'字符
5.scanf中严禁\n
这样一个例子,我自己遇到的。
char ch[32]={0};
scanf("%s",ch);
puts(ch);
gets(ch)
printf("%s",ch);
输入一个hello world猜猜结果是什么
输入:hello world回车
结果:
hello
空格world
我个人理解,按回车键后,hello world+回车键被送入了标准输入流中,scanf的%s不接受空格和\n,所以只接受完hello就执行完毕了,所以puts就打印出了hello,而且puts会自动输出一个\n来换行,轮到gets来执行了,但我们已经不能输入了,说明get执行了而且后边的printf打印出了空格world,未被 scanf接收的空格world和回车还留在输入数据流中,就被gets一并接收了,因为gets检测到了末尾的回车,所以就直接执行完毕了。最后由printf打印。
接收一个整形数,存入n中,"&n"代表取n的地址,"&" 是取地址符。
3.接收多个输入控制符
3.流程控制
1.顺序结构
从main函数开始执行,执行到main结束
2.分支结构
1. if
1.简单分支:
if (逻辑表达式)
{
语句块1;
}
else
{
语句块2;
}
注意:
1.if后面必须加判断条件 else不能加判断条件
2.if可以脱离else单独使用,但是else不能脱离if单独使用
3.if和else不加括号,默认控制一句代码,为了保证程序不出错,
一句代码也要加括号
4. 逻辑表达式
1.关系运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
3 > 5 假
3 < 5 真
5 >= 3 真
Num <= 5
3 == 5 假
5 == Num
Num != 5
5.逻辑运算符
&& 逻辑与 一假为假,全真为真 既..又..
|| 逻辑或 一真为真,全假为假 要么..要么..
! 逻辑非 真取非得加,假取非得真
Num >= 0 && Num <= 100
Num < 0 || Num > 100
截断特性:
1.逻辑与左边为假值,右边不再计算
2.逻辑或左边为真值,右边不再计算