1 如何理解变量与常量?
变量与常量相当于数据的可读可写与只读,常量是数据的一种保护机制。在内存分配给程序的内存块中有专门的常量(只读)存储区。
2 整型数据的溢出问题
任何一种数据类型的数据在计算机中都有它确定的数值表示范围,一旦超出这个范围,就会产生溢出问题。
3 对于浮点型数据执行相等比较为什么有时会出现问题?
在C语言中,只有整型数据和字符型数据是精确表示的。浮点型数据采用的是指数表示形式,数据的有效位数是有限的,因此浮点型数据是不精确的。对于浮点型数据进行相等比较时,有时两个相等的数进行比较也有可能出现不相等的情况。
为了解决浮点数相等比较时的误差问题,可以规定当两个数相减之后的绝对值小于一个足够小的数时即认为它们相等。
4 没有初始化的变量的初始值是什么?
如果该变量是静态存储类型的变量,系统编译时会自动地赋初值0(对数值型变量)、空字符(对字符变量)、或者空指针(对指针型变量);而如果变量是动态存储类型,则在没有赋初值的情况下,将会有一个不确定的值(垃圾值,单元格使用过后遗留下的历史值)充当其初值,这是非常危险的,尤其是对于一个不确定的指针来说,修改它所指向存储单元的值可能会造成巨大危害。因此,一般都要求程序员为变量赋予合理的初值。
5 C语言中逻辑值1和0是如何判断的?
C语言中,一般在进行逻辑运算时,将所有非零值都作为1,也就是逻辑真;而只有本身为0的值才当做0,也就是逻辑假参加判断。
6 求解逻辑表达式时“有解即停”(短路求值)是什么意思?
当需要判断多个条件同时成立或至少有一个成立时,需要使用逻辑运算符&&和||。表达式A && B表示当A与B均为真时,条件为真;表达式A || B表示当A与B至少一个为真时,条件为真。
当求解 A && B时,只要A为假则整个表达式一定为假,此时不需要求解表达式B。而对于表达式 A || B,只要表达式A为真,则整个表达式一定为真,此时不需要求解表达式B。
7 switch语句是如何执行的?
C语言中的switch语句用于处理多分支的判断问题。
在switch语句中的多种分支情况中,只要找到了一个与表达式值匹配的case分支,则从此位置开始顺序执行,除非遇到break语句或switch语句结束。
当没有任何一个case与表达式的值相匹配时,则执行default分支中的语句,但这并不意味default分支必须位于switch语句的所有case分支之后,而是可以位于switch语句中的任何位置。同样,如果在default分支中没有break语句,则程序仍将顺序执行。
在switch语句中,case只是一个语句标号,它并不进行条件判断。因此,在switch语句执行时,会根据switch后面表达式的值找到匹配的入口标号,然后从这个标号(也就是向对应的case)处开始执行下去,不会再进行条件判断。
8 穷举法的基本思想是什么?
传统的数学解题方法通常有列方程、寻找简便算法等,那是因为人脑不能进行大量、高速的运算。在计算机数据处理中,可以通过循环程序让计算机对一个问题的所有的可能情况进行判断,从而得出那些满足问题的约束条件的各种可能情况,这些可能的情况就是实际问题的解。由于计算机的高速度和机器性,能够在程序的控制下自动连续地重复执行相同的处理,因此“穷举法”在程序设计中具有广泛应用。例如“鸡兔同笼”的问题就可以通过穷举法来解决。
9 数组在定义的同时赋初值,是否可以省略数组的大小?
在定义时给数组赋初值,如果是给全部的数组元素都赋了初值,那么可以省略一维数组的大小,若是二维数组则只能省略其第一维的大小,而第二维的大小必须明确指定。如果在定义时只是给部分元素赋了初值,那么数组的大小是不能省略的。例如要定义一个三个元素的一维整型数组,分别赋初值1,2,3,则可如下定义:int a[]={1,2,3};此时省略了数组的大小。但是如果定义的是一个具有四个元素的数组,也赋了三个初值,则应该定义如下:int a[4]={1,2,3},注意,此时的长度不可省略。
10 什么是局部变量、全局变量?
在一个函数中定义的变量,其作用域仅限于定义它的函数中,在其它的函数不能使用,这种变量称为“局部变量”。
定义在函数之外的变量,其作用域范围为定义该变量的程序位置直到程序的结束,在其它的函数中,既可以使用该变量的值,对变量值的改变也在该变量的全部作用域范围内有效,这种变量称为“全局变量”。
整理于网络,如有侵权,告知必删。