求大神解答高级语言程序设计C程序分析题

做了校对与详解,方便大家参考。最后编程答案自己做的,还没写完,可能不全,需要自己百度答案。
有什么问题请评论,会及时修改,避免误导大家

48.程序的局部变量存在于()中,全局变量存在于 ()中,动态申请数据存在于()中。

答案:程序的局部变量存在于栈(stack) 中,全局变量存在于静态数据区中,动态申请数据存在于堆(heap)中。

49.什么是预编译,何时需要预编译?

1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

50.用两个栈实现一个队列的功能?要求给出算法和思路!

答案:设2个栈为A,B, 一开始均为空.
(1)判断栈B 是否为空;
(2)如果不为空,则将栈A中所有元素依次pop 出并push到栈B;
详解:队列:先进先出,栈:先进后出

51.对于一个频繁使用的短小函数,在C 语言中应用什么实现,在C++ 中应用什么实现?
53.Typedef 在C 语言中频繁用以声明一个已经存在的数据类型的同义字。
也可以用预处理器做类似的事。例如,思考一下下面的例子:
以上两种情况的意图都是要定义dPS 和tPS 作为一个指向结构s指针。
哪种方法更好呢?(如果有的话)为什么?

答案:第二种更好,因为在实际替换中可能出现意想不到的问题。
第一个扩展为struct s * p1, p2;上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。

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

答案:extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言(而不是C++)的方式进行编译。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。

答案:死循环,和while(1)相同。

答案:前一个循环一遍再判断,后一个判断以后再循环。

58.请写出下列代码的输出内容

&a代表数组指针,其类型为int (*)[5],所以&a+1可以理解为在数组指针的基础上偏移为5,然后强制转换为int类型的指针赋给ptr,所以是下个数组的首地址,ptr-1即为上个数组的最后一位,所以是a[4]=5

61.请问下面程序有什么错误?
62.以下是求一个数的平方的程序,请找出错误:
} 这段代码执行有什么问题?
64.嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。

答案:switch 的参数不能为实型。

69.请写出下列代码的输出内容
71.一语句实现x是否为2 的若干次幂的判断。
72.中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C 支持中断。具代表事实是,产生了一个新的关键字__interrupt 。下面的代码就使用了__interrupt 关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。

(1)中断不能有入参和返回值;
(2)在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额外的寄存器入栈,有些处理器/编译器就是不允许在ISR 中做浮点运算。此外,ISR 应该是短而有效率的,在ISR 中做浮点运算是不明智的;
(3)与第三点一脉相承,printf() 经常有重入和性能上的问题。

73.下面的代码输出是什么,为什么?

详解:当有符号和无符号运算时,统一转换为无符号,而在有符号的情况下是将最高位置1来表示负数,所以负数转为无符号时将会是一个很大的数。

74.评价下面的代码片断:
75.下面的代码片段的输出是什么,为什么?

77.写出二分查找的代码。

78.请编写一个C 函数,该函数给出一个字节中被置1 的位的个数。

79.请编写一个C 函数,该函数将给定的一个字符串转换成整数。

80.请编写一个C 函数,该函数将给定的一个整数转换成字符串。

82.请编写一个C 函数,该函数将一个字符串逆序。

83.请编写一个C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值。

84.请编写一个C 函数,该函数在一个字符串中找到可能的最长的子字符串,该字符串是由同一字符组成的。

85.怎么判断链表中有环?

86.有一浮点型数组A,用C语言写一函数实现对浮点数组A进行降序排序,并输出结果,要求要以数组A 作为函数的入口。

87.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。

88.把一个链表反向。

89.将二维数组行列元素互换,存到另一个数组中。

90.输入一行字符,统计其中有多少个单词。

91.写一个内存拷贝函数,不用任何库函数。

92.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

93.取一个整数a从右端开始的4~7位。

94.打印出杨辉三角。要求打印出10行。

96.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

97.809*??=800*??+9*??+1其中??代表两位数,8*??的结果为两位数,9*??的结果为三位数。求??代表的两位数,及809*??后的结果。

98.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

99.计算字符串中子串出现的次数。

100.有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母排序),输出到一个新文件C中。

回看这篇博客竟然已经是两年前发布的了,随便瞄了几眼就发现好几个错误,感觉收藏的人也挺多的,怎么没有一个好心人指出来呢?
33.堆栈溢出的原因是什么?
没有回收垃圾资源会导致内存泄漏,而不是堆栈溢出。
首先堆栈溢出一般指的栈溢出,因为堆内存使用是通过malloc申请到的,如果剩余内存不足以分配,那malloc会返回NULL。而栈会被局部变量、函数调用使用,所以,当在函数内使用过大的局部变量是会导致栈溢出的,而函数每次调用时会压栈一部分寄存器,所以过深的函数调用或过多次数的递归调用都会引起栈溢出,也就是使用了超过堆栈范围的内存空间。
42.函数既然不会被其他函数调用,为什么要返回1?
这个问题首先问的就有问题,不会被调用那写它干吗?鉴于题目中有一个main函数,姑且认为它指的是main函数。但是谁说main函数不会被调用,只不过main函数一般是被汇编代码调用罢了。其次返回0代表成功-1(或其他负数)代表错误算是约定俗成吧属于历史问题(比如unix系统调用和C标准调用都是这么规定的)。
46.static局部变量和普通局部变量有什么区别?
生存周期不同,static变量不会随着函数调用结束被销毁,它的生存周期和全局变量相同,但是它只能在被定义的函数内使用。
47.static函数与普通函数有什么区别?
原答案已经忘记从复制粘贴的了。现在回头看这个答案完全不懂它的意思了,什么叫只维持一份copy?那static函数岂不是没法递归了?
static函数与普通函数区别在于一个只能在本文件里被调用,而另一个可以被其他文件里的函数调用(包含声明的头文件),即作用域不同。
82.请编写一个C 函数,该函数将一个字符串逆序。
如果字符串是const的,必须要重新申请内存去保存输出结果,如果不是,则可以使用以下方法

}

. . . . 习题 1 一.选择题 (1) 以下叙述正确的是( ) A. 计算机不仅能执行机器语言程序,也可以直接执行其它高级语言编写的程序 B. 汇编语言是一种面向机器的低级语言,所以计算机可以直接执行用汇编语言编写的源程序 C. 高级语言是与自然语言或数学语言相近的计算机语言,用高级语言编写的源程序计算机都不能直接执行 D. 用高级语言编写的源程序只能经过解释程序边解释边执行 (2) 以下不正确的概念是( ) A. 一个 C程序必须包含一个 main 函数 B. 一个 C程序可以只有一个语句 C. 一个 C程序可以由一个或多个函数组成 D. 一个 C语言函数可以没有任何可执行语句 (3) 在 C语言程序中( )。 A. main 函数必须放在程序最前头 B. main 函数必须放在程序最后 C. main 函数必须放在所有函数之前 D. main 函数可以放在程序任何允许放置函数的位置 (4) 以下 C 语言源程序的书写格式不正确的是( ) A. 正确的函数首部,其后必须加上分号 B. 分号是语句的一部分 C. 一行上可以书写多条语句 D. 一个语句可以写在多行之上 (5) 以下不正确的叙述是( ) A. 一个 #include 命令只能指定一个被包含文件 B. 一个 #include 命令可以指定多个被包含文件 C. 在 #include 命令中,文件名可以用尖括号或双引号括起来 D. 一个 C程序中,可以使用多个 #include 文件包含命令 二.填空题 (1) 计算机程序设计语言分为 语言、 语言和 语言。 (2) 正确的算法应具有五个重要的特征是:① ,② ,③ ,④ ,⑤ 。 (3) 算法的表示方法主要有 、 、 、自然语言和 语言等。 (4) 程序设计方法主要分为 程序设计方法和 程序设计方法。 (5) C语言的函数一般由 和 两部分组成。 (6) 注释部分从 开始,以 结束。 (7) 任何 C 程序的执行都是从 函数开始。 (8) 函数体一般包括 部分和 部分。 (9) 一个 C 语言程序由若干个函数组成,其中必须有一个 函数。 三.编程题 (1) 上机运行本章例题,熟悉所用 C 语言系统(如: Turbo C/C++ 和 Visual C++ 6.0 机器语言、汇编语言、高级语言 (2) ①有穷性、②确定性、③有效性、④输入、⑤输出。 (3) 传统流程图、 N-S 图、伪代码、计算机程序 (4) 面向过程、面向对象 (5) 函数首部、函数体 (6) /* 、*/ (7) main (8) 声明、执行

}

我要回帖

更多关于 C语言属于高级语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信