77范文网 - 专业文章范例文档资料分享平台

100条经典C语言笔试题目(全)(2)

来源:网络收集 时间:2020-05-13 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

45、 static全局变量与普通的全局变量有什么区别?

【标准答案】 static全局变量只初使化一次,防止在其他文件单元中被引用; 46、 static局部变量和普通局部变量有什么区别

【标准答案】static局部变量只被初始化一次,下一次依据上一次结果值; 47、 static函数与普通函数有什么区别?

【标准答案】static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

关于45-47的参考文章

全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身

就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。 static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。 48、程序的局部变量存在于___中,全局变量存在于____中,动态申请数据存在于___中。 【标准答案】程序的局部变量存在于栈(stack)中,全局变量存在于静态数据区 中,动态申请

数据存在于堆(heap)中。

49、什么是预编译,何时需要预编译:

【标准答案】1、总是使用不经常改动的大型代码体。

2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

50、用两个栈实现一个队列的功能?要求给出算法和思路! 【参考答案】设2个栈为A,B, 一开始均为空.

入队:

将新元素push入栈A; 出队:

(1)判断栈B是否为空;

(2)如果不为空,则将栈A中所有元素依次pop出并push到栈B; (3)将栈B的栈顶元素pop出;

51、对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

【标准答案】c用宏定义,c++用inline

52、 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

*

【参考答案】#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

53、 Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子: #define dPS struct s * typedef struct s * tPS;

以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方法更好呢?(如果有的话)为什么?

*

【参考答案】这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是:typedef更好。思考下面的例子: dPS p1,p2; tPS p3,p4; 第一个扩展为 struct s * p1, p2;

上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。

54、在 C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”?

【标准答案】C++语言支持函数重载,C 语言不支持函数重载。函数被 C++编译后在库中的

名字与 C 语言的不同。假设某个函数的原型为: void foo(int x, int y); 该函数被 C 编译器编译后在库中的名字为_foo,而 C++编译器则会产生像_foo_int_int 之类的名字。 C++提供了 C 连接交换指定符号 extern“C”来解决名字匹配问题。 55、请简述以下两个 for 循环的优缺点。

56、语句for( ;1 ;)有什么问题?它是什么意思? 【标准答案】死循环,和while(1)相同。 57、 do……while和while……do有什么区别?

【标准答案】前一个循环一遍再判断,后一个判断以后再循环。 58、请写出下列代码的输出内容

#include int main() {

int a,b,c,d; a=10; b=a++; c=++a; d=10*a++;

printf(\,c,d:%d,%d,%d\,b,c,d); return 0; }

【标准答案】10,12,120

59、 unsigned char *p1; unsigned long *p2;

p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 请问p1+5= ; p2+5= ;

【标准答案】0x801005、0x810020

60、 main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf(“%d,%d”,*(a+1),*(ptr-1)); }

请问输出:

【标准答案】2,5

* *

100条经典C语言笔试题目

61、请问下面程序有什么错误? int a[60][250][1000],i,j,k; for(k=0;k<=1000;k++) for(j=0;j<250;j++) for(i=0;i<60;i++) a[i][j][k]=0;

【标准答案】把循环语句内外换一下。

* *

100条经典C语言笔试题目

62、以下是求一个数的平方的程序,请找出错误: #define SQUARE(a)((a)*(a)) int a=5; int b;

b=SQUARE(a++); 【标准答案】宏在预编译时会以替换的形式展开,仅仅会替换。涉及到宏的地方,不要用++ --,

标准中对此没有规定,因此最终结果将会依赖于不同的编译器。执行程序的答案可能是25、也有可能是36。

* *

100条经典C语言笔试题目

63、#define Max_CB 500

void LmiQueryCSmd(Struct MSgCB * pmsg) {

unsigned char ucCmdNum; ......

for(ucCmdNum=0;ucCmdNum

} }这段代码执行有什么问题?

【标准答案】死循环

unsigned char //无符号字符型 表示范围0~255 char //有符号字符型 表示范围-128~127

* * * *

100条经典C语言笔试题目

64、嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。 【标准答案】while(1){}或者for(;;)

100条经典C语言笔试题目 65、程序输出结果 是?

*

【标准答案】8,10,12,14,16

* *

100条经典C语言笔试题目 66、

【标准答案】16

* *

100条经典C语言笔试题目

67、 int modifyvalue() {

return(x+=10); } int changevalue(int x) { return(x+=1); } void main() { int x=10; x++; changevalue(x); x++; modifyvalue(); printf(\ x++; changevalue(x); printf(\ modifyvalue(); printf(\ }输出?

【 标准答案】12、13、13

* * * *

100条经典C语言笔试题目

68、不能做switch()的参数类型是: 【标准答案】switch的参数不能为实型。

100条经典C语言笔试题目

69、请写出下列代码的输出内容 #i nclude main() {

int a,b,c,d; a=10; b=a++; c=++a; d=10*a++;

printf(\,c,d:%d,%d,%d\,b,c,d); return 0; }

【标准答案】10,12,120

* * * *

100条经典C语言笔试题目

70、找出程序的错误。

【标准答案】

100条经典C语言笔试题目

71、一语句实现x是否为2的若干次幂的判断。

【参考答案】 void main() {

int a; scanf(“%d”,&a); printf(“%c”,(a)&(a-1)?’n’:’y’); // 若是打印y,否则n }

* *

100条经典C语言笔试题目

72、中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。 __interrupt double compute_area (double radius) {

double area = PI * radius * radius; printf(\ return area; }

【参考答案】这个函数有太多的错误了,以至让人不知从何说起了:

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库100条经典C语言笔试题目(全)(2)在线全文阅读。

100条经典C语言笔试题目(全)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1052510.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: