当前位置:文档之家› 《计算机硬件技术基础》实验答案程序

《计算机硬件技术基础》实验答案程序

《计算机硬件技术基础》实验答案程序
《计算机硬件技术基础》实验答案程序

实验一:简单程序设计实验

(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 位十六进制数X1X2 拆为X1 和X2 两部分,并以0X1 和0X2 的形式分别存入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语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include main() { printf("Thedressislong\n"); printf("Theshoesarebig\n"); printf("Thetrousersareblack\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

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 main() { inta,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x);

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 main() { inta,b,c; a=0; b=-10; c=(a>b)?b:a; printf("c=%d\n",c); }

C++程序设计实践教程思考题答案

实验1 C++基础 6.编写程序,输入某大写字母的ASCII码值,输出该字母的对应小写字母。 #include using namespace std; int main() { int i; cin>>i; if(i>=65 && 1<=90 ) cout< #include using namespace std; int main()

{ float a,b,c; 潣瑵?请输入直角三角形的两条边长:; cin>>a>>b; c=sqrt(a*a+b*b); 潣瑵?直角三角形的斜边=< using namespace std; int main() { char c; 1 潣瑵?请输入一个字符:; cin>>c; if(c>='A'&& c<='Z') c+='a'-'A'; cout<

3.输入一个学生的成绩,如高于60分,则输出“pass”;否则,输出“failed”。 #include using namespace std; int main() { float grade; 潣瑵?请输入成绩:; cin>>grade; if(grade>=60) cout<

C语言程序设计实验与习题答案

2.程序填空 (1)以下程序的功能是计算1~50之间能被7整除的整数之和。 #include void main() {int i,sum= 0; for(i=1;50;i++) if(i%7==0) sum+=i; printf("sum=%d\n",sum); } (2) 下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。 #include void main() {char cx; char front=’’; while ((cx=getchar())!=’\n’) {if (cx!=’’) putchar(cx); if (cx= =’’) if (front!=’’) putchar(cx); front=cx; } } 3.程序改错 (1)下列程序的功能是求1+3+5+…99的和。

#include void main( ) { int s,i; ★//int s=0,i; i=1; while(i<=99)s=s+i;★//{s=s+i;i++;} printf("1+3+5+…99的和是:%d\n",s); } (2)下面程序的功能是输入一个正整数,判断是否是素数,若 为素数输出1,否则输出0。 #include void main() { int i,x,y=0; ★//y=1 scanf("%d",&x); for(i=2;i<=x/2&&y;i++) if ((x%i)!=0) y=0; ★//x%i==0 printf("%d\n",y); } 4.设计性实验 (1)题 /* 方法(1)精度控制*/ #include

c程序设计实验参考答案

《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;

vb程序设计实验教程习题答案

实验教材实验一 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读写程序大全

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 #include #include /***************************************************************************/ sbit SCL=P2^7; sbit SDA=P2^6; bit DOG; /***************************************************************************/ void DelayMs(unsigned int number) { unsigned char temp; for(;number!=0;number--,DOG=!DOG) { for(temp=112;temp!=0;temp--) { } } } /***************************************************************************/ void Start() { SDA=1; SCL=1; SDA=0; SCL=0; } /***************************************************************************/ void Stop() { SCL=0; SDA=0;

C语言程序设计实验报告(数组)

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 #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

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

VB程序设计教程(第3版)课后实验答案最新版2

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的读写

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线发生低电平到高电平的跳变为“结束”信号。开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲的。

C语言程序设计实验指导(课后习题)参考答案

《实验指导》课后练习题参考答案实验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)ia[j] (3)”%d”,p+i (4)”%d”, *(p+i) 8. (1)2 6 (2)2 2 (3)4 6 实验11: 1. A 2. C 3. 7 4. (1)strlen(s) (2)s[i]>=’a’ && s[i]<=’z’(3)s[i]+32 (4)’\0’(5)s2[j]!=s2[n2-j-1] (6)j

MATLAB程序设计教程课后答案

实验指导 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(TWI)(24c02) C语言程序

ATMEGA16读写iic(24c02) C语言程序测试通过 #include #include "I2C.h" #include "1602.h" #include "delay.h" /*通过AVR往I IC写数据,并通过串口把数据读出显示出来*/ //=============================================================== void UART_init(void) //UART初始化 { DDRD = 0x02; PORTD = 0x00; UCSRA = 0x02; /*无倍速*/ UCSRB = 0x18; /*允许接收和发送*/ UC SRC = 0x06; /*8位数据,1位停止位,无校验*/ UBRRH = 0x00; UBRRL = 12; /*9600*/ } //=============================================================== void USART_TXD(float data) //发送采用查询方式 { while( !(UCSRA & BIT(UDRE)) ); UDR=data; while( !(UCSRA & BIT(TXC )) ); UCSRA|=BIT(TXC); } void main(void) { unsigned char i; //LCD_init(); uart_init();//TART初始化 SEI(); //全局中断使能

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 #include "delay.h" //I2C 状态定义 //MT 主方式传输 MR 主方式接受#define START 0x08 #define RE_START 0x10 #define MT_SLA_ACK 0x18 #define MT_SLA_NOACK 0x20 #define MT_DATA_ACK 0x28 #define MT_DATA_NOACK 0x30 #define MR_SLA_ACK 0x40 #define MR_SLA_NOACK 0x48 #define MR_DATA_ACK 0x50 #define MR_DATA_NOACK 0x58

C语言程序设计实验实验指导书及答案

实验一熟悉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++程序设计实验七_参考答案

广东金融学院实验报告 课程名称: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++的数组和指针做简要总结。

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

at24c02应用程序

/************************************************** 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;

C语言程序设计实验报告(实验1-12)

文档从网络中收集,已重新整理排版.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 int main( ) { printf("This is a C program.\n"); return 0; } 2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序 无语法错误,然后运行程序,并观察分析运行结果。 #include int main( ) { int a,b,sum a=3; b=4; sun=a+b; print(“%d+%d=%d\n”,a,b,sum); return 0; } 四、实验结果: 1. 运行结果(或截图): This is a C program. Press any key to continue

2. (1) 改正后的源程序: #include int main( ) { int a,b,sum; a=3; b=4; sum=a+b; printf("%d+%d=%d\n",a,b,sum); return 0; } (2) 运行结果(或截图): 3+4=7 五、思考题: 1. 一个C程序上机的步骤有哪些? 答:上级输入与编辑源程序—对原程序进行编译–与库函数链接–运行可执行的目标程序。 2. 组成C程序的基本单位是函数,一个函数包括哪几个部分? 答:一个函数包括两部分:分别为函数头或函数首部和函数体。 成绩指导教师签名 实验二 实验项目名称:数据类型、运算符和表达式 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.掌握整型、实型与字符型这三种基本类型的概念; 2.掌握常量及变量的使用方法; 3. 掌握基本算术运算符及其表达式的使用方法; 4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。 二、预习内容:

相关主题
文本预览
相关文档 最新文档