C语言笔试题

来源:互联网 发布:时时彩套利软件 编辑:程序博客网 时间:2024/04/25 09:47

C语言笔试题

有A、B、C、D四个人,要在夜里过一座桥。

他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个
人一起过桥。

请问,如何安排,能够在17分钟内这四个人都过桥?

答案:A & B -->2 mins

1 mins <-- A

C & D -->10 mins

2 mins <-- B

A & B --> 2 mins

一共 2 + 1 + 10 + 2 + 2 = 17 mins


请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句

答案:

#define
max(a,b) ((((long)((a)-(b)))&0x80000000)?b:a)

若a > b ,则a-b的二进制最高位为0,与上任何数还是0,所以大数为a;

否则,a-b为负数,二进制最高位为1,与上0x80000000(最高位为1其他为0)之后为1,
所以此时的大数为b.



如何输出源文件的标题和目前执行行的行数?

答案: printf("The file name: %d\n", __FILE__);

printf("The current line No:%d\n", __LINE__);

ANSI C标准预定义宏:

__LINE__

__FILE__

__DATE__

__TIME__

__STDC__ 当要求程序严格遵循ANSI C标准时该标识符被赋值为1



希尔 冒泡 快速 插入 哪个平均速度最快?

答案:快速排序

快速排序、归并排序和基数排序在不同情况下都是最快最有用的。



switch()的参数类型
只有int,short,byte,char 。记得不要把String也混入啊 ,switch( "abc" )就错了



写出float x 与“零值”比较的if语句。
if(x>=0.000001 && x<=-0.000001)(x不为0的比较)

float: 6位精度
double: 16位精度


描述实时系统的基本特性
答案:在特定时间内完成特定的任务,实时性与可靠性。


C语言里,哪些变量是存放在堆里,哪些是存放在栈里?(普天)

heap area存放程序的动态数据
stack area存放程序的局部数据

1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。地址是由高向低减少的
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。地址是由低向高增长的

static有什么用途?(请至少说明两种)
1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

引用与指针有什么区别?
1) 引用必须被初始化,不存在指向空值的引用,一个引用必须指向某个对象。指针不必立即初始化。
2) 引用初始化以后不能改变使其指向其他对象,但可以修改其指向对象的内容。指针可以被改变指向其他的对象。
3) 在使用引用之前不需要测试它是否为空,相反指针应该总被测试防止其为空。
4) 重载操作符必须使用引用才能完成串式操作

全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
全局变量储存在全局静态存储区,局部变量在堆栈
static变量和static 函数各有什么特点?
答:static变量:在程序运行期内一直有效,如果定义在函数外,则在编译单元内可见,如果在函数内,在在定义的block内可见;static函数:在编译单元内可见;
static全局变量与普通的全局变量有什么区别?
static全局变量只能在本模块中调用,不能在其他文件单元中被引用.而全局变量可以使用extern在任何地方引用
static函数与普通函数有什么区别:
static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。

什么构造函数不能声明为虚函数?
答案: 虚函数采用一种虚调用的办法。虚调用是一种可以在只有部分信息的情况下工作的机制,特别允许我们调用一个只知道接口而不知道其准确对象类型的函数。但如果要创建一个对象势必要知道其准确类型因此构造函数不能为虚。