请在40分钟内完成以下20道C语言基础题。在没有任何提示的情况下,如果能得满分,那么你可以扔掉本书了,你的水平已经大大超过了作者;如果能的80分以上,说明你的C语言基础还不错,学习本书可能会比较轻松;如果得分在50分以下,也不要气馁,努力学习就行了;如果不小心得了10分以下,你就得给自己悄悄警钟了;如果不幸得了0分,那实在是不应该,因为毕竟很多题是很简单的。
 
C语言基础题(每题5分)。
1. 下面的代码输出时什么?为什么?
 C++ Code 

1

2

3

4

5

6

 
void foo(
void)

{

    
unsigned 
int a = 
;

    
int b = -
;

    (a + b > 
) ? puts(
">6") : puts(
"<=6");

}


2. 下面的代码有什么问题?为什么?
 C++ Code 

1

2

3

4

5

6

7

8

9

10

11

12

13

 
void foo(
void)

{

    
char string[
], str1[
];

    
int  i;

for(i = 
; i < 
; ++i)

    {

        str1[i] = 
'a';

    }

strcpy(string, str1);

    printf(
"%s\n", string);

}


3. 下面的代码,i和j的值分别是什么?为什么?
 C++ Code 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

 
static 
int j;


int k = 
;

void fun1(
void)

{

    
static 
int i = 
;

    i++;

}


void fun2(
void)

{

    j = 
;

    j++;

}

int main(
void)

{

    
for(
int k = 
; k < 
; ++k)

    {

        fun1();

        fun2();

    }

return 
;

}


4. 下面代码里,假设在32位系统下,个sizeof计算的结果分别是多少?
int *p = NULL;

sizeof(p) = 
sizeof(*p) = 

int a[100];

sizeof(a) = 
sizeof(a[100]) = 
sizeof(&a) = 
sizeof(&a[0]) = 

int b[100];
void fun(int b[100])
{
    sizeof(b) = 
}

5. 下面代码的结果是多少?为什么?
 C++ Code 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

 
#include 
"stdio.h"


#include 
"string.h"

int main(
void)

{

    
signed 
char a[
];

    
int i;

for(i = 
; i < 
; ++i)

    {

        a[i] = -i - 
;

    }

printf(
"%d\n", strlen(a));

    
return 
;

}


6. 下面的代码里,哪些内容可被改写,哪些不可被改写?
(1)const int *p;
(2)int const *p;
(3)int * const p;
(4)const int *const p;

7.下面的两端代码又什么区别?什么时候需要使用代码(2)?
代码(1):
int i = 10;
int j = i;
int k = i;

代码(2):

volatile int i = 10;
int j = i;
int k = i;

8. 在32位的x86系统下,输出的值为多少?
 C++ Code 

1

2

3

4

5

6

7

8

9

10

11

12

13

 
#include 
"stdio.h"

int main(
void)

{

   
int a[
] = {
,
,
,
,
};

   
int *ptr1 = (
int*)(&a + 
);

   
int *ptr2 = (
int*)((
int)a + 
);

printf(
"%x, %x\n", ptr1[-
],*ptr2);

return 
;

}


9. 0x01 <<2+3的值为多少?为什么?

10. 定义一个函数宏,求x的平方

11. 下面的两段代码有什么区别?
代码(1):
struct TestStruct1
{
    char c1;
    short s;
    char c2;
    int i;
};
代码(2):
struct TestStruct2
{
    char c1;
    char c2;
    short s;
    int i;
};

12. 写代码向内存0x12ff7c地址存入一个整形术0x100.

13. 下面代码的值是多少?
 C++ Code 

1

2

3

4

5

6

7

8

9

10

11

12

 
#include 
"stdio.h"

int main(
void)

{

   
int a[
] = {
,
,
,
,
};

   
int *ptr = (
int*)(&a + 
);

printf(
"%d, %d\n", *(a + 
),*(ptr - 
));

return 
;

}


14. 假设p的值为0x10000,如下表达式的值分别为多少?
struct Test
{
    int     Num;

    char    * pcName;

    short    dDate;

    char    cha[2];

    short    sBa[4];

}* p;

p + 0x1 = 0x    ?
(unsigned long)p + 0x1 = 0x    ?
(unsigned int *)p + 0x1 = 0x    ?

15. 下面代码输出的结果是多少?
 C++ Code 

1

2

3

4

5

6

7

8

9

10

11

12

 
#include 
"stdio.h"

int main(
void)

{

   
int a[
][
] = {(
,
),(
,
),(
,
)};

   
int *p;

   p = a[
];

   printf(
"%d\n", p[
]);

return 
;

}


16. 下面的代码有什么问题?为什么?
 C++ Code 

1

2

3

4

5

6

7

8

9

10

11

12

 
void fun(
char a[
])

{

    
char c = a[
];

}

int main(
void)

{

    
char b[
] = 
"abcdefg";

    fun(b[
]);

    
return 
;

}


17. 下面的代码有什么问题?为什么?
 C++ Code 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 
#include 
"stdlib.h"


#include 
"string.h"


struct student

{

    
char *name;

    
int score;

} stu, *pstu;


int main(
void)

{

    pstu = (
struct student *)malloc(
sizeof(
struct student));

    strcpy(pstu->name, 
"Jimy");

    pstu->score = 
;

    free(pstu);

    
return 
;

}


18. 下面的代码输出结果是多少?
 C++ Code 

1

2

3

4

5

6

7

8

9

10

11

12

13

 
#include 
"stdio.h"


void fun(
int i)

{

   
if(i > 
)

      fun(i/
);

   printf(
"%d\n", i);

}


int main(
void)

{

   fun(
);

   
return 
;

}


19. 下面的代码有什么问题?为什么?
char c;
c = getchar();
if(EOF == c)
{
    ...

}

20. 请写一个C函数,若当前系统是Big_endian的,则返回0;若是Little_endian的,则返回1。

PS:答案回复可见。
O(∩_∩)O~

《C语言深度解剖》面试题整理的更多相关文章

  1. 高质量程序设计指南C/C++语言——C++/C程序设计入门

    1.在C++/C中,全局变量(extern或static)存放在程序的静态数据区中,在程序进入main()之前创建,在main()结束之后销毁,因此在我们的代码中根本没有机会初始化它们,于是语言及其实 ...

  2. 高质量程序设计指南C/C++语言——C++/C程序设计入门(4)

    *switch结构的break语句只是一个“jmp”指令,其作用就是跳到switch结构的结尾处 *标准C++/C语言提供3种循环:do/while.while和for,它们都在条件表达式为TRUE( ...

  3. 指针,数组,字符串的区别(高质量程序设计指南C++/C语言第7章)

    指针: 指针是变量,和平时的那些变量没有本质的差异,不同的只是它的值和类型,.,即解释方式 二进制层面:指针的值是内存单元的地址,而变量是引用内存单元值的别名 语言层面:指针的值就是变量的地址. 对象 ...

  4. 高质量程序设计指南C/C++语言——malloc/free使用要点

  5. 高质量程序设计指南C/C++语言——有了malloc/free为什么还要new/delete?

  6. 高质量程序设计指南C/C++语言——内存管理

    • free()和delete只是把指针所指的内容给释放掉,并没有把指针本身删掉.指针被free()或delete以后其地址仍然不变(不等于NULL),只是该地址对应的内存是垃圾——p成了野指针.如果 ...

  7. 高质量程序设计指南C/C++语言——C++/C常量(2)

  8. 高质量程序设计指南C/C++语言——C++/C程序设计入门(2)

    *标准C规定,编译器只取前31个字符作为有效的标识符,而标准C++则取前255个字符作为有效的标识符. *把具有特殊含义的字符输出到终端上,尤其是当它们出现在普通字符串或格式控制字符串中时,一般来说有 ...

  9. 高质量程序设计指南C/C++语言——C++/C编译预处理

    C++/C的编译预处理器对预编译伪指令进行处理后生成中间文件作为编译器的输入,因此所有的预编译伪指令都不会进入编译阶段.预编译伪指令一般都以#打头,且其前面只能出现空白字符.预编译伪指令不是C++/C ...

  10. 高质量程序设计指南C/C++语言——C++/C常量

随机推荐

  1. BZOJ 2100: [Usaco2010 Dec]Apple Delivery( 最短路 )

    跑两遍最短路就好了.. 话说这翻译2333 ---------------------------------------------------------------------- #includ ...

  2. Android之判断设备网络连接状态,并判断连接方式

    在Android开发过程中,对于一个需要连接网络的Android设备,对设备的网络状态检测是很有必要的!有很多的App都需要连接网络.判断设备是否已经连接网络,并且在连接网络的状态下判断是wifi无线 ...

  3. JavaScript 导学推荐

    基本开始js学习的时候,可能会觉得很混乱,一开始都是从一些简单的表单验证还有拷贝别人效果代码,然后再慢慢去深入了解.我是觉得js是需要一定语言编程基础,我是觉得随着深入,JS的里面实在不算太好理解,个 ...

  4. python中os.walk浏览目录和文件

    #!/usr/bin/env python # 2.py # use UTF-8 # Python 3.3.0 # os.walk()的使用 import os # 枚举dirPath目录下的所有文件 ...

  5. [LeetCode]题解(python):017-Letter Combinations of a Phone Number

    题目来源: https://leetcode.com/problems/letter-combinations-of-a-phone-number/ 题意分析: 这道题是输入一段数字字符digits, ...

  6. Ubuntu上用premake编译GDAL

    GDAL的编译脚本呈现出不同平台不同解决方案的百花齐放现状.我是从windows平台开始编译GDAL的,用的自然是nmake.那就是一种每个目录下都需要写makefile文件的构建方法,写的人麻烦,我 ...

  7. JAVA GUI学习 - 窗体背景图片设置方法:重写paintComponent(Graphics g)方法

    public class BackgroundImage extends JFrame { public BackgroundImage() { this.setTitle("窗体背景图片设 ...

  8. 数据结构——栈(Stacks)

    栈遵循LIFO ( last in first out) 即后入先出原则 栈结构类似于叠盘子 后叠上去的要先拿走 才能拿到下面的盘子 因此stack是一种访问受限的线性存储结构 用单向链表的结构来存储 ...

  9. JSON XML IO数据操作

    一.XML解析 通过继承org.xml.sax.helpers.DefaultHandler类,覆写characters(),startDocument(),startElement(),endEle ...

  10. VC问题 IntelliSense:“没有可用的附加信息”,[请参见“C++项目 IntelliSense 疑难解答”,获得进一步的帮助]

    当出现以上的问题时,若按照网上所说的解决方法: 1.安装VA(Visual_AssistX) 2.安装Microsoft SQL Server Compact 3.5 3.更改设置“工具-选项-文本编 ...