嵌入式软件开发笔试题
- 格式:docx
- 大小:26.25 KB
- 文档页数:7
美的嵌入式软件开发笔试题目美的嵌入式软件开发笔试题目作为一名嵌入式软件开发工程师,我们需要能够熟练地掌握各种开发工具和技术,才能更好地完成开发任务。
下面是一些美的嵌入式软件开发的笔试题目,希望对大家有所帮助。
一、C语言题目1.请编写一个函数,将字符串中的每个字符都转换成大写字母,并返回转换后的字符串。
2.请写一个函数,输入一个字符串,返回该字符串中最长的连续数字串。
3.请编写一个C程序,输入一个10进制整数,将该整数转化为16进制输出。
4.请编写一个函数,输入两个字符串,比较两个字符串的大小,并返回一个int类型的值,1表示str1>str2,0表示str1=str2,-1表示str1<str2。
二、操作系统题目1.请简述Linux系统的启动过程。
2.什么是中断,中断的作用是什么?3.进程和线程的区别是什么,它们是如何调度的?4.请简述虚拟内存的实现原理以及如何进行内存分页管理。
三、计算机网络题目1.请简述TCP和UDP协议的区别。
2.什么是ARP协议,该协议的作用是什么?3.什么是ACL(访问控制列表),它是如何实现的?4.请阐述TCP的拥塞控制算法。
四、算法题目1.请实现快速排序算法。
2.请编写一个函数,输入一个数组和一个数字n,查找出数组中两个数之和为n的两个数。
3.请实现Dijkstra算法,计算最短路径。
4.请编写一个函数,输入两个字符串A,B,返回其中最长的公共子序列。
以上是美的嵌入式软件开发的一些笔试题目,希望大家认真对待,加强自身的技能水平,更好地完成开发任务。
嵌入式开发工程师笔试题1. 题目:简述嵌入式系统的定义,并举例说明。
- 答案:嵌入式系统是一种嵌入到对象体系中的专用计算机系统。
它以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
例如,智能手环就是一个嵌入式系统,它内部有专门的芯片(硬件),运行着特定的程序(软件),这个程序主要是为了实现健康监测(如心率检测、运动步数统计等)功能,并且它的体积很小,功耗也非常低,是为了满足佩戴在手腕上长时间使用的需求。
- 解析:首先呢,嵌入式系统这个概念就是专门为了特定应用而存在的计算机系统。
就像我们说的智能手环,它不是像普通电脑那样什么功能都有,它只专注于健康监测这些功能,这就是以应用为中心。
而且它的硬件和软件都是根据这个需求定制的,就像定制一件合身的衣服一样,不能太大(体积小)也不能太耗电(功耗低),这样才能很好地戴在手腕上,所以这就是嵌入式系统的一个很好的例子呀。
2. 题目:在嵌入式开发中,什么是中断?请举例说明其应用场景。
- 答案:中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
例如,在温度控制系统中,当温度传感器检测到温度过高时,它就会产生一个中断信号。
这个信号会让嵌入式系统暂停当前的一些不太紧急的任务,比如显示当前状态之类的,然后马上执行温度过高的处理程序,比如启动降温设备(风扇等),等温度降下来后,再回到之前的任务继续执行。
- 解析:中断就像是你正在做一件事,突然有更紧急的事情来了,你得先去处理这个紧急的事,处理完再回来接着做原来的事。
就像在温度控制系统这个例子里,正常情况下嵌入式系统在做自己的常规工作,但是温度过高这个情况很紧急啊,就像家里着火了一样,这时候就得中断其他事先处理温度过高的问题,等温度降下来安全了,再回到日常的工作状态呀。
嵌入式软件开发笔试题目
嵌入式软件开发笔试题目主要考察以下几个方面:
1.嵌入式系统基础:包括嵌入式系统的概念、特点、结构、组成、开发流程等。
2.嵌入式软件设计:包括嵌入式软件的设计方法、设计原则、设计规范等。
3.嵌入式软件开发语言:包括C、C++、Java等嵌入式软件开发语言的语法、关
键字、库函数等。
4.嵌入式软件开发工具:包括编译器、调试器、仿真器等嵌入式软件开发工具
的使用方法。
5.嵌入式软件开发常见问题:包括内存管理、中断处理、多任务处理等嵌入式
软件开发常见问题的解决方法。
以下是一些常见的嵌入式软件开发笔试题目:
嵌入式系统基础
1.什么是嵌入式系统?
2.嵌入式系统的特点是什么?
3.嵌入式系统的结构是什么?
4.嵌入式系统的组成是什么?
5.嵌入式系统的开发流程是什么?
嵌入式软件设计
1.嵌入式软件的设计方法有哪些?
2.嵌入式软件的设计原则有哪些?
3.嵌入式软件的设计规范有哪些?
嵌入式软件开发语言
1.C语言的关键字有哪些?
2.C++语言的关键字有哪些?
3.Java语言的关键字有哪些?
嵌入式软件开发工具
1.编译器的功能是什么?
2.调试器的功能是什么?
3.仿真器的功能是什么?
嵌入式软件开发常见问题
1.内存管理的策略有哪些?
2.中断处理的流程是什么?
3.多任务处理的策略有哪些?。
嵌入式笔试题及答案一、单选题(每题2分,共20分)1. 嵌入式系统通常指的是:A. 通用计算机系统B. 专用计算机系统C. 便携式计算机系统D. 网络计算机系统答案:B2. 下列哪个不是嵌入式系统的特点:A. 实时性B. 资源受限C. 可扩展性D. 专用性答案:C3. 在嵌入式系统中,通常使用哪种类型的处理器:A. 通用处理器B. 微处理器C. 数字信号处理器D. 图形处理器答案:B4. 嵌入式系统的开发流程不包括以下哪一项:A. 需求分析B. 系统设计C. 硬件选择D. 软件编程答案:C5. 以下哪个不是嵌入式操作系统的功能:A. 任务调度B. 内存管理C. 文件系统D. 网络通信答案:D6. 在嵌入式系统中,中断服务程序的作用是:A. 执行系统初始化B. 处理系统异常C. 响应外部事件D. 执行系统监控答案:C7. 以下哪个不是嵌入式系统的硬件组成部分:A. 微处理器B. 存储器C. 输入/输出设备D. 操作系统答案:D8. 嵌入式系统中的外设驱动程序的主要功能是:A. 控制外设的电源B. 实现系统与外设的通信C. 管理外设的内存D. 处理外设的错误答案:B9. 在嵌入式系统中,以下哪个不是常用的编程语言:A. C语言B. C++C. JavaD. Assembly答案:C10. 以下哪个不是嵌入式系统的开发工具:A. 编译器B. 调试器C. 仿真器D. 网络浏览器答案:D二、多选题(每题3分,共15分)11. 嵌入式系统的开发需要考虑以下哪些因素:A. 系统性能B. 成本控制C. 功耗管理D. 软件兼容性答案:A, B, C12. 嵌入式系统的软件包括以下哪些部分:A. 引导程序B. 操作系统C. 应用程序D. 驱动程序答案:A, B, C, D13. 嵌入式系统的硬件设计包括以下哪些内容:A. 微处理器选择B. 存储器设计C. 外设接口D. 电源管理答案:A, B, C, D14. 嵌入式系统的调试方法包括:A. 单元测试B. 集成测试C. 系统测试D. 性能测试答案:A, B, C, D15. 嵌入式系统的实时性要求包括:A. 确定性B. 可预测性C. 可重复性D. 可扩展性答案:A, B三、判断题(每题1分,共10分)16. 嵌入式系统总是需要操作系统的支持。
嵌入式笔试题在当今科技快速发展的背景下,嵌入式系统成为人们日常生活中不可或缺的一部分。
嵌入式系统广泛应用于智能手机、可穿戴设备、汽车电子、家用电器等各个领域。
为了提高嵌入式系统的工程能力,以下是一些嵌入式系统相关的笔试题目,帮助大家巩固相关知识。
一、单项选择题1. 软件开发中,以下那种语言属于编译型语言?A. PythonB. C++C. JavaScriptD. Ruby2. 嵌入式系统可以分为硬件和软件两部分。
以下哪一项属于嵌入式系统的软件部分?A. CPUB. RAMC. 操作系统D. 电源3. 在嵌入式系统中,以下哪一种通信协议被广泛应用于设备间的数据传输?A. HTTPB. FTPC. USBD. DNS4. 嵌入式系统中最常用的开发语言是什么?A. CB. PythonC. JavaD. Ruby5. 在嵌入式系统的开发过程中,以下哪个阶段主要涉及硬件设计?A. 需求分析B. 软件开发C. 硬件设计D. 测试与验证二、填空题1. 嵌入式系统是一种______________的计算机系统。
2. 嵌入式系统通常由______、__________和________组成。
3. 常用的嵌入式操作系统有____________、_________、__________等。
4. 在嵌入式系统中,CPU的作用是______________。
5. 嵌入式系统的节能设计可以通过_______________实现。
三、简答题1. 请简要解释什么是中断?2. 嵌入式系统中的RTOS是什么意思?简述其作用。
3. 请简要解释什么是嵌入式系统的实时性要求?4. 嵌入式系统的可靠性是指什么?如何提高嵌入式系统的可靠性?5. 嵌入式系统的性能指标有哪些?请列举并解释。
四、编程题请使用C语言编写一个简单的嵌入式系统应用程序,在LCD显示屏上循环显示数字1到9,每个数字显示1秒钟,然后重复该过程。
附加题:请将上述应用程序在实际的硬件平台上进行调试和运行。
嵌入式系统开发考试题含参考答案一、单选题(共100题,每题1分,共100分)1.生成内核映像文件zImage的过程makezImage是指A、编译变量依赖关系B、内核裁剪C、生成内核映像文件zImage正确答案:C2.下列哪个命令可以用来查看当前目录中的文件和目录?A、rmB、lsC、pwd正确答案:B3.实时在线仿真的缺点是()A、功能有限B、价格昂贵C、响应速度慢正确答案:B4.Cache用于存放主存数据、程序的部分拷贝,主存单元地址与Cache单元地址之间的交换用(A)完成A、硬件B、软件C、用户正确答案:A5.Linux应用程序可以通过()的一-组固定的入口点来访问驱动程序,这组入口点是由每个设备的设备驱动程序提供的。
A、设备文件B、系统C、内存正确答案:A6.gcc-()只编译生成目标文件,后缀为.oA、cB、oFileNameC、g正确答案:A7.典型的块设备有()A、触摸屏B、U盘C、简单按键正确答案:B8.共享型函数库(动态链接库)的后缀为()A、aB、soC、c正确答案:B9.设备号用于区分具体的()。
A、设备B、设施C、状态正确答案:A10.在Linux中,以下哪个命令用于查看当前登录的用户名称?A、whoB、whoamiC、ps正确答案:B11.晶振一般叫做晶体谐振器,用电损耗很小的()经精密切割磨削并镀上电极,焊上引线做成。
A、金刚石B、硅体C、石英晶体正确答案:C12.关于ARM处理器的异常,以下说法错误的是()。
A、FIQ是外部中断异常B、复位异常级别最高C、每个异常中断向量占据4个字节正确答案:A13.嵌入式系统的设计思路是()。
A、功能越强大越好B、越复杂越好C、够用即可正确答案:C14.把Linux操作系统针对具体的目标平台做必要的()之后,安装到该目标平台使其正确运行,这就叫移植。
A、减少B、改写C、复制正确答案:B15.8051系列单片机是()公司设计并生产的A、IntelB、MotorolaC、IBM正确答案:A16.物理系统的()、尺寸和耗电量是否是产品成功的关键因素A、成本B、重量C、大小正确答案:A17.Armboot是一个(),是为基于ARM或者StrongARMCPU的嵌入式系统所设计的。
1. 请解释什么是嵌入式系统?
2. 请列举几种常见的嵌入式操作系统,并简要介绍它们的特点。
3. 请解释实时操作系统(RTOS)的概念,并说明它在嵌入式系统中的重要性。
4. 请解释中断和轮询的区别,以及它们在嵌入式系统中的应用场景。
5. 请解释什么是中断处理程序(ISR),并简要描述其执行过程。
6. 请解释什么是任务(Task)和事件(Event)驱动编程,并简要描述它们在嵌入式系统中的应用。
7. 请解释什么是嵌入式系统的低功耗设计,并列举几种常见的低功耗技术。
8. 请解释什么是嵌入式系统的硬件抽象层(HAL),并简要描述其作用。
9. 请解释什么是嵌入式系统的软件组件化设计,并简要描述其优点。
10. 请解释什么是嵌入式系统的调试方法,并列举几种常见的调试工具。
11. 请解释什么是嵌入式系统的故障诊断和容错设计,并简要描述其重要性。
12. 请解释什么是嵌入式系统的系统集成测试,并简要描述其步骤。
13. 请解释什么是嵌入式系统的软件开发流程,并简要描述其主要阶段。
14. 请解释什么是嵌入式系统的硬件平台,并简要描述其组成部分。
15. 请解释什么是嵌入式系统的软件开发环境,并简要描述其特点。
16. 请解释什么是嵌入式系统的软件版本控制,并简要描述其重要性。
17. 请解释什么是嵌入式系统的软件质量保证,并简要描述其方法。
18. 请解释什么是嵌入式系统的软件性能优化,并简要描述其方法。
19. 请解释什么是嵌入式系统的软件安全设计,并简要描述其重要性。
20. 请解释什么是嵌入式系统的软件可维护性设计,并简要描述其方法。
嵌入式软件开发笔试题在嵌入式软件开发领域,面试或笔试题常被用来评估应聘者的技能和知识水平。
下面是一个嵌入式软件开发笔试题的示例,帮助考生了解面试或笔试的常见题型和要求。
一、题目背景假设你是一名嵌入式软件开发工程师,负责开发一款智能家居控制系统。
该系统通过无线网络连接各类智能设备,实现远程智能控制。
你的任务是设计和开发一个温湿度传感器模块,用于采集室内温度和湿度数据,并将数据发送给主控制器。
请根据以上要求,完成以下任务。
二、任务一:硬件设计1. 根据题目要求,设计一个温湿度传感器模块的硬件电路。
至少需要包括温度传感器、湿度传感器、微控制器和无线通信模块。
请绘制模块的电路原理图,并解释各个组件的连接关系和功能。
2. 为了提高电路的稳定性和可靠性,在PCB设计中需要注意哪些要点?请简要概述。
三、任务二:软件开发1. 选择一种适合嵌入式开发的编程语言和开发工具。
请说明你的选择理由,并简要描述编程语言和开发工具的主要特点。
2. 请编写传感器模块的软件程序,并实现以下功能:a) 初始化传感器模块,包括各个传感器的初始化设置;b) 定时采集室内温湿度数据;c) 将采集到的数据通过无线通信模块发送给主控制器;d) 在发送数据时,需要进行数据校验和错误处理;e) 能够处理主控制器发来的控制指令,如打开或关闭传感器模块、调整采集频率等。
四、任务三:系统集成与测试1. 利用模拟环境或硬件实际搭建一个完整的智能家居控制系统。
包括主控制器、传感器模块和其他智能设备。
2. 对系统进行综合测试,包括传感器模块的功能测试、数据传输的可靠性测试和整个系统的稳定性测试。
3. 请列举你认为可能发生的故障和问题,并提出相应的解决方案。
五、任务四:报告撰写请根据你的设计和开发过程,撰写一份设计开发报告。
报告内容包括但不限于以下几个方面:1. 硬件设计和软件开发的详细过程及实现方法;2. 系统集成和测试的过程和结果;3. 遇到的问题及解决方案;4. 对整个设计开发过程的总结和反思;5. 特别指出项目的亮点和创新之处;6. 参考资料。
嵌入式笔试题及答案一、选择题(每题2分,共40分)1. 下面哪个不是嵌入式系统的特点?A. 实时性强B. 资源受限C. 包含网络通信功能D. 电源自主供电答案:C2. 嵌入式系统的一个主要应用领域是:A. 医疗设备B. 大型工业控制C. 智能手机D. 电子游戏答案:A3. 在嵌入式系统开发中,通常使用哪种编程语言?A. PythonB. JavaC. C/C++D. JavaScript答案:C4. 嵌入式系统的主要硬件组成部分是:A. 处理器、内存、外设B. 显示屏、键盘、鼠标C. 摄像头、扬声器、麦克风D. 电源、机箱、风扇答案:A5. 在嵌入式系统开发中,以下哪个是常用的实时操作系统?A. WindowsB. LinuxC. AndroidD. RTOS答案:D...二、编程题(共60分)请使用C语言完成以下题目:1. 编写一个函数,判断一个数是否为素数。
函数原型为: int isPrime(int n);答案:```c#include <stdio.h>int isPrime(int n) {int i;for (i = 2; i <= n/2; i++) {if (n % i == 0) {return 0; // 不是素数}}return 1; // 是素数}int main() {int n;printf("请输入一个整数:");scanf("%d", &n);if (isPrime(n)) {printf("%d是素数\n", n);} else {printf("%d不是素数\n", n);}return 0;}```2. 编写一个函数,计算n的阶乘。
函数原型为: int factorial(int n);答案:```c#include <stdio.h>int factorial(int n) {if (n == 0) {return 1;} else {return n * factorial(n - 1);}}int main() {int n;printf("请输入一个整数:");scanf("%d", &n);printf("%d的阶乘为:%d\n", n, factorial(n));return 0;}```...三、简答题(每题10分,共30分)1. 简述嵌入式系统的优缺点。
招聘嵌入式软件开发岗位笔试题及解答(某大型国企)(答案在后面)一、单项选择题(本大题有10小题,每小题2分,共20分)1、嵌入式软件开发中,以下哪个组件负责处理输入/输出操作?A、内核(Kernel)B、驱动程序(Driver)C、应用程序(Application)D、操作系统(Operating System)2、以下哪个编程语言通常用于嵌入式系统的开发?A、JavaB、C/C++C、PythonD、JavaScript3、以下关于嵌入式系统开发的特点,描述错误的是:A. 嵌入式系统通常具有实时性要求高B. 嵌入式系统通常具有功耗限制C. 嵌入式系统通常具有资源受限的特点D. 嵌入式系统不需要进行软件测试4、以下关于Cortex-M微控制器内核,描述错误的是:A. Cortex-M内核是ARM公司推出的微控制器内核系列B. Cortex-M内核具有低功耗和高性能的特点C. Cortex-M内核不支持中断嵌套D. Cortex-M内核广泛应用于嵌入式系统5、题干:嵌入式软件开发中,以下哪种通信协议主要用于短距离、低功耗的设备间通信?A. USBB. TCP/IPC. CAND. NFC6、题干:在嵌入式系统中,以下哪个组件通常负责处理硬件中断?A. 运行时库B. 操作系统内核C. 应用程序D. 硬件抽象层7、嵌入式软件开发中,以下哪个不是常见的嵌入式操作系统?A)VxWorksB)FreeRTOSC)LinuxD)Windows8、在嵌入式软件开发中,以下哪种编程语言最适合用于硬件抽象层(HAL)的开发?A)C++B)PythonC)JavaD)Assembly9、以下哪个选项不是嵌入式系统常见的实时操作系统(RTOS)?A. VxWorksB. LinuxC. FreeRTOSD. Windows XP 10、在嵌入式软件开发中,以下哪种编程语言不是通常用于编写嵌入式应用的?A. CB. C++C. PythonD. Assembly二、多项选择题(本大题有10小题,每小题4分,共40分)1、以下哪些是嵌入式系统开发中常用的编程语言?A. C语言B. C++C. PythonD. JavaE. Assembly语言2、在嵌入式系统设计中,以下哪些是典型的硬件资源?A. 微控制器(MCU)B. 数字信号处理器(DSP)C. 传感器D. 显示屏E. 通信接口3、以下哪些技术或编程语言通常用于嵌入式软件开发?A. C语言B. PythonC. JavaD. ARM汇编语言E. Verilog4、以下哪些是嵌入式系统开发中常见的开发流程步骤?A. 需求分析B. 硬件选型与设计C. 软件设计D. 编码与调试E. 系统集成与测试5、以下哪些技术或工具是嵌入式软件开发中常用的?()A、C/C++B、Linux操作系统C、Keil MDKD、IAR EWARME、QtF、MATLAB/Simulink6、以下哪些是嵌入式系统设计中常见的硬件接口?()A、SPI(串行外设接口)B、I2C(串行总线上传输接口)C、UART(通用异步收发传输器)D、USB(通用串行总线)E、PCI(外围组件互联)F、CAN(控制器局域网)7、以下哪些技术或工具通常用于嵌入式软件开发?()A. C语言B. PythonC. VHDLD. ARM Cortex-M3E. SQLite8、在嵌入式软件开发过程中,以下哪些步骤是常见的?()A. 需求分析B. 硬件选型C. 设计架构D. 编码实现E. 系统集成测试9、以下哪些技术或工具是嵌入式软件开发中常用的?()A. C/C++B. ARM Cortex-M系列处理器架构C. Linux操作系统D. SQLite数据库E. Keil uVision集成开发环境 10、以下哪些是嵌入式系统开发过程中的关键阶段?()A. 需求分析B. 硬件选型与设计C. 软件设计D. 编码实现E. 测试与调试三、判断题(本大题有10小题,每小题2分,共20分)1、嵌入式软件开发岗位中,C语言是唯一可用的编程语言。
答题前,请如实填写英语四六级考试成绩,未参加六级考试的,对应出不填. 英语四级考试成绩:520 英语六级考试成绩: 考试时间为1小时。 嵌入式篇
1. 用变量a给出下面的定义 a) 一个整型数 int a; b)一个指向整型数的指针 int *a; c)一个指向指针的的指针,它指向的指针是指向一个整型数 int **a; d)一个有10个整型数的数组 int a[10]; e) 一个有10个指针的数组,该指针是指向一个整型数的。int *a[10]; f) 一个指向有10个整型数数组的指针 int (*a)[10;] g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数 int (*a)(int); h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数 int (*a[10])(int); 2. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。 #define SECONDS_PER_YEAR (60*60*24*365)UL 3. 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A)<=(B)?(A):(B)) 4. 定义一个全局变量int val = 10,写出在其他文件中引用此变量val的语句? extern val; val=val++; 5. 定义enum workday{mon, tue, wed,thu,fri};,请问thu = 3.
6. 对typedef的用法举例。 typedef int(*p)(); p function(int (*a)()); 7. 请写出你知道的任意4个“位运算符”符号。 &、^、|、~、 8. 局部变量能否和全局变量重名? 可以 。 9. 关键字static的作用是什么? 两个作用:1.局部变量被申明为static,表示这个函数结束的时候这个的值不变。 2.外部变量被申明为static表明它是一个本地全局变量。改变量只能在该文件内被访问,不能被其它文件访问。 10. 关键字volatile有什么含意? 被volatile定义的变量表示这个变量可能会产生意想不到的改变,这样定义之后编译器就不会去假设这个变量的值,也就是说在优化时提醒编译器每次都必须到内存中去取这个变量的值,而不是使用保存在寄存器的备份。 11. 头文件中的 ifndef/define/endif 干什么用? define 的作用是用一个指定的标示符代替已有的标示符,这个标示符可以有变量也可以没有变量 条件编译:他的作用是若所指定的标示符已经被#define命令定义过,则在程序编译阶段不编译define程序段 12. switch()中不允许的数据类型是? 除了整型和字符外 其他的都不行 13. 包含头文件的方法 #include “xxx.h”和#include有什么区别? 前者表示这个xxx.h是程序开发者自己定义的头文件,后者表示是C库中存在头文件。 14. char * const p; char const * p; const char *p。这三个有什么区别? char * const p; 指向一个字符型的只读指针 char const * p;指向一个只读字符型变量的指针 const char *p 指向一个只读字符型变量的指针 15. 在32位系统中,有如下定义的对象,请问sizeof(object1)= 3字节 ,sizeof(object2)= 7字节 ,sizeof(object3)= 4字节 (1) char object1[] = “boy”; (2) Struct item { char a; short b; int c; }; struct item object2;
(3) union item { char a; short b; int c; }; union item object3;
16. 这段程序的输出是:( b ) main()
{ int a[5] = {1,2,3,4,5}; int *ptr = (int*)(&a+1); printf("%d %d" , *(a+1), *(ptr-1) ); } (a) 2 2 (b) 2 1 (c) 2 5 (d) 以上均不是 17. 请完成函数fun(),计算n的阶乘n!(注:使用递归实现)。 unsigned long long fun(unsigned int n); { if(n==0) return 1; else { int recurse=fun(n-1); int result=n*recurse; return result; } }
18. 二者选一题(请选择如下任意一题作答) (1) 写一个函数sum(),计算1~100(包括100)之间数的累加和。 int sum() { int i,sum1; for(i=0;i<101;i++) { sum1=sum1+i; } return(sum1); } (2) 有一个16位的无符号整数,每4位为一个数,写函数求他们的和。 解释: 整数1101010110110111 和 1101+0101+1011+0111
19. 选做题 (如有余力可对如下两题做答) (1) 写出程序把一个链表中的结点顺序倒排。 typedef struct linknode { int data; struct linknode *next; }node; 具体详细代码如下: #include #include #include typedef int DataType; typedef struct linknode { DataType data; struct linkode *next; }node; //---- initiate void ListInitiate(node **head) { if( (*head=(node *)malloc(sizeof(node)))==NULL ) exit(1); else printf("OK\n"); (*head)->next=NULL; }
//---- length cal int ListLength(node *head) { node *p=head; int size=0; while(p->next!=NULL){ p=p->next; size++; } return size; } //----insert a node int ListInsert(node *head,int i,DataType x) { node *p,*q; int j; p=head; j=-1; while( (p->next!=NULL) && (j<(i-1)) ) { p=p->next; j++; } if(j!=(i-1)) { printf("Position error\n"); return 0; } if((q=(node *)malloc(sizeof(node)))==NULL) exit(1); q->data=x; q->next=p->next; p->next=q; return 1; } //----delete a node int ListDelete(node *head,int i,DataType *x) { node *p,*s; int j; p=head; j=-1; while((p->next!=NULL) && (p->next->next!=NULL) && (j p=p->next; j++; } if(j!=i-1){ printf("Position error\n"); return 0; } s=p->next; *x=s->data; p->next=p->next->next; free(s); return 1; } //----- data get int ListGet(node *head,int i,DataType *x) { node *p; int j; p=head; j=-1; while((p->next!=NULL)&&(j p=p->next; j++; } if(j!=i) { printf("Position error\n"); return 0; } *x=p->data; return 1; } //----Destroy a chain void Destroy(node **head) { node *p,*p1; p=*head; while(p!=NULL) { p1=p;