导言:
今天也是五道选择题,主要是最近事情有点多(了解scanf、git的使用、复习C语言之前的笔记)(这些整理完之后都会发博客的),整理编程题有点费时间,等下下周就有大把的时间了,到时候一定补上编程题。
接下来直接看今天的题吧。
1.
题干:
答案:
B
知识点:
两个指针变量的值相等有两种情况:
1.两个变量存的地址一样
2.两个变量的值都为NULL,即空指针变量
2.
题干:
答案:
B
知识点:
常识介绍
对于结构体来说,编译器按照结构体成员列表的顺序为每个成员分配内存,当存储成员时需要满足正确地边界对齐要求时,成员之间可能出现用于填充地额外内存空间。
32位系统每次分配字节数最多为4个字节,64位系统分配字节数最多为8个字节。
变量大小的对比
char :1个字节 char*(即指针变量): 8个字节 short int : 2个字节 int: 4个字节 unsigned int : 4个字节 float: 4个字节 double: 8个字节 long: 8个字节 long long: 8个字节 unsigned long: 8个字节
提示:
32位与64位的不同之处是:
指针、long、unsigned long会从4byte变为8byte。
题目解析:
structA
{
unsigned int a;
//对于开始连续的第一个8字节内存,a占4字节
char b[2];
//b[]占12字节,在a后的连续2字节内存放,还剩2个字节,
double c;
//c占8字节,第一个8字节还剩2字节不足以存放c,自动补充该2字节。并同时开辟第二个8字节内存存放c
short d;
//d占2字节,开辟第三个8字节,存放d。剩余的6个字节补齐。故总共开辟了83=24字节存放该数据结构
}
3.
题干:
答案:
C
知识点:
A:
a 是指针 指向 int 这个int 是静态的 const 修饰的是int
B:
a作为指针变量,存储的是b的地址,所以这是个二级指针,与其余三个选项根本不同。
C:
a 是静态的指针(第二个const 修饰),指向 int ,这个int是静态的(第一个const 修饰)
D:
a 是静态的指针(第二个const 修饰),指向一个静态的变量(第一个const 修饰, 这个变量是int的)
提示:
区分是否相同的小窍门:
const在*的左边是同一类
在右边是同一类
不用看const 和 int的前后关系
4.
题干:
答案:
D
知识点:
因为%3d,所以输入中的前3位数123将赋给x,输入中后面的45将赋给y,
因为45后键入了空格使得后面的输入无效,又因y是浮点数,所以y的值应为45.000000。
并且,因为scanf遇到空格就会自动停止输入,所以输入结束。
(此处想说一句,我才知道□表示的是空格,学到了)
挖坑:
我过几天会发一篇C语言杂记,里面有我对与scanf这个函数的学习和思考,大家到时候有兴趣可以看一看
5.
题干:
答案:
B
题目解析:
本来我是一个递推一个递推算的,
后来看了看大佬的解释,感觉这个方法很妙,就分享给大家。
自底向上算:
0 --> 1个
1 --> 1个
2 --> 0和1 再加上本身 ---->3个
3 --> 1和2 再加上本身 ---->5个
4 --> 2和3 再加上本身 ---->9个
由此类推…
8 --> 7和6 再加上本身 ---->67个
结语
今天的五道题就到这里了,我们下期见
PS:编程题的整理下下周一定补上