实验三综合程序设计方案(一)
计算机硬件技术基础实验答案程序

实验一:简单程序设计实验(1)编写一个32 位无符号数除法的程序,要求将存放在NUM1 中的32 位无符号数与存放在NUM2 中的16 位无符号数相除,结果存放在程序流程图略。
参考源程序:NUM1 DD 2A8B7654HNUM2 DW 5ABCHNUM3 DW ?NUM4 DW ?ASSUME DS:DATA, CS:CODE;数据段寄存器初始化MOV AX, WORD PTR NUM1MOV DX, WORD PTR NUM1+2DIV NUM2MOV NUM3,AXMOV NUM4,DXEND START(2)编写一个拆字程序。
要求将存放在ARY 单元的2 位十六进制数X1X2 拆为X1 和X2 两部分,并以0X1 和0X2 的形式分别存入ARY+1 和ARY+2 单元中。
程序流程图略。
参考源程序:DATA SEGMENTARY DB 2AH,?,?DATA ENDSCODE SEGMENTASSUME DS:DATA, CS:CODESTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET ARY MOV AL,[SI] ;取ARY 的偏移地址;取16进制数至ALNUM3 和NUM4 中。
DATA SEGMENTDATA ENDS CODE SEGMENTSTART: MOV AX,DATAMOV DS,AXCODE MOV AH,4CHINT 21HENDS;正常返回DOS 系统MOV BL,ALAND AL,0F0H;取16进制数的高四位,即X1SHR AL,4MOV [SI+1],AL ;存0X1 MOV AL,BLAND AL,0FH; 取16 进制数的低四位,即X2MOV [SI+2],AL ;存0X2MOV AH,4CHINT 21HENDSEND STARTCODE实验二:分支程序设计实验(1)编写一个字符比较程序,比较 3 个无符号字节数 A ,B ,C 的大小,并根据比较结果 对变量 K 赋值:如果 3 个数不相等,则 K=0 ; 如果 3 个数中有两个相等,则 K=1 ; 如果 3 个数都相等,则 K=2 。
实验3 结构化程序设计初步

实验3 结构化程序设计初步1.实验目的(1)掌握C++赋值语句与输入输出语句的使用方法,区别C语言的输入输出语句(2)掌握关系运算符、逻辑运算符与条件运算符的运算规则并能熟练计算由这些运算符构成的表达式(3)深入掌握C++各种流程控制语句(选择语句、循环语句和跳转语句)的要点和使用方法(4)能够灵活地运用C++各种语句进行综合程序设计2.实验内容2.1程序分析题。
分析下面程序的运行结果,上机运行程序,观察其输出结果与你的分析结果是否相同?(1)有如下程序,从键盘输入123456.78↙后,变量c1、c2、a、b的值分别是多少?#include <iostream.h>void main( ){char c1,c2;int a;float b;cin>>c1>>c2>>a>>b;cout<<c1<<" "<<c2<<" "<<a<<" "<<b<<'\n';}(2)#include <iostream.h>#include <iomanip.h>void main( ){double a=123.456789012345;cout<<a<<endl;cout<<setprecision(9)<<a<<endl;cout<<setprecision(6)<<a<<endl;cout<<setiosflags(ios::fixed)<<a<<endl;cout<<setiosflags(ios::fixed)<<setprecision(8)<<a<<endl;}(3)#include <iostream.h>#include <iomanip.h>void main( ){double a=123.456789012345;cout<<setiosflags(ios::scientific)<<a<<endl;cout<<setiosflags(ios::scientific)<<setprecision(4)<<a<<endl;}#include <iomanip.h>void main( ){int b=123456;cout<<b<<endl;cout<<hex<<b<<endl;cout<<setiosflags(ios::uppercase)<<b<<endl;cout<<dec<<setw(10)<<b<<','<<b<<endl;cout<<setfill('*')<<setw(10)<<b<<endl;cout<<setiosflags(ios::showpos)<<b<<endl;}(5)有如下程序,从键盘输入86 24 75↙后,程序的输出结果为多少,为什么?#include <iostream.h>void main( ){int a,b,c;cin>>a>>oct>>b>>hex>>c;cout<<a<<" "<<b<<" "<<c<<endl;}(6)#include <iostream.h>#include <iomanip.h>void main( ){short a=-1;cout<<dec<<a<<" "<<oct<<a<<" "<<hex<<a<<endl;}(7)#include <stdio.h>void main( ){int a=-1;printf("dec:%d,oct:%o,hex:%x,unsigned:%u\n",a,a,a,a);}(8)以下程序中,为了给整型变量k1,k3赋值为10,给k2,k4赋值为20,如何输入数据?#include <stdio.h>void main( ){int k1,k2,k3,k4;scanf("%d%d",&k1,&k2);scanf("%d,%d",&k3,&k4);printf("k1=%d,k2=%d,k3=%d,k4=%d\n",k1,k2,k3,k4);}void main( ){int a=3,b=4,c=5,d=6,e,f;e=a>b&&(c=8);cout<<c<<" "<<e<<endl;f=a<b&&(e=c<d);cout<<e<<" "<<f<<endl;f=a<b||(d>0?d++:d--);cout<<d<<" "<<f<<endl;}(10)#include <iostream.h>void main( ){int x,y,z,w;z=(x=-1)?(y=-1,y+=x+5):(x=7,y=9);w=y*'a'/4;cout<<x<<" "<<y<<" "<<z<<" "<<w<<endl;}(11)#include <iostream.h>void main( ){int a=5,b=7,c=3,t;if(a= -1) cout<<"Yes"<<endl;else cout<<"No"<<endl;if(a>b) { t=a;a=b;b=t; }if(a>c) { t=a;a=c;c=t; }if(b>c) { t=b;b=c;c=t; }cout<<a<<" "<<b<<" "<<c<<endl;}解析:a被赋值为-1,输出YESIf语句成立则执行,不成立则不执行分析只有b>c成立,=后面的值赋给左边的,顺序从左到右(12)#include <iostream.h>void main( ){ char c='3';switch(c-'1'){case 0:case 1:cout<<c+1<<endl;case 2:cout<<c+2<<" "<<char(c+2)<<endl;default:cout<<c+3<<" "<<char(c+3)<<endl;}}‘3’是字符型,ASCLL码为051,执行Switch时,根据switch表达式的值找到与之匹配的case子句,就从此子句开始执行下去,不再进行判断(13)#include <iostream.h>void main( ){int a=2,b=7,c=5;switch(a>0){case 1:switch(b<0){case 1: cout<<"+";break;case 2: cout<<"-";break;}case 0:switch(c==5){case 0: cout<<"*";break;case 1: cout<<"/";break;default: cout<<"#";break;}default: cout<<"$";}cout<<"\n";}a>0是真,值为1,执行case1,继续下面,b<0是假,不执行其中的case1.case2c==5是真,值为1,执行case1,输出/,其后有break,被中断不再执行分句里其下的命令,default: cout<<"$"前面没有break,则输出$(14)#include <iostream.h>void main( ){int a=10,b=0;do{a+=2;b+=a;cout<<"a="<<a<<",b="<<b<<endl;if(b>20) break;}while(a!=14);}(15)#include <iostream.h>void main( ){int i,j;for(i=10;i<20;i++){for(j=2;j<=i/2;j++)if(i%j==0) break;if(j>i/2)cout<<i<<" ";}cout<<endl;}(16)#include <iostream.h>void main( ){int i,j,m=0;for(i=0;i<5;i++)for(j=0;j<5;j++)if(j>=i) m++;cout<<m<<endl;}(17)#include <iostream.h>void main( ){int i,j;for(i=1;i<=9;i++){for(j=1;j<=9;j++){ if(j>i) break;cout<<i<<"*"<<j<<"="<<i*j<<" ";}cout<<endl;}}(18)#include <iostream.h>void main( ){int i=1,sum=0;while(i<=100){if(i%2==0){ i++; continue;}sum+=i;i++;}cout<<sum<<endl;}2.2编程题(1)编写程序从键盘输入一个大写字母,将其转换为小写字母并输出。
实验三 程序控制结构

实验(实训)报告项目名称实验三程序控制结构所属课程名称C语言程序设计项目类型验证性实验(实训)日期2011.4.2班级10信息与计算科学学号100112200134姓名邹雯指导教师马雪英浙江财经学院教务处制一、实验(实训)概述:【实验目的】1.熟练掌握顺序结构、分支语句、循环结构的使用;理解break语句在多路分支处理中的作用。
2.理解break,continue语句的作用。
3.熟练掌握程序测试和调试。
【实验要求】1.正确建立控制台工程。
2.正确定义变量、正确使用控制结构表达程序逻辑。
3.能区分break,continue等语句的作用。
4.熟练使用VC的DEBUG功能对程序进行调试。
【基本原理】见第三章课件【实施环境】(使用的材料、设备、软件)Visual C++ 6.0二、实验(实训)内容:实验任务一用DEBUG跟踪程序流程,回答问题第1题【项目内容】一只1英寸的蠕虫在一口长为n英寸的井的底部。
每分钟蠕虫可以爬u英寸,但必须休息1分钟才能接着爬。
在休息的过程中,蠕虫又下滑了d英寸。
上爬和下滑重复进行。
蠕虫需要多长时间才能爬出井?不足一分钟按一分钟计,并且假定只要在某次上爬过程中蠕虫爬到了井的顶部,那么蠕虫就完成任务了。
已经有如下正确的程序了,请为该程序建立控制台工程,然后按照要求进行测试和调试。
#include <iostream>using namespace std;int main(){int n; //n是井的高度(0<n<100)int u; //u是蠕虫每分钟上爬的距离int d; //d是蠕虫在休息的过程中下滑的距离(假定d<u,u>0,d>0)int time=0; //所花时间int curh=0; //当前高度int s=1; //s=1表示上爬,s=-1表示下滑cin >> n >> u >> d;while(curh<n){if(s==1) //上升curh+=u;//上升u距离else//下滑curh-=d;//下滑d距离time++;s=-s;}cout << time << endl;return 0;}【方案设计】请画出该程序的流程图。
化学实验三个单元教案初中

化学实验三个单元教案初中
一、酸碱中和实验
实验目的:通过观察酸和碱的中和反应,了解酸碱中和的原理。
实验器材:烧杯、滴管、PH试纸、盐酸溶液、氢氧化钠溶液。
实验步骤:
1. 取一只烧杯倒入适量的盐酸溶液。
2. 使用滴管逐滴加入氢氧化钠溶液,并同时观察PH试纸变化。
3. 持续加入氢氧化钠溶液直到PH试纸显示中性。
4. 记录下添加的氢氧化钠溶液的体积。
实验原理及结论:盐酸和氢氧化钠中和反应生成氯化钠和水,中和反应的本质是酸的氢离
子和碱的氢氧化物结合生成盐和水。
二、生成气体实验
实验目的:观察不同物质之间的化学反应生成气体。
实验器材:试管、火柴、烧杯、碳酸钠、稀盐酸溶液。
实验步骤:
1. 在试管中加入适量的碳酸钠溶液。
2. 慢慢滴入稀盐酸溶液,并观察试管内气体的变化。
3. 使用火柴点燃试管中的气体,观察燃烧现象。
实验原理及结论:碳酸钠和盐酸反应生成二氧化碳气体,二氧化碳是无色无味无毒的气体,但对火具有促进作用。
三、氧化还原实验
实验目的:通过观察氧化还原反应,了解金属和非金属的化学性质。
实验器材:试管、硫酸铜溶液、锌箔。
实验步骤:
1. 在试管中倒入适量的硫酸铜溶液。
2. 将锌箔放入试管中,观察反应过程。
3. 观察试管内溶液的颜色和气泡的产生。
实验原理及结论:锌与硫酸铜反应生成氧化锌和硫酸铜,氧化还原反应是指物质之间电子的转移。
程序设计实验指导书

程序设计实验指导书一、实验目的本实验旨在通过编程实践,提高学生的程序设计能力,加深对程序设计的理解。
通过完成实验任务,学生能够掌握常用的程序设计语言和工具,并能够独立完成基本的程序设计任务。
二、实验环境1. 软件:该实验使用的程序设计语言为Java,所以需要安装Java开发环境(JDK)。
2. 开发工具:推荐使用集成开发环境(IDE),如Eclipse、IntelliJ IDEA等。
3. 硬件:能够运行所需开发工具和Java程序的计算机。
三、实验内容1. 实验一:程序基础本实验主要考察学生对程序结构和基本语法的理解。
学生需要编写一个简单的Java程序,在控制台输出指定的内容。
可以选择合适的题目,如输出学生的个人信息、打印乘法口诀表等。
2. 实验二:条件语句和循环结构本实验主要考察学生在程序中正确运用条件语句和循环结构的能力。
学生需要编写一个Java程序,实现一个简单的计算器功能。
要求用户输入两个数字和运算符,程序可以根据运算符进行加、减、乘、除等运算,并输出结果。
3. 实验三:数组和函数本实验主要考察学生对数组和函数的理解和运用能力。
学生需要编写一个Java程序,实现对一个整型数组的排序功能。
要求用户输入一组数字,程序可以按照升序或降序对数组进行排序,并输出排序后的结果。
四、实验步骤1. 安装Java开发环境(JDK):请根据实验环境中提到的软件安装要求,安装合适版本的JDK,并配置环境变量。
2. 安装集成开发环境(IDE):根据个人喜好选择合适的IDE,并按照官方指引进行安装和配置。
3. 创建Java项目:在IDE中创建一个新的Java项目,并创建相应的源文件。
4. 编写代码:根据实验内容中的要求,在源文件中编写相应的Java 代码。
5. 编译和运行程序:使用IDE提供的功能,编译和运行程序,观察程序输出是否符合预期结果。
6. 调试和修改:如果程序出现错误或不符合预期,可以使用IDE提供的调试功能进行定位和修复。
实验三-选择结构程序设计

实验三选择结构程序设计3.1实验要求与目的1.掌握关系表达式和逻辑表达式的正确应用2.条件表达式的正确应用3. 掌握if语句,if-else语句,if语句的嵌套的编程方法4. 掌握switch的编程方法及执行特点5.掌握相关的算法(大小写字母的转换,判断数的奇偶,整数的整除,分段函数的求解,成绩的转换等)6. 培养解决实际问题的能力3.2实验指导结构化程序设计的三大结构:顺序结构、选择结构和循环结构。
计算机在执行过程时,根据条件选择所要执行的语句,称为选择结构,也称为分支结构。
在解决实际问题时,可能会因为其种条件的约束产生分支,可能是单分支结构、双分支结构和多分支结构等。
因此可选择相应的语句进行程序设计。
C语言程序设计实现单分支结构常采用,if语句;实现双分支结构常采用:if-else语句;实现多分支结构常采用:if-else嵌套语句或switch语句。
选择结构的程序设计除了选择适当的语句外,另一关键问题是条件的正确表示。
条件可以用表达式来描述,如关系表达式、逻辑表达式等。
【3.1】录入下列程序,输入给定的测试数据,观察其程序执行结果。
程序文件名为:ex3_1.c。
输入测试数据:23 56程序运行结果:max=56#include<stdio.h>void main(){int a,b,max;scanf("%d%d",&a,&b); /*从键盘输入两整数*/max=a;if(max<b)max=b;printf("max=%d\n",max); /*输出最大数*/}该程序的执行过程,从键盘输入两个整数赋予a,b,把a的值先赋予变量max,采用if 语句判别max和b的大小,若max小于b,则把b的值赋予max,然后执行printf语句输出max的值;若max大于b,不执行if后的语句,而执行printf语句输出max的值;max中的值总是大数。
程序设计基础(一)实验

程序设计基础(一)实验实验一上机操作初步(2学时)一、实验方式:一人一机二、实验目的:1、熟悉VC++语言的上机环境及上机操作过程。
2、了解如何编辑、编译、连接和运行一个C程序。
3、初步了解C程序的特点。
三、实验内容:说明:前三题为必做题目,后两题为选做题目。
1、输出入下信息:*************************Very Good*************************2、计算两个整数的和与积。
3、从键盘输入一个角度的弧度值x,计算该角度的余弦值,将计算结果输出到屏幕。
4、在屏幕上显示一个文字菜单模样的图案:=================================1 输入数据2 修改数据3 查询数据4 打印数据=================================5、从键盘上输入两个整数,交换这两个整数。
四、实验步骤与过程:五、实验调试记录:实验二简单的C程序设计(4学时)一、实验方式:一人一机二、实验目的:1、掌握C语言的数据类型。
2、学会使用C语言的运算符及表达式。
3、掌握不同数据类型的输入输出方法。
三、实验内容:说明:前四题为必做题目,后两题为选做题目。
1、输入r1、r2,求出圆形垫片面积。
2、输入华氏温度h,输出摄氏温度c。
3、从键盘输入一个3位整数,将输出该数的逆序数。
4、输入并运行以下程序,分析运行结果。
#include <stdio.h>void main( ){ int i,j;i=8; j=10;printf(“%d,%d\n”,++i,++j);i=8; j=10;printf(“%d,%d\n”,i++,j++);i=8; j=10;printf(“%d,%d\n”,++i,i);i=8; j=10;printf(“%d,%d\n”,i++,i);}5、输入三角形三条边的边长,求三角形的面积。
6、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。
C语言实验报告 实验三 参考答案

实验三循环结构程序设计(参考答案)1、设计程序sy3-1.c,计算并输出n(包括n)以内所有能被5或9整除的自然数的倒数之和。
例如输入n 的值为20时,输出0.583333。
算法分析:穷举1~n(含n)之间的每一个整数,能否被5或者9整除。
如果能,则把它的倒数累加到累加器里去。
因为能被5整除的自然数,应该至少从5才可能,所以循环控制变量i可以5开始。
参考答案:#include<stdio.h>void main(){int n,i;double s=0; //累加器要赋初值为0,结果为小数,所以定义为实数类型printf("请输入n的值:");scanf("%d",&n);for(i=5;i<=n;i++) //穷举小于等于n的自然数if(i%5==0||i%9==0)s=s+1.0/i;// 因为i是整数类型,所以1/i的值为0printf("s=%f\n",s);}运行结果:2、设计程序sy3-2.c,计算并输出给定整数n的所有因子(不包括1与自身)之和。
例如,输入n的值是856时,应输出763。
算法分析:因子,就是能整除n的值。
所以从2到n-1穷举每个数是不是它的因子,是就累加到s中。
参考答案:#include<stdio.h>void main(){int s=0,n,i;printf("请输入n:");scanf("%d",&n);for(i=2;i<n;i++) //穷举所有可能为因子的整数if(n%i==0) //因子即是能整除n的数s=s+i;printf("%d的所有因子之和是:%d\n",n,s);}运行结果:3、设计程序sy3-3.c,输入一个整数,要求将该整数上各位数字是偶数的数取出,并按原来从高位到低位的顺序组成一个新数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三综合程序设计(一)
一、实验目的
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学时。
五、实验内容
1 •编写主程序调用一个过程,实现将两个非压缩BCD码转换为一个压缩BCD 码,并用字符显示功能和字符串显示功能完成在屏幕上显示一个字符串
“Hello World! ”的功能。
版权文档,请勿用做商业用途
2•在内存建立一个表TABLE,其中存放20个字节型无符号数,从键盘输入一个数X(—位数),查找该数X在TABLE中是否存在,若存在,则在RESULT 单元存入1,否则存入-1。
版权文档,请勿用做商业用途
六、实验要求
1•实验前要做好充分准备,包括程序框图,源程序清单,调试步骤,调试
方法,以及对程序结果的分析等。
2•独立完成,严禁抄袭。
3•学会解决调试过程中的错误。
七、实验报告内容
1 •画出程序框图,写出源程序清单及在DEBUG状态下运行程序的过程。
2•写出调试过程中遇到的问题是如何解决的,并对调试过程中的问题进行分析。
3•写出调试的指令及运行结果,并对执行结果进行分析。
4 •收获及体会。