面试网> 面试题库 > IT面试题 > 干货来临:C语言面试54题附答案

干货来临:C语言面试54题附答案

面试网2019/12/3 10:29:050人围观
简介针对接下来很多应届生面临找工作面试的问题,小编将会总结一些C语言面试常见的问题和大家分享。希望能帮助到即将进入职场的同学们。话不多说,我们开始吧。第1题:c语言有哪些核心的特征? 可移植性很强。...

    针对接下来很多应届生面临找工作面试的问题,小编将会总结一些C语言面试常见的问题和大家分享。希望能帮助到即将进入职场的同学们。话不多说,我们开始吧。

第1题:c语言有哪些核心的特征?

    可移植性很强。

    模块化能力很强。

    灵活性很高。

    加载速度和执行速度都很好。

    可扩展性很强。

第2题:c语言中有哪些基本的数据类型?

    Int整型。

    Float浮点型。

    Double双浮点型。

    Char单个字符。

    void特殊类型,不包含任何值。

第3题:解释一下语义错误。

    在写程序的时候会有很多语义错误,比如说,拼错了命令,一个函数的参数个数错了, 数据类型不匹配,等等。

第4题:C语言中如何使用增加和减少语句?

    有两种方式:

    ++, --

    或者

    传统的加和减。

第5题:什么是一个编程语言的保留字?

    保留字是指语言库中使用的一些关键字。这些关键字不能用来做其他的事情,比如说定义一个变量或者函数等等。

第6题:解释一下dangling pointer。

    首先我们说有一个指针指向一个变量的内存地址。一段时间以后这个变量被从内存地址的位置删除了。

    这样的指针称之为dangling pointer.

第7题:描述一下静态函数的用途。

    使用静态static关键字定义的函数称之为静态函数。

    这样的函数需要在相同的代码里调用。

第8题:abs和fabs的区别是什么?

    这两个函数都是用来取绝对值的。前者是针对整型的。后者是针对浮点型的。前者位于标准库stdlib.h里面。后者在math.h里面。

第9题:说一下wild pointers。

    未初始化的指针称之为wild pointers。这些指针指向一个随意的内存地址。如果访问它们可能会导致很坏的程序行为,甚至导致程序崩溃。

第10题:++a和a++的区别是什么?

    加加a的意思是先加后取值。

    A加加的意思是先取值后增加。

第11题:单等号和双等号的区别是什么?

    单等号表示赋值运算符。

    双等号是等于条件判断运算符。

第12题:解释一下c语言的原型函数。

    原型函数是对一个函数的声明。

    它包含函数名,返回值和参数类型列表。

    int sum(int,int)

第13题:解释一下数据类型的cyclic nature。

    在c语言中,当一个程序员给一个数据类型的变量赋值的时候,有可能会溢出。这种溢出不会产生编译错误。最终的赋值结果会根据数据类型溢出后的剩余而定。

    这种行为称为cyclic nature. Char, int, long int数据类型有这个特性。Further float, double和long double数据类型没有这个特性。

第14题:说一下c语言的头文件和用途。

    头文件存放了原型函数的定义。这个文件又称为库文件。

    比如说printf和scanf存放在stdio.h里面。

第15题:解释一下在调试过程中对代码进行注释的做法。

    这个做法称为commenting out。通过把一些代码屏蔽掉来判断或排除是否是这些代码造成的错误。

第16题:说一下c语言中循环的类型。

    C语言中有4种循环类型。

    while

    for

    do while

    nested loop

第17题:什么是nested loop?

    一个循环包含在另一个循环中称为nested loop。第1个循环成为外循环。里面的循环称为内循环。内循环执行的次数作为总循环的次数。

第18题:c语言中函数的通常格式是怎样的?

    C语言的函数,包含4个部分。

    返回值, 函数名, 参数, 函数体。

第19题:什么是指针的指针?

    指针的指针是指一个指向指针所在地址的指针。

    int a=5, *x=&a, **y=&x;

第20题:Break关键字在哪个地方使用?

    Break可以用在循环中和switch语句当中。是用来终止当前的循环或跳出switch。

第21题:使用头文件时双引号和尖括号的区别是什么?

    使用双引号时,首先要在当前工作目录中查找这个头文件,如果找不到的话就会在内置的include path里面找。

    使用尖括号时,只会在当前工作目录中查找这个头文件。

第22题:什么是sequential访问文件?

    这种文件用来存储数据,在写数据的时候会按照按照一个序列模式。在读取的时候也是按照这个模式往外读取。

第23题:如何向栈数据结构里面存储数据?

    这样的数据是先进后出的。只有顶部的数据才可以被访问到。存储的时候使用push,获取的时候使用pop。

第24题:C程序算法的意义是什么?

    算法的意义在于提高程序的执行效率,是注重空间的节省,还是注重时间的节省,是写算法时需要考虑的因素。

第25题:volatile关键字的作用?

    volatile指定的关键字可能被系统、硬件、进程/线程改变,强制编译器每次从内存中取得该变量的值,而不是从被优化后的寄存器中读取。

第26题:如下条件判断运算符哪个在c语言里不可用?

    ==, <>, <=, >=

    答案是<>。

第27题:在c语言中可不可以用大括号包含一行代码?

    是的, 当然可以。很多程序员使用大括号来规范代码结构,不管是一行还是多行。

第28题:描述一下modifier。

    Modifier是数据类型的前置,用来标识存储空间的大小。

    比如说在32位处理器系统中, 整形的长度为4bits。

    如果我们加了如下的modifier:

    Long Int 就可以存8 bits。

    Short Int 占 2 bits。

第29题:在c语言中有哪些modifiers?

    Short

    Long

    Signed

    Unsigned

    long long

第30题:在c语言中如何产生随机数?

    rand 函数就是用来产生随机数的,它可以产生任意从0开始的整数。

第31题:能不能在整型中存放32768这个数?

    整数类型可以存放从-32768~32767之间的任何数值。但是32768不在这个范围之内。这个时候modifier是我们需要的东西。Long Int数据类型就可以存放这个数。

第32题:在c语言中可以自定义头文件吗?

    是的, 当然可以, 定义完头文件以后可以存放函数的原型。

    使用的时候, 用include来包含这个文件的名字。

第33题:解释一下c语言中的动态数据结构。

    动态数据结构在访问内存方面非常高效。内存的访问,要因程序的需求而定。

第34题:什么是indirection?

    如果你定一个指针变量, 它指向一个值变量或者一个内存对象。在这种情况下,对这个值变量和对象来说没有一个直接的引用。这种情况就是indirection.

    但是如果我们声明一个变量,它对值来说就是一个直接的引用。

第35题:在c语言中,什么时候会用到空指针?

    有三种情况,在c语言中会用到空指针。

    作为一个错误值。

    作为一个监测值。

    在一个递归数据结构中终止indirection。

第36题:解释一下模块化编程。

    把主程序分成多个小的,可执行的模块称为模块化编程。这个概念是为了增强重用性。同时也提高了程序的可维护性。

第37题:Call by value和call by reference有什么区别?

    call by value传的是值。Call by reference传的是地址。

第38题:如何在c语言中定义一个字符串变量?

    使用char定义一个字符数组。

第39题:在函数定义的时候何时用void?

    当函数没有返回值时,可以用void。

第40题:什么是preprocessor directives?

    Preprocessor directives一般放在程序的开头。主要是用来指定调用库文件的。还有一个用途是用来定义一些常值变量,宏定义等等。#开头。

第41题:这样赋值对不对?错在哪里?

    myName="test";

    不对。

    我们不能用等号给一个字符串赋值。需要使用strcpy。

第42题:为什么c语言被认为是中级语言?

    这是因为c语言既能像高级语言那样编写程序,又可以像低级语言如汇编那样直接操作硬件。

第43题:什么是链表?

    链表是一系列的元素连接在一起形成的数据结构。在c语言中,链表是用指针来构建的。使用链表数据结构是使用内存操作比较的一种方式。

第44题:什么是fifo?

    First in first out. 队列是典型的first in first out,数据结构。

第45题:什么是二叉树?

    二叉树是链表的延伸。它的每一个节点都有两个指针,一个指向左,一个指向右。

第46题:C语言中有些保留着是大写的对吗?

    不对,c语言中的所有保留字必须是小写,否则的话c的编译器会报错。

第47题:什么是输出重定向?

    输出重定向是指把程序的输出,除了输出在屏幕上以外的另外选择, 比如说,输出到一个文件里。

第48题:什么是全局变量,如何定义它们?

    全局变量是指在程序中任何地方都可以访问到的变量。它一般定义在preprocessor directives的后面。

第49题:getch和getche, 这两个函数的区别是什么?

    前者是把用户的输入分配给一个变量。

    后者是把用户的输入打印到屏幕上,同时分配给一个变量。

第50题:文本文件和二进制文件的区别是什么?

    文本文件存放的是人类可以阅读的内容,它包含字母数字和其他的字符。

    而二进制文件存放的是1和0,只有电脑才能够读懂。

第51题:如何用随机访问的方法在一个数据文件中搜索数据?

    fseek

    在文件打开以后提供三个参数给这个函数。一个是文件的指针,一个是要搜索的字节数,再一个是文件中的搜索起点。

第52题:在c语言中有没有内置的排序函数?

    qsort

第53题:heap的优点和缺点是什么?

    在heap上存放数据,要比在stack上存放数据要慢。

    但是使用heap的主要优势是灵活性。这是因为内存的访问, 分配以及删除可以按照任意顺序来执行。

    通过好的算法和设计可以规避heap速度慢的问题。

第54题:如何把字符串变成数字?

    atoi

    atof

    使用c语言里面的内置函数可以做到。你也可以自己写函数。

最新信息

  • 28道Nodejs面试题,看看能错几道?

    小编在此总结一下Nodejs常见的面试题,希望对面试的小伙伴有帮助。第1题:什么是nodejs?我们在哪里使用它? Nodejs是服务器端的一门技术。它是基于Google V8 JavaScri...

  • 技术干货:ASP.net mvc面试32题附答案

    今天,小编将会总结一些ASP.net mvc的面试题跟大家分享。希望能帮助到即将进入职场的同学们。第1题:什么是ASP.net mvc? 这是一个网络应用的开发框架。轻量型的,很容易测试的一个框...

  • 技术干货:Micro services面试24题附答案

    今天,小编将会总结一些Micro services的面试题跟大家分享。希望能帮助到即将进入职场的同学们。第一题:解释一下Micro services的架构。 Micro services架构设置...

  • 干货来临:C语言面试54题附答案

    针对接下来很多应届生面临找工作面试的问题,小编将会总结一些C语言面试常见的问题和大家分享。希望能帮助到即将进入职场的同学们。话不多说,我们开始吧。第1题:c语言有哪些核心的特征? 可移植性很强。...

  • 干货来临:CSS面试26题附答案

    针对接下来很多应届生面临找工作面试的问题,小编将会总结一些前端面试常见的问题和大家分享。希望能帮助到即将进入职场的同学们。话不多说,我们开始吧。第1题:css有哪些版本? 有①css1;②css...

  • Golang面试宝典:这40道题一定要会!

    Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入...

标签列表