持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情
选择题
左对齐30个字符——
-
表示左对齐,所以是-30
,4位精度就是.4
,10进制%f
,那么%e
是什么东西呢?%e
表示浮点数,e计数法。
double a = 314159.26;
printf("%e", a);
e这种东西相当于科学计数法,e后面是指数,前面表示有效位。
本题考查的是指针常量,和常量指针。 指针常量:指针是个常量,即指针不能改变,指针指向空间的内容可以改变。(可以这样记忆:指针是个常量) 常量指针:指针指向的空间是个常量,空间的值不能改变,指针可以改变。 怎么判断呢? 用
const
进行判断,看const
的位置。 把无const
修饰的变量赋值给有const
修饰的变量,是没有问题的,这可以看作权限的缩小,权限缩小没有问题,但是权限不能变大。 (1)这里的const
修饰的是*p1
,即p1指向的内容不能改变。指针的值可以改变。只不过没有给它一个初始值。该处没有错 (2)此处的const
修饰的也是*p2
。和(1)的意义一样。 (3)p2的指向可以改变,所以此处的赋值是正确的。 (4)这里的const
修饰p3,即指针不能改变,指针指向空间的内容可以改变。没有错误。 (5)p3指向的内容可以改变。正确 (6)p2指向空间的内容不能改变,错误 (7)p3的指向不能改变,错误 选c
该题考查常量字符串,对于第一行和第二行代码,字符都是存在栈区的,而对于下面的两行代码,字符串都是存在常量区的。对于常量区的数据,我们只能读,不能进行修改。所以D选项错误。 一样的常量字符串它们就是同一个,所以
szX
和szY
是同一个地址。对于acX
和acY
主要是有没有\0
的问题。因为acX
它里面会存\0
,所以空间要大1个。
这一题可以看作对指针的考查,要注意
*
它的优先级高。*b+=2
是a[1]+=2
,其他地方感觉没有什么难度了。
宏定义在程序预编译的时候就是直接展开的,所以不会检查参数的正确性,但可以减少函数调用所需的栈帧和压栈的消耗,可以提高运算效率;宏的嵌套过多可能会出现优先级的问题,容易出错且可读性差。我们平常使用要尽量避免宏定义常量,可以使用
const
修饰的常量,有类型的检查。所以选B。
这一题没有什么东西,就是D。
根据题目的描述,该变量是一个数组,里面有10个元素,每个元素都是一个函数指针,该函数指针返回类型是整型,参数是整数。把题目表达成这样就可以选出正确答案了。本题知识点链接
该程序就是把字符当作下标,里面的数据表示该字符(下标)出现了几次,考虑到空间利用的问题,用
Z
减a[i]
表示字符对应的新下标。每出现一次就进行加一。最后一次输出就可以,输出的时候是从Z
的个数开始输出的。
本题考查位字段,注意单独的
unsigned
相当于unsigned int
。 所谓的位字段就是按比特位进行存储,该知识点的链接。 a先申请了4个字节的大小(32个比特位),但a本身就只用了19个比特位,b用了11个,此时空间还剩2个比特位,c不够使用,需要继续开辟4个字节的大小(32个比特位),c用掉之后还剩28个比特位,还是不够d用的,此时b需要继续开4个字节的大小(32个比特位),最后的char
类型不会像前面的一样按比特位进行使用空间。会继续开1个字节的空间,此时总共开了13个字节的空间,根据对齐数4,我们需要对齐,即开辟的空间是4的倍数,所以为16。
&数组名
表示取的整个数组的地址。那么&a+1
表示跳过整个数组,指向数组后面的那个地址,ptr-1
就是指向数组的最后一个元素。
编程题(编程题只提供思路,由于时间问题暂不提供本人写的代码)
首先我们要理解清楚题目的描述,所谓的子序列就是递增或者递减的。所以题目变的就很简单了。我们从头开始遍历,当出现增减区间变化的时候就是一个区间。对应非增非减的可以不用处理,如:
2 2 2
这种归到哪一边都可以。
本题正常的逆置就可以,应该难不倒大家,本题主要注意,逆置后的单词和单词之间就一个空格。