期末复习二

时间:2022-12-15 12:12:57

一、常用printf转换描述

期末复习二

平时很少用的几个点:

%ld 表示长整型 long int

%%---输出%       

%o---输出八进制

%o和%#o的区别:

期末复习二

%#o更让我们清楚八进制的形式

%x和%#x打印十六进制也是如此、


期末复习二

%md是我们常见的转换描述。默认右对齐,前面加上-负号就是左对齐,我们在打印99乘法表时,-2d就是表示左对齐,每个数字占2个宽度

%m.nf不太常见,m表示占几个宽度,n表示小数点后位数(值得注意的是,若小数位数比规定小数点后位数长,需要截断,按照四舍五入!这也是C语言唯一一个需要四舍五入的地方

tip:小数点算一位!

总结:看.后面的数!

经典例题:

期末复习二

期末复习二


二、表达式

1、关系表达式

a、关系表达式的数值只能是1(真)或0(假)

如果9>8这个关系表达式是真的,所以9>8这个表达式的数值就是1

b、考试易错题:

期末复习二

关系表达式的优先级是从左到右,1<0为假,返回值就是0,而0<2为真,返回值就是1,所以总表达式输出结果就是1!


2、条件表达式:

表达式1?表达式2:表达式3

考试口诀:真前假后

当表达式1的值是非0时,采用表达式2,当表达式1的值就是0时,采用表达式3


3、break和continue的差别

break是打破的意思,(破了整个循环),所以看见break就要退出整个一层循环。

continue是继续的意思(继续循环),但是要结束本次循环,就是循环体内部的语句不再执行,跳到循环开始,进行新一轮的循环


4、不停的输入,直到输入#停止输入

while((x=getchar())!='#')


5、经典考题

期末复习二

首先明确while()括号里面不为0就是真,为0就是假,跳出循环。

解题思路:

第一个先--,k为0,跳出循环,所以只减了一次;第二个先使用,发现等于一,需要再次--,一共经历了两次--,最后结果就是-1


三、指针经典考题

a、

*p++和(*p)++的区别

前者本质是地址++,后者p的本身的值会++

期末复习二

*p++,意味p指向首元素地址,而*p++本质是地址++,所以就变成第二个元素的值,---3

(*P)++本质是值++,所以1++就变成2

b、

p和*p的区别

p的本质是地址,而*p表示地址里面的值!

c、

二级指针

期末复习二

解答:把*q看成一个指针整体,所以*q就表示p的地址,而**q才表示p地址里面存放的值7!

值得注意二级指针只能存放一级指针的地址,不能存放变量的地址

期末复习二