资讯专栏INFORMATION COLUMN

校招笔试 | C语言笔试必考系列!!!

helloworldcoding / 981人阅读

摘要:这些题目都是历年笔试的必考题,大家一定要仔细看看这里面涉及的知识点呀,这样笔试的时候才能过过过呀

说到C语言,可能有人觉得太简单了

这有啥好说的

但素,,,,

今天小姐姐就遇到了一个这样的事

所以说C语言里面坑还是很多的

今天就给大家准备了几个笔试经典的题目

可以助大家顺利通过笔试

1. 以下叙述中不正确的是(D)
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是在栈中保存
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内复合语句中定义的变量在本函数范围内有效
(复合语句值函数中的成对括号构成)
注:D项是有错误的比如我举个例子

</>复制代码

  1. #include
  2. int man()
  3. {
  4. {
  5. int a=10;
  6. }
  7. printf("%d
  8. ",a);
  9. return 0;
  10. }

这个如果再编译中,一定会出现,a未定义的错误的。

2.

</>复制代码

  1. #include
  2. #include
  3. int main()
  4. {
  5. int i;
  6. char acNEW[20];
  7. for (i = 0; i < 5; i++)
  8. {
  9. acNEW[i] = "0";
  10. }
  11. printf("%d
  12. ", strlen(acNEW));
  13. system("pause");
  14. return 0;
  15. }

问题是求输出结果
这个答案应该不确定,因为它在为字符数组赋值时,并未赋 "0" ,但是strlen函数认为结束的标准就是 "0" ,所以当它读到最后一位他会继续走下去,直到它遇到 "0"。
因为后面是垃圾数据都是随机的,所以strlen函数在读时直到遇到 "0" 它才会停下来,所以答案是不确定的。

3.全局变量可以定义在被多个.c文件包含着的头文件中?
错误
这个在编译时会报错的,但是如果使用static修饰就可以编译通过。

4.在X86下,有这些程序:

</>复制代码

  1. include
  2. include
  3. int main()
  4. {
  5. union
  6. {
  7. short k;
  8. char i[2];
  9. }*s,a;
  10. s = &a;
  11. s->i[0] = 0x39;
  12. s->i[1] = 0x38;
  13. printf("%x
  14. ", a.k);
  15. system("pause");
  16. return 0;
  17. }
  18. }


这道题问的是输出的什么?这里牵扯的知识点 联合体和大小端存储,x86是小端存储,这种东西就得靠记了。。没办法大家都知道联合体空间公用对吧,short长度为2B,char i[2]长度也为2B.所以你的a.k虽然并未赋值,但是你等于输出了char i[2]数组中的内容,他们虽然名字不同现在他们内容是一样的。这就考验我们大小端的概念了。

接下来下面是我画的这道题的理解图:

大家也知道读取数据一般是从高位开始读,比如一个数字 120 我们肯定是先看他最大的位对吧(高位),所以这道题的答案是 3839

我再截图验证一下:

5.求下列程序输出结果

</>复制代码

  1. #include
  2. #include
  3. int main()
  4. {
  5. unsigned char a = 200;
  6. unsigned char b = 100;
  7. unsigned char c = 0;
  8. c = a + b;
  9. printf("%d %d", a + b, c);
  10. system("pause");
  11. return 0;
  12. }

这道题主要考的是你对unsigned的理解,接下来我画一张图帮大家理解

现在我说的对不对呢?大家看看输出结果

6.在x86,vc++ 6.0环境下,有下列程序

</>复制代码

  1. #include
  2. #include
  3. int main()
  4. {
  5. char c;
  6. unsigned char uc;
  7. unsigned short us;
  8. c = 128;
  9. uc = 128;
  10. us = c + uc;
  11. printf("0x%x
  12. ", us);
  13. us = (unsigned char)c + uc;
  14. printf("0x%x
  15. ", us);
  16. us = c + (char)uc;
  17. printf("0x%x
  18. ", us);
  19. system("pause");
  20. return 0;
  21. }

做这道题前应该知道 char 的取值范围是-128 ~ 127,所以当你给uc赋128的时候,它真实的值为-128。

具体我说的对不对?看看运行结果。

7.

</>复制代码

  1. #include
  2. #include
  3. struct tagAAA
  4. {
  5. unsigned char ucld : 1;
  6. unsigned char ucpara : 2;
  7. unsigned char ucState : 6;
  8. unsigned char ucTail : 4;
  9. unsigned char ucAvail;
  10. unsigned char ucTail2;
  11. unsigned char ucData;
  12. }AAA_S1;
  13. struct tagAAA2
  14. {
  15. unsigned int ucld : 1;
  16. unsigned int ucpara : 2;
  17. unsigned int ucState : 6;
  18. unsigned int ucTail : 4;
  19. unsigned int ucAvail;
  20. unsigned int ucTail2;
  21. unsigned int ucData;
  22. }AAA_S2;
  23. int main()
  24. {
  25. printf("%d %d
  26. ", sizeof(AAA_S1), sizeof(AAA_S2));
  27. system("pause");
  28. return 0;
  29. }

求AAA_S再分别为1字节对齐和四字节对齐的情况下,占用空间的大小:?

答案为 6 16.

这个问题就是位域的问题,我有专门关于结构体对齐的博客,点击这个链接就能看https://blog.csdn.net/Dawn_sf...

8.

</>复制代码

  1. #include
  2. #include
  3. #pragma pack(4);
  4. int main()
  5. {
  6. unsigned char puc[4];
  7. struct sagPIM{
  8. unsigned char ucpim1;
  9. unsigned char ucDate:1;
  10. unsigned char ucDate1:2;
  11. unsigned char ucDate2:3;
  12. }*pstPimData;
  13. pstPimData = (struct sagPIM*)puc;
  14. memset(puc, 0, 4);
  15. pstPimData->ucpim1 = 2;
  16. pstPimData->ucDate = 3;
  17. pstPimData->ucDate1 = 4;
  18. pstPimData->ucDate2 = 5;
  19. printf("%02x %02x %02x %02x
  20. ", puc[0], puc[1], puc[2], puc[3]);
  21. system("pause");
  22. return 0;
  23. }



这个主要还是位域,还有存储的一些关系了。

因为按照位域存储,该结构体只需要2个字节即可存储全部内容,然后开始思考他内部的结构。

下来我画一个图理解一下。

再看看运行的结果吧 有图有真相。

这些题目都是历年笔试的必考题,大家一定要仔细看看这里面涉及的知识点呀,这样笔试的时候才能过过过呀~~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/114539.html

相关文章

  • 校招笔试 | C语言笔试必考系列!!!

    摘要:这些题目都是历年笔试的必考题,大家一定要仔细看看这里面涉及的知识点呀,这样笔试的时候才能过过过呀 说到C语言,可能有人觉得太简单了 这有啥好说的 但素,,,, 今天小姐姐就遇到了一个这样的事showImg(https://segmentfault.com/img/bVbrUQV); 所以说C语言里面坑还是很多的 今天就给大家准备了几个笔试经典的题目 可以助大家顺利通过笔试 1. 以下...

    wuaiqiu 评论0 收藏0
  • 校招笔试 | C语言笔试必考系列!!!

    摘要:这些题目都是历年笔试的必考题,大家一定要仔细看看这里面涉及的知识点呀,这样笔试的时候才能过过过呀 说到C语言,可能有人觉得太简单了 这有啥好说的 但素,,,, 今天小姐姐就遇到了一个这样的事showImg(https://segmentfault.com/img/bVbrUQV); 所以说C语言里面坑还是很多的 今天就给大家准备了几个笔试经典的题目 可以助大家顺利通过笔试 1. 以下...

    daydream 评论0 收藏0
  • 校招笔试 | C语言笔试必考系列!!!

    摘要:这些题目都是历年笔试的必考题,大家一定要仔细看看这里面涉及的知识点呀,这样笔试的时候才能过过过呀 说到C语言,可能有人觉得太简单了 这有啥好说的 但素,,,, 今天小姐姐就遇到了一个这样的事showImg(https://segmentfault.com/img/bVbrUQV); 所以说C语言里面坑还是很多的 今天就给大家准备了几个笔试经典的题目 可以助大家顺利通过笔试 1. 以下...

    zgbgx 评论0 收藏0
  • 校招笔试 | C语言笔试必考系列!!!

    摘要:这些题目都是历年笔试的必考题,大家一定要仔细看看这里面涉及的知识点呀,这样笔试的时候才能过过过呀 说到C语言,可能有人觉得太简单了 这有啥好说的 但素,,,, 今天小姐姐就遇到了一个这样的事showImg(https://segmentfault.com/img/bVbrUQV); 所以说C语言里面坑还是很多的 今天就给大家准备了几个笔试经典的题目 可以助大家顺利通过笔试 1. 以下...

    tomorrowwu 评论0 收藏0
  • 校招笔试 | C语言笔试必考系列!!!

    摘要:这些题目都是历年笔试的必考题,大家一定要仔细看看这里面涉及的知识点呀,这样笔试的时候才能过过过呀 说到C语言,可能有人觉得太简单了 这有啥好说的 但素,,,, 今天小姐姐就遇到了一个这样的事showImg(https://segmentfault.com/img/bVbrUQV); 所以说C语言里面坑还是很多的 今天就给大家准备了几个笔试经典的题目 可以助大家顺利通过笔试 1. 以下...

    dailybird 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<