实验一:简单程序设计实验
(1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。
程序流程图略。 参考源程序:
DATA
SEGMENT
NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ?
DATA
ENDS
CODE
SEGMENT
ASSUME DS:DATA, CS:CODE
START: MOV AX,DATA
;数据段寄存器初始化
MOV DS,AX
MOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH ;正常返回DOS 系统
INT 21H
CODE
ENDS END START
(2)编写一个拆字程序。要求将存放在 ARY 单元的 2 位十六进制数 X 1X 2 拆为 X 1 和 X 2 两 部分,并以 0X 1 和 0X 2 的形式分别存入 ARY+1 和 ARY+2 单元中。
程序流程图略。 参考源程序:
DATA SEGMENT
ARY DB 2AH,?,?
DATA ENDS
CODE
SEGMENT
ASSUME DS:DATA, CS:CODE
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET ARY ;取ARY 的偏移地址 MOV AL,[SI]
;取16进制数至AL
MOV BL,AL
AND AL,0F0H ;取16进制数的高四位,即X1
SHR AL,4
MOV [SI+1],AL ;存0X1
MOV AL,BL
AND AL,0FH ;取16进制数的低四位,即X2
MOV [SI+2],AL ;存0X2
MOV AH,4CH
INT 21H
CODE ENDS
END START
实验二:分支程序设计实验
(1)编写一个字符比较程序,比较3 个无符号字节数A,B,C 的大小,并根据比较结果对变量K 赋值:
如果3 个数不相等,则K=0;
如果3 个数中有两个相等,则K=1;
如果3 个数都相等,则K=2。
程序流程图略。
参考源程序:
DATA SEGMENT ;定义待比较数A、B、C,比较结果K
A D
B 20H
B DB 20H
C DB 20H
K DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,A
CMP AL,B ;对A、B进行比较,不相等则转到COMP2
JNE COMP2 ;相等则比较A、C
CMP AL,C
JNE K1 ;A、C不相等则K=1
JMP K2 ;A、C相等则K=2
COMP2: MOV BL,B
CMP BL,C
JE K1 ;对B、C进行比较,相等则K=1
CMP AL,C
JE K1 ;对A、C进行比较,相等则K=1
K0: MOV K,0
JMP EXIT
K1: MOV K,1
JMP EXIT
K2: MOV K,2
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
(2)编写一个能实现下列表达式的程序:
?N = ?A + B A ≤B
设A,B,C 为小于128 的正整数。
?A ?B +C
程序流程图略。
参考源程序:
DATA SEGMENT
A > B
A D
B 22H ;定义A、B、C、N
B DB 10H
C DB 01H
N DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL, A
CMP AL, B
JG CALCUL ;A 小于或等于B 则N=A+B
ADD AL,B
JMP EXIT
CALCUL: SUB AL, B
ADC AL, C
EXIT: MOV N, AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
实验三循环程序设计实验
(1)将字符串STRN(以“$”结尾)中的每一个字符均加上偶校验位,并统计有多少个字符因含有奇数个“1”而加上了校验位。统计结果存于N单元中。
程序流程图略。
参考源程序:
DA TA SEGMENT
STRN DB 'What$' ;任意定义一个字串,以“$”结尾
COUNT EQU $-STRN
N DB ?
BUF DB COUNT DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV AX, DATA
MOV ES, AX
LEA SI, STRN
LEA DI, BUF
MOV CX, COUNT
MOV AL, 0
LP1: MOV BL, [SI] ;逐个取字符进行判断
AND BL, BL ;自己和自己做与运算
JP NEXT
;根据PF 标志位的变化进行跳转
INC AL
OR BL, 80H
NEXT: MOV [DI], BL
INC SI
INC DI
LOOP LP1
MOV N, AL
MOV AH, 4CH
INT 21H
CODE ENDS
END START
(2)在FIRST 开始的一片连续的数据区中存放着100 个数据,编写一个程序,统计第1
个数据‘0’之前的数据个数。
程序流程图略。参考源程
序:
DA TA SEGMENT
FIRST DB 10H,24H,34H, 73H,20H,44H,03H,36H,41H ;任取9 个数做演示
COUNT EQU $-FIRST
NUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DL, 0 ;计数值初始为0
MOV CX,COUNT
MOV BX, OFFSET FIRST
LP1: MOV AL, [BX] ;每次取一个数,与0 比较CMP AL, 00H
JNE NEXT
JMP EXIT ;找到0 则退出
NEXT: INC DL ;没找到0 则计数值加1 INC BX
LOOP LP1
EXIT: MOV NUM, DL
MOV AH, 4CH
INT 21H
CODE ENDS
END START
实验四:子程序设计实验
将BUF开始的10个单元中两位十六进制数转换成ASCII码,并在屏幕上显示出来。要求码型转换通过子程序HEXASC实现,参数传送采用寄存器传送方式。
程序流程图略。参考源程序:
(1)实现方法一:远过程调用
DA TA SEGMENT
BUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2H
COUNT EQU $-BUF ;定义任意长度的一段BUF
DA TA ENDS
STACK1 SEGMENT STACK
DB 100 DUP(?) ;设置足够深度的栈区
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF
MOV CX,COUNT
AGAIN: MOV AL,[SI] ;逐个取数
MOV BL,AL
SHR AL,4
AND AL,0FH ;先对高字节部分转换(寄存器AL 传参)
CALL FAR PTR HEXASC ;调用子程序
MOV DL,AL
MOV AH,02H ;显示高字节部分对应的字符
INT 21H
MOV AL,BL
AND AL,0FH ;再对低字节部分转换(寄存器AL 传参)
CALL FAR PTR HEXASC ;调用子程序
MOV DL,AL
MOV AH,02H ;显示低字节部分对应的字符
INT 21H
MOV DL,20H
MOV AH,02H ;显示空格
INT 21H
INC SI
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
CODEB SEGMENT
ASSUME CS:CODEB
HEXASC PROC FAR
CMP AL,09H ;判断是不是数字
JA HEXATOF ;是字母则转到HEXATOF
ADD AL,30H ;是数字则对应到数字的ASCII 码
JMP ENDHEX
HEXATOF:ADD AL,37H ;是字母则对应到字母的ASCII 码ENDHEX: RET
HEXASC E NDP
CODEB ENDS
END START
(2)实现方法二:近过程调用
DA TA SEGMENT
BUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2H
COUNT EQU $-BUF ;定义任意长度的一段BUF
DA TA ENDS
STACK1 SEGMENT STACK
DB 100 DUP(?) ;设置足够深度的栈区
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF
MOV CX,COUNT
AGAIN: MOV AL,[SI] ;逐个取数
MOV BL,AL
SHR AL,4
AND AL,0FH ;先对高字节部分做转换
CALL HEXASC
MOV DL,AL ;显示高字节部分对应的字符
MOV AH,02H
INT 21H
MOV AL,BL
AND AL,0FH ;再对低字节部分做转换
CALL HEXASC
MOV DL,AL ;显示低字节部分对应的字符
MOV AH,02H
INT 21H
MOV DL,20H ;显示空格
MOV AH,02H
INT 21H
INC SI ;继续循环或退出
LOOP AGAIN
MOV AH,4CH
INT 21H
HEXASC PROC NEAR
CMP AL,09H
JA HEXATOF
ADD AL,30H
JMP ENDHEX
HEXATOF:ADD AL,37H
ENDHEX: RET
HEXASC ENDP
CODE ENDS
END START
实验五:DOS 中断调用实验
(1)如果从键盘上依次输入的是一个数字和一个字母,则输出“RIGHT”标记后结束程序,否则输出标记“ERROR”后转向原出错处重做。试编程实现该功能。
程序流程图略。
参考源程序:
DA TA SEGMENT
MSG DB 0AH,0DH,'RIGHT',0AH,0DH,'$'
WRN DB 0AH,0DH,'ERROR',0AH,0DH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
AGAIN: MOV AH,01H ;等待用户输入1 个字符并显示INT 21H
CMP AL,39H
JA EMSG
CMP AL,30H
JB EMSG ;判断输入是否是数字,不是则报错
MOV AH,01H ;等待用户输入1 个字符并显示
INT 21H
CMP AL,'A'
JB EMSG
CMP AL,'Z' ;判断输入是否是大写字母,不是则继续
JB EXIT ;判断是不是小写字母
CMP AL,'a'
JB EMSG
CMP AL,'z'
JB EXIT ;不是字母则报错,是字母则转到EXIT
EMSG: LEA DX,WRN
MOV AH,09H
INT 21H
JMP AGAIN
EXIT: MOV DX,OFFSET MSG
MOV AH,09H ;显示“RIGHT”并退出
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
(2)编写一程序分类统计字符个数:即接收键入的一串字符(字符个数不超过50个,该字符串用回车作为结束),并按数字、字母和其它字符分类计数,然后将结果存入digit、letter 和other 3个存储单元中,并显示结果。
程序流程图略。
参考源程序:
DA TA SEGMENT
MSG1 DB 0AH, 0DH, 'Number of digit:',20H,'$'
MSG2 DB 0AH, 0DH, 'Number of letters:', 20H,'$'
MSG3 DB 0AH, 0DH, 'Number of other characters:', 20H, '$'
BUF DB 50
DB 0
DB 50 DUP(?) ;设置足够深的栈区
DIGIT DB ?
LETTER DB ?
OTHER DB ?
DATA ENDS
STACK1 SEGMENT STACK
DB 100 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
MOV AH,0AH ;等待用户输入字符串并显示
MOV DX,OFFSET BUF
INT 21H
MOV SI, OFFSET BUF
MOV CL,[SI+1]
MOV CH,00H
MOV AL,00H
MOV AH,00H
MOV BH,00H
AGAIN: MOV BL,[SI+2]
CMP BL,30H
JB OTH ;ASCII 码小于30H 则归类为“其它”
CMP BL,3AH
MOV LETTER, BH MOV OTHER, AL
MOV DX, OFFSET MSG1 MOV AH,09H INT 21H
MOV AL, DIGIT CALL DISP
;显示“数字”有多少个
MOV DX, OFFSET MSG2 MOV AH,09H INT 21H
MOV AL, LETTER CALL DISP
;显示“字母”有多少个
MOV DX, OFFSET MSG3 MOV AH,09H INT 21H
MOV AL, OTHER CALL DISP
;显示“其它”有多少个
MOV AH,4CH INT 21H
DISP
PROC NEAR
;显示子程序
JB DIG
;ASCII 码大于等于 30H 小于 3AH 则归类为“数字” CMP BL,41H JB OTH
;ASCII 码大于等于 3AH 小于 41H 则归类为“其它” CMP BL,5BH JB LET
;ASCII 码大于等于 41H 小于 5BH 则归类为“字母” CMP BL,61H JB OTH
;ASCII 码大于等于 5BH 小于 61H 则归类为“其它” CMP BL,7BH JB LET
;ASCII 码大于等于 61H 小于 7BH 则归类为“字母”
OTH:
INC AL ;“其它”计数器加 1
DIG: JMP ENDLP INC AH
;“数字”计数器加 1
LET:
JMP ENDLP INC BH
;“字母”计数器加 1 ENDLP: INC SI
LOOP AGAIN
;继续循环
MOV DIGIT, AH
;统计各类个数
MOV AH,00H
MOV DH,0AH
DIV DH
MOV CH,AH
ADD AL, 30H
MOV DL, AL
MOV AH, 02H
INT 21H
ADD CH,30H
MOV DL, CH
MOV AH, 02H
INT 21H
RET
DISP ENDP
CODE ENDS
END START
实验六:扩展定时器/计数器接口实验
(1)计数器0工作于方式3,编写初始化程序,观察其输出OUT0信号的波形。修改计数初值,观察OUT0信号的变化情况。硬件连接方法:8254计数器0的CLK0端接规则的脉冲输入(频率自选),OUT0接示波器的正极;示波器负极接地。
程序流程图略。
参考源程序:
DATA SEGMENT
DB 100 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,20FH ;写入计数器0的控制字
MOV AL,00010110B
OUT DX,AL
MOV DX,20CH ;写入计数器0的计数初值
MOV AL,05H
OUT DX,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
(2)将计数器1和计数器0级联起来,二者均工作于方式3,编写初始化程序,观察OUT1 和OUT0信号的波形,说明二者的关系。修改计数初值,观察OUT0和OUT1输出波形的变化情况。硬件连接方法:8254计数器1的CLK1端接规则的脉冲输入(频率自选),OUT1接8254计数器0的CLK0,计数器0的输出OUT0接示波器正极;示波器负极接地。
程序流程图略。
参考源程序:
DATA SEGMENT
DB 100 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,20FH
MOV AL,00010110B ;写入计数器0的控制字
OUT DX,AL
MOV DX,20CH ;写入计数器0的计数初值
MOV AL,05H
OUT DX,AL
MOV DX,20FH
MOV AL,01010110B ;写入计数器1的控制字
OUT DX,AL
MOV DX,20DH ;写入计数器1的计数初值
MOV AL,02H
OUT DX,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
实验七:并行输入/输出接口8255A 简单编程实验
(1)利用8255A 的B 口输出控制两组发光二级管L1,L3,L5,L7 和L2,L4,L6,L8 亮灭交替变化。
分析:
按照题目要求,当8255A 的B 口输出为01010101B(55H)时,发光二极管L1,L3,L5,L7 会被点亮,当8255A 的B 口输出为10101010B (0AAH)时,发光二极管L2,L4,L6,L8 会被点亮。因此,通过延时改变8255A 的B 口输出,即可实现两组发光二极管的亮灭交替变化。由于LED 随时出于准备好的状态,因此8255A 的B 口可工作于方式0 输出,其它端口未使用,无需考虑。因此,8255A 的方式控制字为:10000000B(80H)。
硬件连接方法:
8255A 的B 口PB0~PB7 分别连接L1~L8。
程序流程图略。
参考源程序:
.486
DATA SEGMENT
PORTA DW 208H ;8255A端口A地址
PORTB DW 209H ;8255A端口B地址
PORTC DW 20AH ;8255A端口C地址
PORT_CTR DW 20BH ;8255A控制端口地址
DATA ENDS
STACK1 SEGMENT STACK
DB 100 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK1
START: MOV AX,DATA
MOV DS,AX
MOV DX, PORT_CTR MOV AL, 10000000B ;8255A初始化;控制字
OUT DX, AL
MOV DX, PORTB
MOV AL, 00H
OUT DX, AL
;8255A端口B清零,LED初始化(全灭)
LP0:MOV BL, 01010101B MOV AL, BL
OUT DX, AL
CALL DELAY
NOT AL
MOV BL, AL
MOV AH, 01H ;调用BIOS的16H功能判断键盘是否有输入
INT 16H
JNZ EXIT
JMP LP0
EXIT: MOV AH, 4CH
INT 21H
DELAY PROC NEAR ;延时子程序(可通过修改NOP指令数量改变延时时间) MOV ECX, 0FFFFFFFH
LP2: NOP
LOOPD LP2
RET
DELAY ENDP
CODE ENDS
END START
(2)利用8255A 的A 口读入8 个开关K1~K8 的状态,当只有K1 合上时,L1~L8 显示00000001B;当只有K1 和K2 合上时,L1~L8 显示00000010B;当只有K1,K2 和K3 合上时,L1~L8 显示00000011B;当只有K1,K2,K3 和K4 合上时,L1~L8 显示00000100B;… 直到所有开关合上时,L1~L8 显示00001000B,并结束程序的运行。发光二极管的状态通过8255A 的B 口进行控制。
分析:
按照题目要求,可以通过查询的方式读取8255A 的B 口状态,并根据查询的结果给A 口送出相应数据,A 口工作在方式0 的输入状态,B 口工作在方式0 输出状态,C 口不需要考虑,所以8255A 的方式控制字为:10010000B)
硬件连接方法:
(1)8255A 的A 口PA0~PA7 对应连接K1~K8;
(2)8255A 的B 口PB0~PB7 对应连接L1~L8;
源代码:
DATA SEGMENT
LIST DB 01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, 0FFH
DATA ENDS
STACK1 SEGMENT STACK
DB 100 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK1
START: MOV AX, DATA
MOV DS, AX
MOV DX, 20BH ;8255A初始化
MOV AL, 10010000B
OUT DX, AL
MOV DX, 209H ;8255A的B口清零,LED初始化(全灭)
MOV AL, 00H
OUT DX, AL
L0: MOV DX, 208H ;读8255A的A口,获得开关状态IN AL, DX
MOV BL, 00H
MOV CX, 8
MOV SI, OFFSET LIST
L1: INC BL
CMP AL, [SI]
JZ FIND
INC SI
LOOP L1
JMP L0
FIND:MOV AL, BL
MOV DX, 209H ;当前开关状态为表中所列状态之一;显示LED状态
OUT DX, AL
CMP AL, 08H
JNZ L0
MOV AH, 4CH
INT 21H CODE ENDS
END START
DATA SEGMENT
PORT0 DW 20CH;8254计数器0端口地址
PORT1 DW 20DH;8254计数器1端口地址
PORT2 DW 20EH;8254计数器2端口地址
PORT3 DW 20FH;8254控制寄存器端口地址
PORTA DW 208H;8255A的A口端口地址
PORTB DW 209H;8255A的B口端口地址
PORTC DW 20AH;8255A的C口端口地址
DATA PORT_CTR DW 20BH
ENDS
;8255A的控制寄存器端口地址实验八:并行输入/输出接口8255A 综合应用实验
(1)利用8254计数器0、计数器1和8255A的B口实现对发光二极管的定时控制,让8个发光二极管每隔1s从左到右依次点亮。(要求计数器1的时钟脉冲频率为250kHz)。
分析:根据题目要求,需要利用8254进行定时1s控制,定时到后,改变8255A的B口输出。
可
以利用中断的方式实现,8254定时到时向CPU申请中断,CPU相应中断后在中断程序中改变8255A的B口输出。由于题目要求8254的输入脉冲频率为250kHz,所以需要级联计数器1和计数器0实现1s
定时(参考程序中利用计数器1进行20ms定时,计数器0进行50次计数,计数次数到时由OUT0 向CPU申请中断)。8255A的B口控制LED,可工作在方式0输出,A口未使用,为了选通实验板上的中断输入C口的PC7须输出低电平,因此C口的高四位工作在方式0输出。综合上述要求,8254和8255A的初始化参数为:
8254计数器1的计数初值为:N=20ms/4μs=5000D;方式控制字为:01110100B (74H) 8254计数器0的计数初值为:N=50D;方式控制字为:00010100B (14H)
8255A的方式控制字:10000000B (80H);C口按位置位/复位控制字:00001110B (0EH)(使PC7复位,允许8254的OUT0中断到达系统8259的IRQ3端)
此外,利用中断方式实现题目要求的功能还需要设置系统8259芯片的中断屏蔽字和系统存储器中的中断向量表(修改中断类型号为0BH的中断向量)。
硬件连接方法:
(1)250kHz脉冲输出接8254的CLK1,OUT1接CLK0,OUT0接IRQ;
(2)8255A的B口PB0~PB7对应连接L1~L8。
程序流程图略。
参考源程序:
STACK1 SEGMENT STACK
DB 100 DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK1
START: MOV AX, DATA
MOV DS, AX
MOV ES, AX
MOV AL, 80H ; 8255初始化, B口方式0输出,C口高4位输出
MOV DX, PORT_CTR
OUT DX, AL
MOV AL, 0EH ;PC7清零,允许8254中断到IRQ3
OUT DX, AL
MOV AL, 00H ;发光二极管初始化(全灭)
MOV DX, PORTB
OUT DX, AL
MOV AX, 350BH ;保存系统原有0BH号中断的中断向量至堆栈
INT 21H
PUSH ES
PUSH BX
MOV AX, SEG INTPROC
MOV DS, AX
MOV DX, OFFSET INTPROC
MOV AX, 250BH ;将程序要求的中断向量写入
INT 21H
IN AL, 21H ;设置8259的IMR寄存器,允许IRQ3中断
AND AL, 0F7H
OUT 21H, AL
STI ;开中断,CPU可以响应外部可屏蔽中断
MOV DX, PORT3 ;8254计数器0初始化
MOV AL, 14H
OUT DX, AL
MOV DX, PORT0 ;计数器0写入计数初值50D
MOV AL, 50D
OUT DX, AL
MOV DX, PORT3 ;8254计数器1初始化
MOV AL, 74H
OUT DX, AL
MOV DX, PORT1 ;计数器1写入计数初值5000D
MOV AX, 5000D
OUT DX, AL
MOV AL, AH
OUT DX, AL
长沙理工大学C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include
printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序:a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include
printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4.设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include
实验1 C++基础 6.编写程序,输入某大写字母的ASCII码值,输出该字母的对应小写字母。 #include
{ float a,b,c; 潣瑵?请输入直角三角形的两条边长:; cin>>a>>b; c=sqrt(a*a+b*b); 潣瑵?直角三角形的斜边=< 3.输入一个学生的成绩,如高于60分,则输出“pass”;否则,输出“failed”。 #include 2.程序填空 (1)以下程序的功能是计算1~50之间能被7整除的整数之和。 #include #include 《C程序设计上机指导》答案 实验一参考答案 四.1、Hello, world ! Welcome to the C language world! Everyone has been waiting for. 2、a+b=579 579 五.1、b=2; 2、int a; 3、area 六.x=5,y=8, 改为x=5,y=8; 七.写程序 1、编写程序输出用6颗星构成的等边三角形。 main() { printf(" * \n"); printf(" * * \n"); printf("* * *\n"); } 2、编写程序求25和5两个整数的和与差。 main() { int a,b,c,d; a=10; b=20; c=35; d=(a+b+c)/3; printf("%d\n",d); } 实验二参考答案: 一.1、A , 65 B, 66 2、x=1,y=1,z=5 3、a=%d,b=%d 二.1、char a;int b; 2、a,a,a 3、a=865 a,h,m 4、u=2*sqrt(a)+b-10; “%f\n” 三.1、第1行ch1=’a’; 改为char ch1=’a’; 第2行ch2=98; 改为char ch2=98; 2、第7行w=x%y; 改为w=x/y; 3、int u=v=89; 改为int u,v; u=v=89; 4、第3行改为scanf(“%d,%d”,&x,&y); //格式字符串有错。 第5行改为printf("The average is %d:"a); //格式字符串有错。四.写程序 1、编程求111 234 ++ 的和(精确到小数点后两位)。 main( ) { float i; i=1.0/2+1.0/3+1.0/4; 实验教材实验一 1:单项选择题: A A C C C D C B B C 2:填空题: (1).bas (2).vbp,.frm (3)视图工具箱 (4)对象 (5)属性对象事件方法 (6)Windows (7)事件行为 (8)窗体模块 实验二 1:单项选择题: A D C C A B A B D C B B C B C B A B D C 2:基本运算题: (1)27 (2)3.33333333333333 (3)3 (4)0 (5)-3 (6)2 (7)ab33 (8)类型不匹配 (9)3 (10)AB3 实验三 1:单项选择题: B C B D C 2:填空题: (1)300 (2)321456 (3)Shanghai (4)6 7 6 (5)True (6)2+3=5 (7)”area=” 12.56 (8)VISUAL 实验四 1:单项选择题: C A A C A 2:填空题: (1)7 (2)3 5 (3)输入的数小于0 (4)3 (5)False (6)2010 is not leap year. 试验五 1:单项选择题: A C C A B A C C C B 2:填空题: (1)9 (2)①n ②1 (3)①Len(a) ②n\2 ③Mid(a,(n-i+1),1) ④Mid(a,(n-i+1),1) (4)①n Mod 3=1 And n Mod 5=1 And n Mod 7=1 ②While CountN<5 (5)Mid(c1,1,i) 实验六 1:单项选择题: D B D C D A C A D D 2:填空题: (1)30 (2)3 (3)①a(2) ②a(3) ③a(1) (4)①1 ②2 ③a(i)=a(6-i) (5)①i+j ②0 ③a(i,j) (6)①Print ②k ③a(k,j)=a(j,k) ④a(k,j); 实验七 1:单项选择题: A B B A C B 2:填空题: (1)15 (2)①Preserve a(n+1) ②a(i+1)=a(i) ③Exit For ④a(i+1)=m⑤0 to n+1 (或LBound(a) to UBound(a)) (3)d,c,b,a 实验八 1:单项选择题: C A D B D C A C B 2:填空题: (1)a=9 b=4 (2) 36 25 16 9 4 1 (3)①a ②UBound(b) ③ 24c02读写程序大全 2C总线的应用(24C02子程序) // 对24C02的读、写 // extern void DelayMs(unsigned int); // extern void Read24c02(unsigned char *RamAddress,unsigned char Ro mAddress,unsigned char bytes); // extern void Write24c02(unsigned char *RamAddress,unsigned char Ro mAddress,unsigned char bytes); /***************************************************************************/ #define WriteDeviceAddress 0xa0 #define ReadDviceAddress 0xa1 #include C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。 3算法描述流程图 4源程序 #include for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。 实验一:简单程序设计实验 (1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。 程序流程图略。 参考源程序: DATA SEGMENT NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA ;数据段寄存器初始化 MOV DS,AX MOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH ;正常返回DOS 系统 INT 21H CODE ENDS END START (2)编写一个拆字程序。要求将存放在 ARY 单元的 2 位十六进制数 X 1X 2 拆为 X 1 和 X 2 两 部分,并以 0X 1 和 0X 2 的形式分别存入 ARY+1 和 ARY+2 单元中。 程序流程图略。 参考源程序: DATA SEGMENT ARY DB 2AH,?,? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET ARY ;取ARY 的偏移地址 MOV AL,[SI] ;取16进制数至AL MOV BL,AL AND AL,0F0H ;取16进制数的高四位,即X1 SHR AL,4 MOV [SI+1],AL ;存0X1 MOV AL,BL AND AL,0FH ;取16进制数的低四位,即X2 MOV [SI+2],AL ;存0X2 MOV AH,4CH INT 21H CODE ENDS END START 1、完成实验A(P.259)中的第1、 2、 3、5题。 2、参照第2章例2.6,建立一个类似记事本的应用程序,提供:(1) 剪切、复制和粘贴的编辑操作;(2) 字体大小的格式设置;此外,再对记事本的应用程序的功能进行一点扩允。 1.完成在实验B 顺序结构程序。(P.262)中的第1、2 、4 、5.、6题 2.完成实验C 选择结构(P.266)中的第1、2、4、5题 3.用上面实验B的第二题和实验C的第二题完成下面的实验报告。 1、完成实验D循环结构(P.268)中的第1、3、4、6题,其中第1题利用单循环结构显示如图D.1(P.268)所示的界面,而后将图形改为倒三角形。 2、选做实验E数组(P.271)中的第1、2、3题中的任意二题 3、以实验D中的第4题和实验E中的做完的某一题完成下面的实验报告。 A.1 Private Sub Command1_Click() Label3 = Text1 End Sub A.2 Private Sub Form_Load() Timer1.Interval = 0 End Sub Private Sub Command1_Click() '自动 Timer1.Interval = 200 End Sub Private Sub Command2_Click() '手动 Timer1.Interval = 0 Call MyMove End Sub Private Sub Timer1_Timer() Call MyMove End Sub Sub MyMove() Label1.Move Label1.Left - 50 If Label1.Left < 0 Then Label1.Left = Form1.Width End Sub A.3 Private Sub Form_Click() Text1 = Val(Text1) + 1 End Sub Private Sub Form_Load() Text1 = 0 End Sub A.5 AT24C02串行E2PROM的读写 I2C总线是一种用于IC器件之间连接的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。 1.I2C总线的基本结构采用I2C总线标准的单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的既简单又灵活的扩展与控制。I2C总线接口电路结构如图1所示。 2.双向传输的接口特性传统的单片机串行接口的发送和接收一般都各用一条线,如MCS51系列的TXD和RXD,而I2C总线则根据器件的功能通过软件程序使其可工作于发送或接收方式。当某个器件向总线上发送信息时,它就是发送器(也叫主器件),而当其从总线上接收信息时,又成为接收器(也叫从器件)。主器件用于启动总线上传送数据并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。I2C总线的控制完全由挂接在总线上的主器件送出的地址和数据决定。在总线上,既没有中心机,也没有优先机。 总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于此时数据传送的方向。SDA和SCL均为双向I/O线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路,以具有线“与”功能。I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。 3.I2C总线上的时钟信号在I2C总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一直保持低电平,使SCL线上的所有器件开始低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SCL线的状态,于是这些器件将进入高电平等待的状态。 当所有器件的时钟信号都上跳为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定。 4.数据的传送在数据传送过程中,必须确认数据传送的开始和结束。在I2C总线技术规范中,开始和结束信号(也称启动和停止信号)的定义如图2所示。当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平定义为“开始”信号;当SCL线为高电平时,SDA线发生低电平到高电平的跳变为“结束”信号。开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲的。 《实验指导》课后练习题参考答案实验1: 1.主函数 2-4:DDC 5.stdio.h 6-9:CCCC 实验2: 1.double 2-4:ABB 5.2 6-12:CDDDADC 13.! 14.8 15-17:ACC 18.G 19-20:CA 21.5 4 22.x=6c 23-25:DCA 26.0x 27.2.000000 28-29:AB 30.a=3 31.D 32.3.15 33.B 34.double 实验3: 1-3:CCD 4.B 5.2,0 6-8:CAC 9. (1)pass, (2)中 及格 不及格 10-12:ADD 13.2 14.B 15.10 16.6 17.x>=1 && x<=sqrt(10) 实验4: 1.B 2.1 3.A 4.3/5,5/8 5.30 实验5: 1.D 2.(1)9 (2)1 3-5:CDB 6.(1)10 (2)7 7.C 8.(1)x=16 (2)y=8 9.return 实验6: 1-5:CCADA 6.10,20 7.13 11 12 8.7 9.2 10.B 11.(1)3 (2) 1 12-13:CB 14.-31 15.221 16.main函数 17.22 18.(1)return (2)void 实验7: 1.C 2.auto 3.9 4.(1) 4 (2) 0 5.10 6.(1)5 (2) 7 (3) 8 7.C 8.110 9-12:DDBC 13.(1) 1 (2) 3 15.6 720 16.auto 17.48 18.(1)1 (2)2 19.D 20.D 21.5,25 22.6 实验8: 1-2. DD 3. 16 4. (1)0 2 3 (2)2 3 5 (3)7 11 13 5. (1)i<9 (2)j<9-i (3)a[j]=a[j+1] (4)a[j+1]=temp 实验9: 1. D 2. (1)-1 (2)2 3. (1)1 (2)a[i-1][j-1]+a[i-1][j] (3)j<=i 4. (1)1 3 4 5 6 7 (2)3 4 5 6 (3)End of main()! 实验10: 1. 0或NULL 2-5. CACA 6. (1)10 (2)15 (3)19 7. (1)i 实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2(1) n=input('请输入成绩'); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2)n=input('请输入成绩'); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3)try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6]; a=n(1); for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7(1) f=[]; for n=1:40 ATMEGA16读写iic(24c02) C语言程序测试通过 #include while(1) {/* I2C_Write('n',0x00); I2C_Write('c',0x01); I2C_Write('e',0x02); I2C_Write('p',0x03); I2C_Write('u',0x04); */ i=I2C_Read(0x00); //LCD_write_char(0,0,i); USART_TXD(i); i=I2C_Read(0x01); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x02); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x03); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x04); //LCD_write_data(i); USART_TXD(i); } } /*上面上主函数部分*/ #include 实验一熟悉C程序运行环境 班级学号姓名成绩 一、实验目的 1. 熟悉C语言Visual C++调试环境。 2. 掌握C程序的编辑、调试及运行。 二、实验内容 项目1. 调试并运行下面程序,并写出运行结果: #include <> int main() { printf(“Good morning!\n”); printf(“Hello,world!\n”); return 0; } 运行结果(注意,按照屏幕输出格式写): 项目2. 调试并运行下面程序,并写出运行结果: #include <> int main() { int a , b , sum; /*定义变量*/ a=23; b=56; /*为变量赋值*/ sum=a+b; /*计算两个变量的和*/ printf(“sum is %d\n”,sum); /*输出计算结果*/ return 0; } 运行结果: 项目3. 调试并运行下面程序,并写出运行结果: #include <> int max(int,int); int main() { int a , b , c; /*定义变量*/ a=23; b=56; /*为变量赋值*/ c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/ return 0; } int max(int x,int y) /*定义max函数,函数值为整型*/ { int z; /*定义变量*/ if(x>y) z=x; else z=y; return(z); /*将z的值返回*/ } 运行结果: 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。 程序代码 运行结果: 广东金融学院实验报告 课程名称:C++程序设计 实验编号 实验7数组与指针练习系别参考答案及实验名称 姓名学号班级 实验地点新电403实验日期2011-11-24实验时数4 指导教师曲政同组其他成员无成绩 一、实验目的及要求 1.学习C/C++数组和指针的概念和使用方法。 2.练习C++/CLI托管数组的创建方法和元素访问方法。 二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等) 硬件设备:联网的个人计算机 操作系统:Windows XP 编译系统:Visual Studio2005 三、实验内容及步骤(包含简要的实验步骤流程) 1.内容和步骤 ⑴仔细阅读本课件的知识点和例题,努力理解其中的文字阐述和源代码,必要时可将源代码拷入Visual Studio2005生成的C++/CLR框架编译和运行,将运行结果与源代码对照,加深对C/C++数组和指针的理解。 ⑵在理解本课件内容的基础上,编写C/C++程序实现下列文字描述: a.声明一个int型变量x,并赋初值3; b.打印x的值; c.打印x的地址; d.声明一个指向int的指针p,并让其指向变量x; e.打印p所指变量的值 f.打印p的值; g.声明一个有10个元素的一维本地整型数组A,并为其赋初值0~9; h.在一个循环中打印A的所有元素的值; i.打印A的值; j.打印A的第一个元素的地址; k.声明一个指向int的指针q,并让其指向A的第一个元素; l.在一个循环中通过q后跟下标,打印出A的所有元素的值; m.在一个循环中通过q加上循环变量和取值运算,打印出A的所有元素的值; n.在一个循环中通过q的增量和取值运算,打印出A的所有元素的值; o.在一个循环中通过q的负增量,反序打印出A的所有元素的值; p.声明一个int型指针r,在堆中创建一个int型变量,为该变量赋初值3,并将该变量的地址赋给该指针,打印出该变量的值,然后删除该变量。 q.声明一个本地类Point(可以用包含2个int型变量和一个有参数构造函数的结构体表示)的指针s,在堆中创建一个Point类的对象,调用构造函数为该对象的两个数据成员赋初值3和4,并将该对象的地址赋给该指针,打印两个数据成员的值,然后删除该对象。 r.声明一个int型指针t,在堆中创建一个3个元素的int类型数组并将该数组的首地址赋给该指针,为三个数组元素分别赋值3、4、5,在一个循环中打印出所有元素的值,然后删除该数组。 s.声明一个本地类Point类的指针u,在堆中创建一个3个元素的Point类的对象数组(需在Point 中添加无参数构造函数)并将数组的首地址赋给该指针,为三个数组元素分别赋值(1,2)、(3,4)、(5,6),在一个循环中打印该数组所有元素分量的值,然后删除该数组。 t.用基本语法声明并创建一个10个元素的一维托管整型数组B,并在一个循环中为元素赋值0~9; u.在另一个循环中打印B所有元素的值。 v.用初值表方式声明并创建一个10个元素的一维托管整型数组C,并为其元素赋初值10~19; w.在一个循环中打印C所有元素的值。 x.用数组C为数组B赋值。 y.在一个循环中打印B和C所有元素的值。 2.提示和要求 ⑴首先将上面的文字描述拷入Visual Studio2005生成的C++/CLR框架,在每条文字描述之前加“//”将其变为注释,并在其下留一个空行准备编写对应的程序。 ⑵对应于逐条文字描述,在其下编写程序(可能是一个或一组语句),每编写一条文字描述对应的程序,就编译(运行)一次,以保证语法和算法的正确性。 ⑶当全部文字描述所对应的程序编写完成,并编译、运行正确,将文字描述和源代码拷入实验报告。 ⑷对C/C++的数组和指针做简要总结。 4.2练习题 一、选择题 1.D 2.B 3.A 4.B和D 5.C 6.A 7.B 二、填空题 1.//或/* */ 2.主或main 3.函数首部和函数体4.编译和连接 5.分号 5.2练习题 一、选择题 1.A 2.D 3.B 4.B 5.C 6.C 7.D 8.A 9.B 10.B 11.D 12.B 13.A或B 14.C 15.B 17.D 18.D 19.C 20.D 21.B 22.A 23.D 24.C 25.C 26.B 27.C 28.D 29.A 30.B 二、填空题 1.102,10 2.#define 宏名字符串 3.1 4.n=1 5.-4 6.a=1,b= ,c=2 7.c=A 8.n1=%d\nn2=%d 9.a+b>c&&a+c>b&&b+c>a 10.ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’11.7 12.0 13.8,4 6.2练习题 一、选择题 1.A 2.C 3.D 4.C 5.A 6.B 8.D 9.B 10.C 11.A 12.A 13.C 14.B 15.正确答案为: 二、填空题 1.10 2.y=1 x%i==0 3.屏幕中间输出一个由星号组成的菱形4.1 5.13 6.(cx=getchar())!=-1 front=cx; 7.m%n 8.4 9.*p px=&x py=&y 三、读程序,写结果 1.-1 2.3,1,-1, 3.a=16,y=60 4.x=12,y=4 5.59 7.2练习题 一、选择题 1.B 2.C 3.C 4.A 5.D 6.C 7.D /************************************************** 24C02.C 功能描述: PC端发送3个数据n0,n1,n2. n0=0,写,将n1写入n2地址中 n0=1,读,读出n1地址中的数据,n2不起作用,但必须有 收到一个字节后,将其地址值显示在数码管第1、2位上,数值显示在第5、6位上 读出一个字节后,将其地址值显示在数码管第1、2位上,读出的值显示在第5、6位上;**************************************************/ #define uchar unsigned char #define uint unsigned int #define Slaw0x0a; //写命令字 #define Slar 0xa1; //读命令字 #include "reg52.h" #include "intrins.h" sbit Scl=P2^1; //串行时钟 sbit Sda=P2^0; //串行数据 bit Rec; //接收到数据的标志 uchar RecBuf[3]; //接收缓冲区 #define Hidden 0x10; //消隐字符在字形码表中的位置 sbit we=P2^7; sbit du=P2^6; uchar code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; uchar code disptab[]={0x3f,0x6,0x5b,0x4f,0x66, 0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71,0x0}; uchar DispBuf[6]; uchar code TH0V al=(65535-3000)/256; uchar code TL0V al=(65535-3000)%256; uchar code th1=0xfd; uchar code tl1=0xfd; //以下是中断程序,用于显示 void timer0() interrupt 1 { static uchar count; uchar tmp; P0|=0x3f; we=1; tmp=dispbit[count]; P0&=tmp; we=0; du=1; 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. 《C语言程序设计》 实验报告 2013~2014学年第二学期 班级 姓名 学号 指导教师 实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include 2. (1) 改正后的源程序: #include C语言程序设计实验与习题答案
c程序设计实验参考答案
vb程序设计实验教程习题答案
24c02读写程序大全
C语言程序设计实验报告(数组)
《计算机硬件技术基础》实验答案程序
VB程序设计教程(第3版)课后实验答案最新版2
AT24C02串行E2PROM的读写
C语言程序设计实验指导(课后习题)参考答案
MATLAB程序设计教程课后答案
ATMEGA16读写iic(TWI)(24c02) C语言程序
C语言程序设计实验实验指导书及答案
C++程序设计实验七_参考答案
c语言程序设计实践教程答案完整版
at24c02应用程序
C语言程序设计实验报告(实验1-12)