能力说明:
具备数据库基础知识,了解数据库的分类,具备安装MySQL数据库的能力,掌握MySQL数据类型知识,基本了解常用SQL语句,对阿里云数据库产品有基本认知。
暂时未有相关云产品技术能力~
暂无个人介绍
1.什么是中断?中断技术给计算机系统带来了什么作用? 中断概念:当计算机执行正常程序时,系统中出现某些异常情况或特殊请求,CPU 暂停它正在执行的 程序,而转去处理所发生的事件,CPU 处理完毕后,自动返回到原来被中断的程序继续运行,则称为中断。 中断作用: (1)主机与外设并行工作。 (2)实现实时处理。 (3)硬件故障处理。 (4)实现多道程序和分时操作。 2.什么是中断源?识别中断源有哪些方法? 中断源概念:引起中断的原因或发出中断申请的来源,则称为中断源。 中断源识别: (1)每个中断源都有一条中断请求信号线,且固定一个中断服务程序的入口地址,CPU 一旦检测到 某条信号线有中断申请,
5.在计算机上运行汇编语言程序的步骤是什么? (1)用编辑文件如 EDIT 编辑源文件,形成.ASM 文件。 (2)用汇编程序(MASM.EXE)把.ASM 源文件汇编成目标文件.OBJ。 (3)用连接程序(LINK.EXE)把.OBJ 文件转换成.EXE 可执行文件。 (4)运行可执行文件.EXE。 (5)若有错,使用 DEBUG 进行调试。 6.比较宏指令和子程序,它们有何异同?它们的本质是什么? 两者的相同点为:都是用来处理在编程过程中多次使用的功能程序的方法,两者均能简化源程序。 两者的区别在于: (1)宏调用通过宏指令名进行,汇编时,随时调用随时展开,并不简化目标程序;子程序调用是在
10.JMP 指令对目的 CS:IP 的影响? 当 JMP 指令为段内无条件转移时,目的 CS 不变仅影响目的 IP。 当 JMP 指令为段间无条件转移时,将影响目 CS 和目的 IP。 11.指令 CALL 和 INT 的相同点和不问点? 相同点均为调用一段功能程序,且都需要保护断点(现场)和恢复现场。不同点是保护断点(现场) 和恢复现场的内容不同,若 CALL 为近调用则仅需保护和恢复 IP。若 CALL 为远调用则仅需保护和恢复 CS、 IP。而 INT 需保护和恢复 PSW、CS、IP。 第五章 微型计算机的汇编程序(09 道) 1.什么是变量,变量有哪三个属性? 变量通常指存放在存
4.MOV 指令中源、目的操作数的禁用特点? 立即数不能作目的操作数;寄存器 CS、IP 不能作目的操作数;源、目的操作数不能同时为存储器操 作数;源、目的操作数不能同时为段寄存器操作数;立即数不能赋给段寄存器。 5.CMP 指令对状态标志位的影响? 当两操作数比较是否相等时,影响状态标志位 ZF,当两数相等时 ZF=1,反之 ZF=0。当两操作数比较 大小时,无符号数比较和有符号数比较会影响不同的状态标志位。若无符号数比较,当目的操作数小于源 操作数时 CF=1,反之 CF=0。若有符号数比较,当目的操作数小于源操作数时 OF⊕SF=1,反之 OF⊕SF=0。 6.MUL、DIV 指令中专用
30.什么是引脚的分时复用?请说出 8086CPU 有哪些引脚是分时复用的? 8086CPU 的数据线和地址线是分时复用的,所以常把 8086CPU 的总线称为多路总线,即某一时刻总线 上出现的是地址,另一时刻总线上出现的是数据,正是这种引脚的分时复用的方法,才能使 8086CPU 用 40 条引脚实现 20 位地址、16 位数据及众多的控制信号和状态信号的传输。 8086CPU 的分时复用的引脚有:地址/数据复用引脚是:AD15~AD0,在总线周期的 T1 状态,传送地 址信息,在其它状态则传送数据信息;地址/状态复用引脚是:A19/S6~A16/S3,在总线周期的 T1 状态, 传送地址的
27.在 8086 系统中,控制线𝐌/𝐈𝐎̅̅̅的作用是什么? 控制线M/̅IO̅̅的作用是确定在某一时刻 CPU 对存储器操作还是对 I/O 接口操作。当M/IO̅̅̅=0 时,CPU 对 I/O 接口操作有效,当M/IO̅̅̅=1 时,CPU 对存储器操作有效。 28.“8086 执行了一个总线周期”是指 8086 做了哪些可能的操作?在一个典型的读存储器总 线周期中,地址信号、ALE 信号、RD 信号、数据信号分别在何时产生? “8086 执行了一个总线周期”是指:①、8086 可能从片外的存储器取指令;②、8086 可能对片外 的存储器或 I/O 接口进行了一次读/写数据的操作。
22.在 8086 系统中,什么是存储器的规则字和非规则字?CPU 对一个规则字和非规则字读写 时,有什么差别? 规则字是指在存储器中存储的起始地址为偶数(地址最低位 A0 为 0)的字数据,非规则字是指在存 储器中存储的起始地址为奇数(地址最低位 A0 为 1)的字数据。 规则字读写需要一个总线周期,发送BHE ̅̅̅̅̅̅为 0,A0 为 0,一个总线周期读写一个字;非规则字读写需 要两个总线周期,第一个总线周期读取偶存储体数据,发送BHE ̅̅̅̅̅̅为 0,A0 为 1,取得高 8 位数据,第二个 总线周期读取奇存储体数据,发送BHE ̅̅̅̅̅̅为 1,A0 为 0,取得低 8 位数
20.在 8086 系统中,地址线 A0 为什么不能参加存储器的片内选择线? 由于在 8086 系统中外部数据总线是 16 位的,而存储器又是按字节编址的,所以把 1MB 的存储空间 分为两个 512KB 的存储体,分别命名为偶地址存储体和奇地址存储体。偶地址存储体的数据线与系统数据 总线低八位相连,用 A0=0 作为选通信号。奇地址存储体的数据线与系统数据总线高八位相连,用BHE ̅̅̅̅̅̅=0 作 为选通信号。CPU 可以访问任何一个存储体,读写一个字节,也可以同时访问两个存储体,读写一个字。 所以 A0 就不能参加存储器的片内选择线,而是作为存储体的地址译码选择线。 21.在 8086
17.在 8086 系统中,存储器的逻辑地址是由哪两部分组成?物理地址由何器件如何生成?每 个段的逻辑地址与寄存器之间有何对应关系? 存储器的逻辑地址由段地址和段内偏移地址两部分组成。 存储单元的物理地址由地址加法器生成,寻址时,CPU 首先将段地址和段内偏移地址送入地址加法器, 地址加法器将段地址左移 4 位并与段内偏移地址相加,得到一个 20 位的物理地址。 代码段的段地址在 CS 寄存器中,段内偏移地址在 IP 寄存器中。数据段的段地址在 DS 寄存器中,段 内偏移地址可能在 BX、BP、SI 或 DI 寄存器中。堆栈段的段地址在 SS 寄存器中,段内偏移地址在 SP 寄存 器中。扩展段
13.简述流水线技术,怎样实现了最简单的指令流水线? 流水线是指在程序执行时,多条指令重叠进行操作的一种并行处理实现技术。它的并行处理是指完 成一条指令的各个功能部件在同一时间上可以分别为多条指令的不同部分进行工作,通过提高各部件的利 用率来提高指令的平均执行速度。它把一个重复的过程分解为若干个子过程,每个子过程由专门的功能部 件来实现,将多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其它子过程并 行进行。 CPU 分成两部分后,BIU 负责取指令,EU 负责执行指令,它们之间既互相独立又互相配合,即实现了 取指令和执行指令的并行工作,大大提高了 CPU 和总线的利用率
9.什么是基本总线周期,什么是扩展总线周期? 基本总线周期由 4 个时钟周期组成,分别为 T1、T2、T3 和 T4。在 T1 时刻,CPU 的地址/数据复用线 上发出地址信息,用于存储器单元或 I/O 端口的寻址。在 T2~T4 期间,在 CPU 的地址/数据复用线和存储 器单元或 I/O 端口之间实现数据传送。扩展总线周期是在基本总线周期的基础上,根据特殊要求加入等待 周期 Tw 和空闲周期 Tt。为了保证高速 CPU 与低速存储器或 I/O 接口间的数据读写,在控制线 READY 的控 制下,可在 T3 与 T4 间插入一个或多个等待周期 Tw。当 CPU 暂时不需要经总线传送数据时,可
5.在 8086/8088 系统中,6 个状态标志位的作用是什么? 6 个状态标志位为 CF、OF、ZF、SF、AF 和 PF。CF 是无符号数运算时的进位或借位标志,无进位或借 位时 CF=0,有进位或借位时 CF=1;OF 为有符号数运算时的溢出标志,无溢出时 OF=0,有溢出时 OF=1;ZF 是两数运算时的值 0 标志,运算结果不为 0,ZF=0,运算结果为 0,ZF=1;SF 是有符号数运算时运算结果 符号的标志,运算结果为正时 SF=0,运算结果为负时 SF=1;AF 是辅助进位标志,若 D3 位到 D4 位无进位 时(或 D4 位到 D3 位无借位时),AF=0,若 D3 位到
第三章 微型计算机的微处理器(30 道) 1.简述 8086 与 8088 的区别。 CPU 内部的区别:8086 的指令队列缓冲器为 6 字节,8088 为 4 字节;CPU 数据总线的区别:8086 的 数据总线宽度为 16 位,8088 为 8 位;CPU 控制线的区别:因 8086 可一次进行 16 位数据的操作,可用控 制线BHE ̅̅̅̅̅̅和地址线 A0 完成对奇偶存储库的选择,8088 一次只能对 8 位数据的操作,无控制线BHE ̅̅̅̅̅̅的功能。 8086 与 8088 比较,存储器和 I/0 选择控制线的控制电平相反。 2.在 8086/8088 系统中,请分组说明有
14.触发器、寄存器及存储器之间有什么关系? 触发器是计算机记忆装置的基本单元,一个触发器能够存储一位二进制信息。寄存器是由触发器组 成的,一个触发器就是一个一位寄存器,多个触发器就可以组成一个多位寄存器。存储器是由大量寄存器 组成的,其中每一个寄存器被称为一个存储单元,它可以存放一个有独立意义的二进制信息。 15.简述存储器与寄存器的异同。 相同点:存储器和寄存器均用于存放二进制信息。不同点:寄存器为 CPU 内部的存储单元,数量较 少,每个寄存器都有专门用途和名称,编程时用寄存器名访问,例如 MOV AX,BX;存储器为 CPU 外部的存 储单元,数量较大,每个存储单元都有地址,可存放指令
10.简述高速缓冲存储器 Cache 为什么能够实现高速的数据存取? 高速缓冲存储器 Cache 是根据程序的局部性原理来实现高速的数据存取。即在一个较小的时间间隔 内,程序所要用到的指令或数据的地址往往集中在一个局部范围内,因而对局部范围内的地址访问频繁, 而对局部范围外的地址则访问甚少的现象被称为程序的局部性原理。如果把正在执行的指令地址附近的一 小部分指令或数据,即当前最活跃的程序或数据从主存成批调入 Cache,供 CPU 在一段时间内随时使用, 就能在一定程度上大大减少 CPU 访问主存的次数,从而加速程序的运行。 11.简述虚拟存储器的含义是什么? 虚拟存储器是以存储器访问的局部性
7.2164A 如何利用 8 条地址线在芯片内寻址 64K 单元? 2164A 地址线采用行地址线和列地址线分时工作,2164A 对外部只需引出 8 条地址线。芯片内部有地 址锁存器,利用多路开关,由行地址选通信号RAS ̅̅̅̅̅把先送来的 8 位地址送至行地址锁存器,由随后出现的 列地址选通信号C̅̅AS̅̅̅把后送来的 8 位地址送至列地址锁存器,这样就能实现利用 8 条地址线在芯片内寻址 64K 单元。 8.2164A 数据读写是如何实现的?用到了哪些引脚? 2164A 数据的读和写是分开的,由WE ̅̅̅̅̅信号控制读写。当WE ̅̅̅̅̅为高电平时,实现读,即所选中单元的内 容经过
4.简述 CPU 与 Cache、主存和外存的关系。 Cache、主存和外存为当前 PC 机的三级存储体系结构,CPU 首先访问速度最快 Cache,而 Cache 的数 据由主存提供,称 Cache 中的数据为主存中数据的映射,而主存中的数据从速度最慢的外存获得。采用三 级存储体系结构后,可大大提高 CPU 的工作效率。 5.比较 SRAM 和 DRAM 的特点。 SRAM 的记忆单元是双稳态触发器,只要电源不切断,保存的信息就不会丢失,SRAM 存取速度快,集 成度低,功耗大,一般用来组成高速缓冲存储器。 DRAM 的记忆单元是电容,因为电容上的电荷容易衰减,造成存储信息丢失,因此需要定期
13.简述 USB 总线的特点。 (1)即插即用,是开放性的工业标准。 (2)可动态连接和重新配置外设,支持热插拔功能。 (3)允许多台设备同时工作。 (4)可以向 USB 总线上的设备供电,总线上的设备也可以自备电源。 (5)通讯协议支持等时数据传输和异步消息传输的混合模式。 (6)支持实时语音、音频和视频数据传输。 第二章 微型计算机的组成电路(16 道) 1.简述半导体存储器的主要分类?说明它们的用途和区别。 根据存取方式的不同,主要分为随机存取存储器 RAM(静态 RAM,动态 RAM)和只读存取存储器 ROM (不可编程掩膜 MROM,可编程 PROM,紫外光擦除可编程 EPROM,
第六类、编码转换 1.把 2 位压缩的 BCD 码变成十进制数。 DATA SEGMENT X DB 32H Y DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CL,4 MOV AL,X SHR AL,CL MOV BL,10 MUL BL MOV BH,X AND BH,0FH ADD AL,BH MOV Y,AL MOV AH,4CH INT 21H CODE ENDS END START 第七类、芯片控制 1.某 8253 的端口地址为 84H~87H,其中,87H 为
2.首地址为 DAT 的数据区中有 3 个互不相等的 8 位无符号整数,请编写完整程 序,将这 3 个数的最大值存放到 MAX 单元。 DATA SEGMENT DAT DB 6,7,8 MAX DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,DAT+0 ;AL←06H MOV BL,DAT+1 ;BL←07H MOV CL,DAT+2 ;CL←08H L1:CMP AL,BL JA L2 ;AL 中的数据高于 BL 中的数据则跳转 XCHG AL,BL L2:CMP A
5.用查询方式的打印机接口如图:已知 8255A 的 A 口作为输出打印的数据口, 工作于方式 0,PC 口高 4 位工作于输出方式,PC6 产生 STB 信号,PC 口低 4 位 工作于输入方式,PC2 接收打印机的 BUSY 信号。设打印字符存放在数据段中有 效地址为 1000H 的内存单元。请设计打印程序。(8255A 的端口地址位 80H~83H) CODE SEGMENT ASSUME CS:CODE START:MOV AL,81H OUT 83H,AL ;8255A 初始化 MOV AL,0DH OUT 83H,AL ;设置 PC6=1,选通无效 AGAIN:IN AL,82H
3.硬件连接如下图所示,有 8 个开关 K0-K7, 要求不断检测它们的通断状态,并 随时在发光二极管 LED0-LED7 上显示出来。开关闭合,相应的 LED 点亮;开关打 开,LED 熄灭(如 K0 开关闭合,则 LED0 发光二极管点亮)。请写出完整的汇编 语言源程序。 CODE SEGMENT ASSUME CS:CODE START:MOV DX,303H MOV AL,90H OUT DX,AL ;8255 初始化 AGAIN:MOV DX,300H IN AL,DX MOV DX,301H NOT AL OUT DX,AL JMP AGAIN MOV AH,4CH INT 21H
第四类、看图编程 1.某系统外接电路如图,8255A 口地址为 2F0H~2F3H,请设计源程序,一次性的 测试开关的位置,当 K 闭合时,LED 亮,K 断开时 LED 灭(提示:C 口高 4 位应为 方式 0 输入,低 4 位为方式 0 输出)。 CODE SEGMENT ASSUME CS:CODE START:MOV DX,2F3H ;控制口端口地址 MOV AL,88H ;工作方式控制字 OUT DX,AL MOV DX,2F2H ;C 口的端口地址 IN AL,DX ;读取 C 口的状态 TEST AL,80H ;测试 PC7 JNZ L1 MOV AL,00H ;PC7=0,开关
7.一个采用查询方式输出数据的 I/O 接口中,8 位数据端口地址为 2000H,1 位 状态端口地址为 2002H,外设状态位用 D0 传送,高电平表示数据准备好。设 1000 个字节数据存在内存 BUFFER 为首地址的缓冲区中,写出查询方式输出 1000 个 字节数据的程序段。 LEA SI,BUFFER MOV CX,1000 P: MOV DX,2002H L: IN AL,DX TEST AL,01H JZ L MOV DX,2000H MOV AL,[SI] OUT DX,AL INC SI LOOP P HLT 8.编写完整程序,将键盘输入的小写字母转换成大写字母并输出显示,直
第二类、输入输出 1.键盘接收一个小写字母,显示器输出一个大写字母。 CODE SEGMENT ASSUME CS:CODE START:MOV AH,1 ;调用 1 号功能输入 INT 21H SUB AL,20H ;小写变大写 MOV DL,AL MOV AH,2 ;调用 2 号功能输出 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 2.键盘接收一个大写字母,显示器输出一个小写字母。 CODE SEGMENT ASSUME CS:CODE START:MOV AH,1 ;调用 1 号功能输入 INT 21H ADD AL,20H ;大写变小写
13.编写程序段,将 AX 寄存器中的内容以相反的顺序传送到 DX 寄存器中,并要 求 AX 中的内容不被破坏,然后统计 DX 寄存器中“1”的个数并存入 BL 中。 CODE SEGMENT ASSUME CS:CODE START:PUSH AX MOV BL,0 MOV DX,0 MOV CX,16 AGAIN:SHL AX,1 JNC NEXT INC BL NEXT:RCR DX,1 LOOP AGAIN POP AX MOV AH,4CH INT 21H CODE ENDS END START 14.将内存中以 BUF 为首地址的 100 个字节单元中为原码表示的有符号数,依次 变
11.在数据段中 TABLE 开始的存储区为某班级的某门课程的成绩单,共有 20 个 成绩。编程统计其中大于等于 90 分的人数存储到 TOTAL 单元中。 DATA SEGMENT TABLE DB 77,88,87,90,91,92,76,86,65,93,77,88,87,90,91,92, 76,86,65,93 TOTAL DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET TABLE MOV CX,20 MOV BL,0 AGAIN:MOV AL,[
9.编程统计 BUF 内存区若干个有符号数中正数、负数、零的个数并保存到相对应 的结果单元。 DATA SEGMENT BUF DB 10,20,0,0,0,-10,-20,-30,-40,-50 COUNT EQU $-BUF ZS_COUNT DB 0 FS_COUNT DB 0 LS_COUNT DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV CX,COUNT XOR DL,DL;初始化正数个数 XOR DH,DH;初始化负数个数 XO
7.编程统计 NUM 字节单元中奇数的个数,将个数存入 RESULT 单元。 DATA SEGMENT NUM DB 1,2,3,4,5,6,7,8,9,9 RESULT DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DL,0 MOV BX,OFFSET NUM MOV CX,10 AGAIN:MOV AL,[BX] TEST AL,01H JZ NEXT INC DL NEXT: INC BX LOOP AGAIN MOV RESULT,DL MOV AH,4CH INT
3.求内存变量 NUM 中 10 个无符号数的最大值并放入 MAX 中。 DATA SEGMENT NUM DB 1,2,3,4,5,6,7,8,9,10 MAX DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,NUM MOV BX,OFFSET NUM MOV CX,9 AGAIN:INC BX CMP AL,[BX] JAE NEXT MOV AL,[BX] NEXT: LOOP AGAIN MOV MAX,AL MOV AH,4CH INT 21H CODE END
第一类、循环结构 1.求内存变量 NUM 中 10 个有符号数的最大值并放入 MAX 中。 DATA SEGMENT NUM DB 1,-2,3,-4,5,-6,7,-8,9,-10 MAX DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,NUM MOV BX,OFFSET NUM MOV CX,9 AGAIN:INC BX CMP AL,[BX] JGE NEXT MOV AL,[BX] NEXT: LOOP AGAIN MOV MAX,AL MOV AH,4CH IN
24.四舍五入:编程实现将浮点数“123.456789”分别四舍五入保留 1 位小数、 2 位小数和 3 位小数。 #include <stdio.h> void main() { float a = 123.456789; float f1 = (int) ((a * 10) + 0.5) / 10.0; //保留 1 位小数 float f2 = (int) ((a * 100) + 0.5) / 100.0; //保留 2 位小数 float f3 = (int) ((a * 1000) + 0.5) / 1000.0;//保留 3 位小数 printf("f1 = %0.1
21.阶梯水费:为鼓励居民节约用水,自来水公司按用水量阶梯式计价的办法, 居民应交水费 y(元)与月用水量 x(吨)相关:当 x 不超过 15 吨时,y=4x/3; 超过后,y=2.5x-17。请编写程序实现水费的计算。 #include <stdio.h> void main() { float x, y; scanf("%f", &x); if (x >= 0 && x <= 15) y = 4 * x / 3; else y = 2.5 * x - 17; printf("%.2f\n", y); } 22.蠕虫爬井:一条蠕虫长 1 寸,在一口深为 N 寸的井的底部。已知
5.阶梯电价:为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一 户一表的居民用户电价分为两个“阶梯”:月用电量 50 千瓦时(含 50 千瓦时) 以内的,电价为 0.53 元/千瓦时;超过 50 千瓦时的,超出部分的用电量,电价 上调 0.05 元/千瓦时。输入某用户的月用电量(单位:千瓦时),计算该用户应 支付的电费(元),结果保留两位小数。 #include <stdio.h> void main() { float ydl, df; scanf("%f", &ydl); if (ydl <= 50) df = 0.53 * ydl; else df = 0.53 *
第九类、实际应用(27 道) 1.自由落体:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再 落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高? #include <stdio.h> void main() { double s = 100, h = s / 2; int i; for (i = 2; i <= 10; i++) { s = s + 2 * h; h = h / 2; } printf("s=%.6lf\n", s); printf("h=%.6lf\n", h); } 2.计算天数:输入年月日,求当天是那年的第几天? #inc
20.求数字:输出 100(含 100)-200(含 200)以内的满足以下条件的数,条件 为:这个数与 3 的和是 5 的倍数,与 3 的差是 6 的倍数,输出这样的数。 #include <stdio.h> void main() { int i; for (i = 100; i <= 200; i++) if ((i + 3) % 5 == 0 && (i - 3) % 6 == 0) printf("%d,", i); } 21.求数字:找出乘积为 399 的两个相邻奇数。 #include <stdio.h> void main() { int i = 1; whil
第二类、特殊数字(24 道) 1.奇数:输出 1-1000 之间所有的奇数。 #include <stdio.h> void main() { int i; for (i = 1; i <= 1000; i++) if (i % 2 == 1) printf("%d,", i); } 2.偶数:输出 1-1000 之间所有的偶数。 #include <stdio.h> void main() { int i; for (i = 1; i <= 1000; i++) if (i % 2 == 0) printf("%d,", i); } 3.素数:输出 1-1000 之间所有
8.求年龄:有 5 个人坐在一起,问第 5 个人多少岁,他说比第 4 个人大 2 岁。问 第 4 个人多少岁,他说比第 3 个人大 2 岁。问第 3 个人多少岁,他说比第 2 个 人大 2 岁。问第 2 个人多少岁,他说比第 1 个人大 2 岁。最后问第 1 个人,他 说是 10 岁。请问第 5 个人多大? #include <stdio.h> int age(int n) { if (n == 1) return 10; return age(n - 1) + 2; } void main() { printf("%d", age(5)); } 9.猴子吃桃问题:猴子第一天摘下若干个
第一类、递归调用(13 道) 1.汉诺塔:请输入盘子数,输出盘子移动的操作步骤。 #include <stdio.h> void move(char from, char to) { printf("%c to %c\n", from, to); } void hanoi(int n, char a, char b, char c) { if (n == 1) move(a, c); else { hanoi(n - 1, a, c, b); move(a, c); hanoi(n - 1, b, a, c); } } void main() { int n; scanf
# C语言笔记第一章 ## C语言基础 程序设计:是指设计 编制 调试程序的方法和过程 程序语言:人与计算机交流信息,计算机和人都能识别的语言。 C语言是一门高级程序设计语言。 ## C语言主要内容 既要掌握概念 又要动手编程,还要**上手去调试** ## c程序设计语言 是一种高级语言(方便 快捷) 历史悠久:20世纪70年代 上天入地,无所不能:c语言实现的软件,没有不支持c语言的系统 ## c语言的特点 1 语言简洁,紧凑,使用方便,灵活。32关键字、9种控制语句,程序形式自由。 2 运算符丰富,34种运算符 3 数据类型丰富 具有现代语言的各种数据结构。