搜档网
当前位置:搜档网 › 实验一简单程序设计实验

实验一简单程序设计实验

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

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

(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程序设计实验三实验报告

实验报告 工学院土木工程专业09级2011至2012学年度第1学期学号:xxxxxx姓名:xxxxxx 2011 年10月08日第3~4节综合楼325教室 实验目的:

a的字节数为sizeof (a)或sizeof (int ),用printf 函数语句输出各类型变 量的长度(字节数)。 ①输入程序如下 in clude int mai n() {int a,b,i,j,k,r,s,t,u,v,w,x,y,z; float d,e; char c1,c2; double f,g; long m, n; un sig ned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.78; m=50000;n=-60000; p=32768;q=40000; i=sizeof(a);j=sizeof(b); k=sizeof(d);r=sizeof(e); s=sizeof(c1);t=sizeof(c2); u=sizeof(f);v=sizeof(g); w=sizeof(m);x=sizeof( n); y=sizeof(p);z=sizeof(q); prin tf("a=%d,b=%d\nd=%d,e=%d\nc 1= %d,c2=%d\n",i,j,k,r,s,t); prin tf("f=%d,g=%d\nm=%d, n=%d\nmp=%d,q=%d\n",u,v,w,x,y,z); } 结 果如 下: (2)设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体 积。编程序,用scanf输入数据,输出计算结果。输出时要有文字说明,去小数点后两位数字。 ①编写程序如下: #i nclude int mai n() {float h,r,l,s,sq,vq,vz; float pi=3.141526; prin tf("Please in put r,h:"); sca nf("%f,%f",&r,&h); l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=3.0/4.0*pi*r*r*r; vz=pi*r*r*h; prin tf("The circumfere nce:l=%6.2f\n",l); prin tf("The area of thee circle:s=%6.2f\n ",s); prin tf("The superficial area of the ball:sq=%6.2f\n ",sq); prin tf("The volume of the ball:v=%6.2f\n",vq); prin tf("The volume of the cyli nder:vz=%6.2f\n ",vz); return 0; L

实验三综合程序设计方案(一)

实验三综合程序设计(一) 一、实验目的 1熟练掌握子程序的结构。 2?掌握子程序设计的思想、方法及上机调试过程。 3 ?熟练掌握系统功能调用的作用。 4?掌握系统功能调用的思想、方法。 二、实验准备知识 1. 8086/8088汇编语言指令及伪指令的用法 2?子程序设计的思想和方法 (1)子程序是功能相对独立的程序段,它可以实现源程序的模块化,简化源 程序结构,提高编程效率 (2)子程序定义:禾I」用过程伪指令PROC和ENDP,格式如下: 过程名PROC [NEAR|FAR] ……;过程体 过程名ENDP 其中:可选的参数指定过程的调用属性。没有指定过程属性,则采用默认属性NEAR。 NEAR属性:段内近调用,子程序只能被相同代码段的其他程序调用 FAR属性:段间远调用,子程序可以被相同或不同代码段的程序调用 (3)主程序(调用程序)调用子程序(被调用程序):利用CALL指令 (4)子程序返回主程序:利用RET指令 (5)保护现场:子程序开始处应该保护子程序中使用的寄存器(通常利用堆栈),子程序返回前相应进行恢复。 (6)子程序中对堆栈的压入和弹出操作通常成对使用,以保持堆栈的平衡。 (7)子程序允许嵌套和递归

(8)处理好子程序与主程序之间的参数传递问题:利用寄存器、内存缓冲区 及堆栈。 3. DOS和BIOS中断调用是机器及操作系统提供的中断调用功能 4?系统功能调用的步骤: ⑴在AH寄存器中设置系统功能调用号 ⑵ 在指定寄存器中设置入口参数 ⑶ 用中断调用指令(INT i8 )执行功能调用 ⑷ 根据出口参数分析功能调用执行情况 5.DOS利用21H号中断提供给用户近百个系统功能,主要包括设备管理、 目录管理和文件管理三个方面的功能版权文档,请勿用做商业用途 (1 )输入一个字符,01H号功能调用 (2)输出一个字符,02H号功能调用 (3)输入一个字符串,0AH号功能调用 (4)输出一个字符串,09H号功能调用 注意它们的入口参数及出口参数 6.BIOS也以中断服务程序的形式,向程序员提供系统的基本输入输出程序 BIOS功能更加基本,且与操作系统无关,当DOS没有启动或不允许使用DOS 功能调用时,可以使用BIOS功能调用版权文档,请勿用做商业用途 (1)键盘I/O中断调用——INT 16H (2)显示器输入中断调用——INT 10H 注意它们的入口参数及出口参数 三、实验性质 本实验为综合性实验。 四、实验学时 本实验学时为2学时。

简单的C语言程序设计实验报告完美版

本科实验报告专用纸 课程名称C语言程序设计成绩评定 实验项目名称简单的C语言程序设计 实验项目编号实验项目类型验证型 实验地点指导教师 学生姓名学号 学院专业 一、实验目的 1.掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 2.学会正确使用逻辑运算符和逻辑表达式。 3.熟练掌握if语句和switch语句。 4.结合程序掌握一些简单的算法。 二、实验内容和实验要求 实验内容1::试编写程序,用getchar函数读入两个字符给c1,c2,然后分别用putchar函数和printf函数 输出这个字符。 实验要求:(1) 输入事先已编好的程序,并运行该程序。分析运行结果是否正确。 (2)比较用Printf函数和putchar函数输出字符的特点。 实验内容2:给出一百分制成绩,要求输出成绩等 级’A’,’B’,’C’,’D,’E’。90分以上为’A’,80-89分 为’B’,70-79分为’C’,60-69分为’D’,60分以下 为’E’。 第1页(共11页)

实验要求:(1)事先编写好程序,要求分别用if语句和switch 语句来实现。 (2)输入程序,并运行该程序。分析运行结果是 否正确。 (3)再运行一次程序,输入分数为负值(如-70), 这显然是输入是出错,不应该给出等级,修改程序, 使之能正确处理任何数据,当输入数据大于100和 小于0时,通知用户“输入数据错”,程序结束。 三、主要仪器设备 仪器:计算机 实验环境:windowsXP+visual c++6.0 四、实验过程 实验内容1: 原理:1)用getchar函数输入两个字符赋给c1,c2; 2) 用putchar函数输出这两个字符; 3) 用printf函数输 出这两个字符。 (1)源程序

实验一简单程序设计实验

实验一:简单程序设计实验 (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

实验3简单的程序设计

实验3简单的程序设计 实验目的: 1.掌握表达式、赋值语句的正确书写规则。 2.掌握VB变量的定义和使用,表达式和常用函数的使用。 3.掌握InputBox与MsgBox的使用。 实验3.1函数考察 实验任务: 考察下列函数的值。 Round(-3.5) Round(3.5) Chr(66) Asc ("c") Asc(Chr(99)) Chr(Asc("K")) Ucase$("abcdefg") Lcase(“ABC”) Str(123.45) Val(“123AB”) Len(“123程序设计ABC”) LenB(“123程序设计ABC”) Ltrim(“ ABC”) String(3, “ABC”) Instr(“EFABCDEFG”, “ef”) Instr(2,“EFABCDEFG”, “ef”,1) Date() Now() Time() 实验步骤: 先自己分析以上函数的功能和可能的结果,然后在立即窗口用Print方法求出相应函数的值,对照比较自己的判断。 22

实验3.2表达式考察 实验任务: 考察下列表达式的值。 Dateadd(“m”,1,#1/30/2000#) Datediff(“y”,#12/03/1999#,#1/03/2000#) ‘计算时间间隔多少日 123 + Mid(“123456”,3,2) 123 & Mid(“123456”,3,2) Ucase(Mid(“abcdefgh”,3,4)) 16 / 4 – 2 ^ 5 * 8 / 4 MOD 5 \ 2 实验步骤: 先自己分析表达式的功能和可能的结果,然后在立即窗口用Print方法求出相应表达式的值,对照比较自己的判断。 实验3.3简单打印图形 实验任务: 使用Print方法、Tab函数和String函数设计一个过程,显示如图3-1所示的图形,并将结果保存到文件中。 图3-1 实验3.2运行界面 参考代码如下: Private Sub Form_Load() Print Tab(15); String(1, "1") Print Tab(14); String(3, "2") Print Tab(13); String(5, "3") Print Tab(12); String(7, "4") End Sub 操作提示: 应先将Form窗体的AutoRedraw属性值设为True。

实验二顺序程序设计

实验二简单C程序设计—顺序结构 一、实验目的 1.掌握C语言中使用最多的一种语句――赋值语句的使用方法。 2.掌握各种类型数据的输入输出方法,能正确使用各种格式输出符。 二、实验内容和步骤 1.掌握各种格式输出符的使用方法。 #include int main() {int a,b; float d,e; char c1,c2; double f,g; long n,m; unsigned p,q; a=61;b=62; c1='a';c2='b'; d=3.56; e=-6.87; f=3156.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q); return 0; } (1)运行此程序并分析运行结果。 a,b都是以整型输出。C1c2以字符型输出。d,e以浮点型输出,数据长度都为6位,所以前面都有空格占位,加上小数点,数字或负号一共6位。 f以浮点型输出,数据长度为15位,小数位有6位,故前面有四个空格;g以浮点型输出,数据长度为15位,小数位有12位,故前面有一个空格;m,n都以长整型输出;p,q都以无字符型输出。 (2)在此基础上,修改程序的第9-14行: a=61;b=62; c1=a;c2=b; f=3156,890121;g=0.123456789; d=f;e=g; p=a=m=50000;q=b=n=-60000; 运行程序,分析运行结果。 把a,b的值依次赋给c1,c2,c1,c2的数据类型为字符型,根Ascll代码可知61对应=,62对应>;将f,g的值赋给d,e,d,e的数据类型为浮点型,且数据长度为6位,小数位有2位,故得出此结果;按照运算符的结合顺序可知程序把50000依次赋给了m,p,a,把-60000

程序设计综合实验报告册

西南交通大学程序设计综合实验 实验地点: 实验学期: 学生班级: 学生学号: 学生姓名: 任课教师:龚勋 信息科学与技术学院 2012年4月

实验一:ATM机用户操作界面、业务逻辑编写 ●实验目的及内容 1、根据ATM的工作流程编写用户界面,掌握文本用户菜单的编写方法; 2、根据ATM的工作流程编写业务罗杰,掌握搭建一个完整的应用系统的方法及软件编程思想。 ●实验要求 1、除提示用户输入的数字外,界面上不能响应、出现任何其他用户输入; 2、每个菜单界面独立显示,不要出现多组菜单重叠显示的现象; 3、每个业务逻辑可以多次执行,直到用户选择退出业务。 ●实验步骤及核心代码 void main() { int bExit=0; char in; //控制语言的选择 while(!bExit) { MainMenu(); in=getch(); system("cls"); switch(in) { .....语言选择} } } void MainMenu() {......} void LanguageMenu(int t) {

int cExit=0; char in; while(!cExit) { if(t==1) { ...... //显示中文功能选择菜单 in=getch(); system("cls"); switch(in) { 中文功能函数的选择} } else { 同上,只需将中文函数改为英文函数} } } //中文的查询函数 void Query1() { printf("======================\n") printf(“此账户有%.2f元\n",sum); //对sum已初始化system("pause"); system("cls"); } //中文的存钱函数 void Deposit1(float *p) { float x; printf("================================\n"); printf(" 输入您要存的数目:"); scanf("%f",&x); *p+=x; system("pause"); system("cls"); } //中文的取钱函数 void WithDraw1(float *p) { float y; int a=1; printf("====================================\n"); printf("输入您要取的数目: "); while(a) { scanf("%f",&y); if(y>sum)

实验2顺序结构程序设计

《C语言程序设计》实验报告 ---------------------------------------------------------------------------------------------- 实验2顺序结构程序设计 一、实验目的 (1)掌握C语言中赋值语句的使用方法。 (2)掌握各种类型数据的输入与输出方法,能正确使用各种格式转换符。(3)掌握C语言的顺序结构程序设计。 二、实验内容与步骤 1.输入程序,观察程序运行结果 (1)输入并运行下面的程序,掌握用scanf()函数输入多个整型数据时,格式说明中无分隔符的正确使用。 /*c2-1.c*/ #include int main() { int i,j; printf("Enter i,j\n"); scanf("%d%d",&i,&j); printf("i=%d,j=%d\n",i,j); return 0; } 总结与反思: 1.printf("Enter i,j\n");语句是对下面的输入语句起提示作用;2. 本题在scanf()语句中,输入两个整数之间可用空格、Tab或回车键分隔,但用其他的分隔符不能得到正确的值。 (2)输入并运行下面的程序,掌握用scanf()函数输入多个整型数据时,格式说明中逗号分隔符的正确使用。 /*c2-2.c*/ #include int main() { int i,j; printf("Enter i,j\n");

scanf("%d,%d",&i,&j); printf("i=%d,j=%d\n",i,j); return 0; } 总结与反思:本题在scanf()语句中,输入两个整数之间必须用逗号分割,用 其他的分隔符时第一个变量能得到正确的值,第二个变量不能得到正确的值。(3)输入并运行下面的程序,掌握格式scanf()函数中普通字符按原样输入的使用方法。 /*c2-3.c*/ #include int main() { float i,j; scanf("i=%f,j=%f",&i,&j); printf("i=%.3f,j=%.3f\n",i,j); return 0; } 总结与反思:用scanf()函数输入内容,必须严格按照格式说明部分进行键入。 (4)输入并运行下面的程序,如果scanf()函数中格式与变量类型的对应关系错误,将不能得到正确的结果。 /*c2-4.c*/ #include int main() { int i,j; scanf("%f,%f",&i,&j); printf("i=%d,j=%d\n",i,j); return 0; } 总结与反思:1.与int(基本整型)对应的应是%d,与float(浮点型)对应的是%f。 2.scanf()函数格式说明应与定义的变量类型一致! (5)输入一个大写字母A,将它转换为小写字母a,输出小写字母a及对应的ASCII码值97,要求输出格式为“j=a,j=97”,完善下面程序中的输出语句。 /*c2-5.c*/ #include int main() { int j;char i; scanf("%c",&i); j=i+32; printf("j=%c,j=%d\n",j,j);

实验二+顺序结构程序设计

实验二顺序结构程序设计 一、实验学时 2学时 二、实验目的 (一)掌握简单结构的C语言程序设计; (二)掌握输入、输出函数的正确使用。 三、预习要求 熟悉并掌握scanf()函数,printf()函数,getchar()函数和putchar()函数的语法格式,比较它们在使用时的异同。 四、实验内容 (一)输入并运行下面的程序,掌握scanf()函数输入多个整型数据时,格式说明中无分隔符的正确使用。 main ( ) { int i,j; scanf("%d%d",&i,&j); printf("i=%d,j=%d\n",i,j); } 注意:运行程序时,当调用格式输入函数scanf()时,首先返回用户屏幕,等待用户从键盘上输入两个整数并回车,程序才能继续向下执行。 从键盘上为变量i,j赋值32和18时,两个整数之间可用空格、Tab或回车键分隔。试一试,用其它的分隔符输入时各个变量,能否得到正确值。 (二)输入并运行下面的程序,观察与上一程序的区别。注意:printf("Enter i,j\n");语句对下面的输入语句起提示作用。 main ( ) { int i,j; printf("Enter i,j\n"); scanf("%d%d",&i,&j); printf("i=%d,j=%d\n",i,j); } 注意:运行程序时,先执行printf("Enter i,j\n");,当调用格式输入函数scanf()时,返回用户屏幕,屏幕上会有提示Enter i,j,等待用户从键盘上输入两个整数。 (三)输入并运行下面的程序,掌握scanf()函数输入多个整型数据时,格式说明中逗号分隔符的正确使用。 main ( ) { int i,j; printf("Enter i,j\n"); scanf("%d,%d",&i,&j); printf("i=%d,j=%d\n",i,j); }

试验项目试验一最简单的C程序设计

试验项目试验一最简单的C程序设计

实验项目:实验一最简单的C程序设计 (所属课程:《C语言程序设计》学时:2) 一、实验目的 1.掌握:使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。 2.初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力。 3.掌握顺序结构程序设计的基本思路。 二、实验条件 Pc和vc++编程环境 三、实验内容 1.熟悉编程环境。 2.输入并运行一个C程序 3.掌握各种格式转换符的正确使用方法。 4.编程序:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。要求用scanf函数从键盘上输入数据(半径和高),输出各计算结果,输出时要求有文字说明,取小数点后2位数字。5.编程序:用getchar函数输入两个字符给C1、C2,然后分别用putchar函数和printf函数输出这两个字符。 四、实验步骤 编写程序,输入数据,观察结果。

五、实验结果 观察结果和预期是否一致。 实验项目:实验二选择结构程序设计 (所属课程:《C语言程序设计》学时:2) 一、实验目的 1.了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。 2.学会正确使用逻辑运算符和逻辑表示式。 3.熟练掌握if语句和switch语句 二、实验条件 Pc和vc++编程环境 三、实验内容

1.有一函数: ?????≥-<≤-<=)10x (113x ) 10x 1(12x )1x (x y 用scanf 函数输入x 的值,求y 值。 运行程序,输入x 的值(分别为x<1、1≤x <10、x ≥10三种情况),检查输出的y 值是否正确。 2.给出一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。90分以上为A ,81~89分为B ,71~79分为C ,61~69分为D ,60分以下为E 。 3.输入4个整数,要求按由小到大顺序输出。 四、实验步骤 编写程序,输入数据,观察结果。 五、实验结果 观察结果和预期是否一致。 实验项目:实验三 循环结构程序设计

03实验三 顺序结构程序设计_答案

湖北工业大学实验报告 课程名称:C语言程序设计实验内容实验三顺序结构程序设计 学院:工程技术学院专业班级: 姓名:学号:教师:成绩: 一、实验目的 1、掌握赋值语句、表达式语句、函数调用语句、复合语句、空语句的使用方法。 2、掌握输入、输出函数的格式及格式符的使用。掌握文件包含预处理命令的使用方法。 3、掌握数据的输入、存储、输出之间的关系。 4、掌握顺序程序设计的逻辑结构,掌握数据结构的功能。 二、预习作业 1、程序填空题:试在括号中填入正确的答案,并上机验证程序的正确性。(1) 输入大写字符A,则输出为( )。(文件名:ex3_1.c) (#include ) main( ) { ( char ch,chr; ) chr=(ch= getchar( )) main( ) { ( long int) a =80000 , b = 60000, c, d; ( c) = ( a - b ,a + b ); ( d) = (a + b,a - b); printf(“%ld ,%ld\n”, c, d); }

2、程序改错并上机调试运行 (1)更改下列程序中的位运算符和逻辑运算符,能使变量d、e输出的结果为零。 (文件名:ex3_3.c) #include main( ) { int a = 8, b = 2,c = 3,d,e; /********** found **********/ d = (a % c & ^ a % c); e = a / c - b || && c + + ; printf (“%d, %d\n”, d, e); } (2) 查找改程序中的错误,并修改正确。(文件名:ex3_4.c) #include main( ) { int a = 4, b = 6, c= 3; /********** found **********/ a = a + b = b + c ; b = a < b ?a :b < c ?b :c printf(“%d,%d\n”, a, b); } 3、读程序写结果并上机验证其正确性 (1) 变量 a,b,c,d如下,将变量a以各种格式输出并输出表达式c+a,d – 32的值。(文件名:ex3_5.c) #include main( ) 结果为:(-1,4294967295,37777777777,ffffffff ) { int a = - 1 , b = 2 ; C,B char c = …D?,d = …b?; b = b + c;//??? printf (“%d, %u,%o,%x \n ”,a,a,a,a ); printf (“%c,%c \n ”,c + a, d - 32); } (2) 运行程序后输入”a空格b空格c回车”后,输出结果是(a ,b )。(文件

实验一 顺序结构程序设计

实验一顺序结构程序设计 一、实验目的 1. 掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。2 2. 学会使用有关算术运算符,以及包含这些运算符的表达式。 3. 掌握数据的输入输出方法,能正确使用各种格式转换符。 二、实验学时数 4学时 三、实验内容和步骤 1..启动TC 2.0编译系统,进入编辑界面,建立一个新文件。文件名自定。(要求每个学生建立一个自己的文件夹,每个同学的练习和作业的源程序命名形成系列,便于检查、查找和考核)。 利用一个小程序验证常量、变量的使用方法与特点,验证数据类型和表达式值的计算规则及其输出格式。 参考程序: main( ) { char c1,c2; c1=97;c2=98; printf(″%c,%c\n″,c1,c2); } (1)在此基础上加入以下printf语句,并运行。 printf(″%d,%d\n″,c1,c2); (2)将第二行改为以下语句,并运行。 int c1,c2; (3)将第三行改为以下语句,并运行。 c1=300;c2=400; 分别写出三次运行结果。 2.编程并调试运行 (1)编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf 函数输出这两个字符。上机运行此程序,比较putchar和printf函数输出字符的特点。 (2)试编写程序,从键盘输入一个大写字母,要求改用小写字母输出。 3.写出下面程序的运行结果: 1)main() { int x=1,y=1,z=1; y=y+x; x=x+y; printf(″%d\n″,x); printf(″%d\n″,y); } 2) main()

最简单的C程序设计—顺序程序设计实验报告

嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)掌握C语言中使用最多的一种语句——赋值语句的使用方法。 (2)掌握各种类型数据的输入输出的方法,能正确使用各种格式装换符。 (3)进一步掌握编写程序的和调试程序的方法。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 实验① (1)通过下面的程序掌握各种格式装换符的正确使用方法。 ①输入以下程序:

②运行程序并分析结果如图: ③在此基础上,将程序第10~14行改为 c1=a;c2=b; f=3157.;g=0.; d=f;e=g; P=a=m=50000;q=b=n=-60000; 运行程序,分析结果如: (二)设圆半径r=1.5,圆柱高h=3,求圆周长﹑圆面积﹑圆球表面积﹑圆球体积﹑圆柱体积。 用scanf 输入数据,输出计算结果,输出时要求有文字说明,取小数点后两位数字。 程序代码为: #include int main() {int a,b; float d,e; char c1,c2; double f,g; long m,n; unsigned int p,q; a=61,b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.;g=0.; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.12f\nm=%1d,n=%1d\np=%u,q=%u\n",f,g,q,m,n,p,q); } #include int main() {float h,r,l,s,sq,vq,vz; float pi=3.; printf("请输入圆半径r ,圆柱高h :"); scanf("%f,%f",&r,&h); l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=3.0/4.0*pi*r*r*r; vz=pi*r*r*h;

实验三简单程序设计(2)

实验三简单程序设计 【实验目的】 1、掌握scanf、printf函数语句的使用 2、掌握算术表达式和赋值表达式的使用 3、能够编程实现简单的数据处理 【实验性质】验证性 【实验要求】 1、认真阅读本次实验的目的,了解本次实验要求掌握的内容 2、在上机前,需要预习,在程序改错题旁将程序中存在的错误修改过来,将编程题的 代码和流程图写在预习报告中 3、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码, 在VC环境中编写出来 4、在VC中将编写的程序编译、调试,能正确运行结果,各题目的具体要求请看题目下 的要求 5、将正确程序上传FTP服务器(ftp://172.17.9.253) 6、争取完成选作题 【实验内容】 1、程序改错 1) 下面程序需要从键盘输入三个数,计算其平均值在屏幕上显示输出。要求平均值 需要保留两位小数。源代码如下,程序中存在错误,请将其改正写在旁边,并注明为什么错误。 include int Main(){ int x,y,z,float ave; /*定义变量*/ printf("请输入三个数:\n);/*输入提示*/ scanf("%d,%d,%d",x,y,z);/*从键盘输入*/ ave=x+y+z/3;/*计算*/ printf("平均值是:ave=%f",AVE); return 0; }

2、编程题 1)编写程序,在计算机屏幕上显示如下信息。 【要求】 (1)使用printf 函数输出字符 2) 设一个正圆台的上底半径r1,下底半径r2,高h 。请设计一程序,从键盘输入r1,r2,r3;计算并在显示器上输出该圆台的上底面积s 1,下底面积s 2,圆台的体积V 。 【要求】 (1)r1,r2,h 用scanf 函数输入,且在输入前要有提示; (2)在输出结果时要有文字说明,每个输出值占一行,且小数点后取2位数字。 【思路点拔】 (1)圆面积计算公式为 s=πr 2。其中r 为圆半径。 (2)圆台体积计算公式为 V=3 /)r1r2r2r1(h 22++π 3) 鸡兔同笼,已知鸡兔总头数为h ,总脚数为f ,求鸡兔各有多少只? 【要求】

实验三(1)MATLAB程序设计并且附有答案

实验三(1)、MATLAB程序设计 一、实验目的 1、掌握建立和执行M文件的方法 2、掌握利用if语句和switch语句实现选择结构的方法 二、实验内容及步骤 1、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。 其中90分~100分为A,80分~89分为B,70分~79为C, 60分~69分为D,60分以下为E。 要求:1)分别用if语句和switch语句实现a=input('please input the score:'); if mod(a,0.5)==0 &a>=0&a<=100; switch (floor(a/10)) case 9 disp('A'); case 8 disp('B'); case 7 disp('C'); case 6 disp('D'); otherwise disp('E'); end else disp('输入的成绩不合理') end double x; x=input('Input x please:'); if mod(x,0.5)~=0 || x>100 || x<0 disp('ê?è?μ?3é?¨2?o?àí'); elseif x>=90 & x<=100 disp('A'); elseif x>=80 & x<=89 disp('B'); elseif x>=70 & x<=79 disp('C'); elseif x>=60 & x<=69 disp('D'); elseif x>=0 & x<60 disp('E');

end 2)对不合理的成绩应输出出错信息“输入的成绩不合理”(若成绩出现小数,则只能是“.5”) 2、设计程序,完成两位数的加、减、乘、除四则运算,即产 生两个两位随机整数,再输入一个运算符号,做相应的运 算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。 x=randint(1,1,[10 99]);或者x=round(rand(1)*100) y=randint(1,1,[10 99]);或者y=round(rand(1)*100) disp(['x=',num2str(x)]); disp(['y=',num2str(y)]); A=input('请输入一个运算符号:','s'); %书上114页有说明 switch(A) case '+' a=x+y; disp(['a=x+y=',num2str(a)]); case '-' a=x-y;disp(['a=x-y=',num2str(a)]); case '*' a=x*y;disp(['a=x*y=',num2str(a)]); case '/' a=x/y;disp(['a=x/y=',num2str(a)]); end 3、求下列分段函数的值 2 2 2 6,0 56, 1, y χχχχ χχχχχ χχ ?+-<≠ ? =-+≤≠≠? ?-- ? 且-3 0<10,2且3 其他 要求:用if语句实现,分别输出x = -5.0,-3.0,1.0,2.0,2.5,

3、顺序程序设计作业

实验3 顺序程序设计 一、实验目的 1.学习编写简单的C程序。 2.在编写和调试程序的过程中,培养发现问题、分析问题、解决问题的能力。 3.掌握程序的基本组成:说明数据、输入数据、加工数据、输出数据。 二、实验预备知识 1.C语言的各种数据类型; 2.C语言的各种运算符和表达式; 3.C程序中各种数据的输入和输出。 三、实验内容 编写程序,实现以下功能。 1.由键盘任意输入一个圆的半径,计算其面积。 2.由键盘任意输入一个三角形的3条边,计算其面积。 3.由键盘任意输入一个长方体的长、宽、高,计算体积。 4.由键盘任意输入一个圆柱的半径和高,计算其底面积、表面积、体积。 5.由键盘任意输入4门课程的成绩,计算它们的平均成绩。 6.由键盘任意输入一个数字字符(‘0’-‘9’),将其转换为数字输出。 7.由键盘任意输入1个大写字母,将其转化为小写字母后输出。 8.由键盘任意输入银行存款本金、存款年利率、存款年限、利息税,计算本金和利息总和。9.由键盘任意输入2个数据,将它们交换后输出。 10.由键盘任意输入1个4位数整数,分别输出其中的个位、十位、百位、千位。 四、实验分析 1.分析并总结不同数据类型的数据,它们的表示形式、表示范围、机内所占字节的数量、可以进行的运算的不同。 2.当表达式中出现了多种运算符时,应特别注意它们的优先级和结合性。 3.正确使用格式输入和输出函数中的各种格式符。 4.掌握顺序程序设计的方法。 五、实验报告 1.在实验过程中,将每一个程序的源代码保存,如1.C、2.C、3.C、。。。。。。、10.C。 2.建立本人学号和姓名为名称的文件夹,如:2014211234王军-3,将每一个程序的源代码存入此文件夹(删除其他所有文件,只保留.C 的源程序文件,并且压缩)。 3.将此文件压缩文件上传到:学生交作业\2015春C语言程序设计作业\第3次作业\机械14-1。

实验项目:实验一 最简单的C程序设计

实验项目:实验一最简单的C程序设计 (所属课程:《C语言程序设计》学时:2) 一、实验目的 1.掌握:使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。 2.初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力。 3.掌握顺序结构程序设计的基本思路。 二、实验条件 Pc和vc++编程环境 三、实验内容 1.熟悉编程环境。 2.输入并运行一个C程序 3.掌握各种格式转换符的正确使用方法。 4.编程序:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。要求用scanf函数从键盘上输入数据(半径和高),输出各计算结果,输出时要求有文字说明,取小数点后2位数字。5.编程序:用getchar函数输入两个字符给C1、C2,然后分别用putchar 函数和printf函数输出这两个字符。 四、实验步骤 编写程序,输入数据,观察结果。 五、实验结果 观察结果和预期是否一致。 实验项目:实验二选择结构程序设计

(所属课程:《C 语言程序设计》学时:2) 一、实验目的 1.了解C 语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。 2.学会正确使用逻辑运算符和逻辑表达式。 3.熟练掌握if 语句和switch 语句 二、实验条件 Pc 和vc++编程环境 三、实验内容 1.有一函数: ?? ???≥-<≤-<=)10x (113x )10x 1(12x )1x (x y 用scanf 函数输入x 的值,求y 值。 运行程序,输入x 的值(分别为x<1、1≤x <10、x ≥10三种情况),检查输出的y 值是否正确。 2.给出一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。90分以上为A ,81~89分为B ,71~79分为C ,61~69分为D ,60分以下为E 。 3.输入4个整数,要求按由小到大顺序输出。 四、实验步骤 编写程序,输入数据,观察结果。 五、实验结果 观察结果和预期是否一致。 实验项目:实验三 循环结构程序设计

汇编实验2 顺序程序设计

汇编实验二顺序结构程序设计 实验目的: (1)掌握汇编语言程序上机过程。 (2)掌握顺序结构程序调试的方法。 实验内容: 调试查表程序 内存中自TABLE开始的七个单元中连续存放着自然数0~6的立方值(立方值表), 任一个数X(0≤X≤6)在FIRST单元中,要求查表找出X的立方值,存SECOND 单元。 准备工作: 1.进入D: 2.建立一个文件夹hb, 即d:\hb 3.将MASM和LINK复制到该文件夹中 4.单击“开始”-“程序”-“附件”-“命令提示符” 5.输入“d:\” 6.输入“cd hb” 操作步骤: 1.输入源程序: EDIT d:\hb\cb.asm 在EDIT编辑环境File菜单下选择Save存盘,选择Exit退出编辑环境

2.汇编源程序 A>MASM CB↙ Microsoft (R) Macro Assembler Version 5.10 Copyright (C) Microsoft Copr 1981,1988 All rights reserved. Object filename [CB.OBJ]:_↙ Source listing [NUL.LST]:↙ Cross-reference [NUL.CRF]:↙ 51394+389950 Bytes symbol space free 0 Warning Errors 0 Severe Errors A> 3.连接目标程序 A>LINK Microsoft (R) Overlay Linker Version 3.64 Copyright (C) Microsoft Corp 1983-1988. All rights reserved. Object Modules [.OBJ]:CB↙ Run File [NUL.MAP]:↙ Libraries [.LIB]: ↙ 显示0个错误才能进行下一步LINK操作 4.执行程序 A>B 没有任何结果输出,原因是程序中没有安排显示输出,结果保存在内存单元中。 5.用DEBUG调试并查看运行结果 A>DEBUG CB.EXE

相关主题