实验七 过程程序设计

合集下载

C++程序设计实验-1-7

C++程序设计实验-1-7

C++程序设计实验实验报告要求红色为实验报告必包括内容502:ftp://192.168.200.210实验一熟悉vc++开发环境和C++程序的调试过程。

一、理解体会例1-1,输入并运行。

二、参照例1-2,用结构化方法编程实现:1、根据每学年学费、专业总学分、某课程学分,计算上该课程的总花费,以及每学时,每分钟的花费。

(1学分=18学时)2、P43编程题1,2,31.输入一个三位整数,将它反向输出。

2.输入平面上某点横坐标x和纵坐标y,若该点在由图3.1表示的方块区域内,则输出1;否则,输出0。

图1.11 正方形3.输入三个整数,求出其中最小数(要求使用条件表达式)。

实验二进一步熟悉vc++开发环境和C++程序的调试过程。

一、理解体会例1-2,输入并运行。

二、参照例1-2,用面向对象方法编程实现:根据每学年学费、专业总学分、某课程学分,计算上该课程的总花费,以及每学时,每分钟的花费。

使得本校不同专业,不同课程的同学都能用它来计算。

(1学分=18学时)提示:1、定义一个类,类的数据成员包括:每学年学费、专业总学分、课程学分;类的成员函数包括:设置每学年学费、专业总学分、课程学分; 显示每学年学费、专业总学分、课程学分; 计算上某课程的总花费; 计算上某课程的每学时花费; 计算上某课程的每分钟的花费;2、说明1个或几个对象,计算并输出相应各结果。

三、P39习题1: 1.1-1.4根据需要编程上机检验其中的部分题目。

实验三1.输入某学生成绩,若成绩在85分以上输出“very good ”,若成绩在60分到85分之间输出“good ”,若成绩低于60分输出“no good ”。

2.输入三个整数,按从小到大的顺序输出它们的值。

3.输入三角形的三条边,判别它们能否形成三角形,若能,则判断是等边、等腰、还是一般三角形。

4.输入百分制成绩,并把它转换成五级分制,转换公式为:⎪⎪⎪⎩⎪⎪⎪⎨⎧-----=59069607970898010090(不合格)(合格)(中等)(良好)(优秀)(级别)E D C B A grade5.编程序模拟剪刀、石头和纸游戏。

C语言程序设计实验报告(实验大纲+过程)

C语言程序设计实验报告(实验大纲+过程)

C语言程序设计实验报告(实验大纲+过程)C语言程序设计实验报告(实验大纲+过程)一、实验目的本实验旨在通过实际的C语言程序设计任务,培养学生的编程思维、动手能力,加深对C语言程序设计的理解和掌握。

二、实验内容1. 实验环境的搭建在计算机上安装C语言编程环境,如C语言编译器。

2. 实验材料准备根据给定的实验题目和要求,准备相应的实验材料,包括输入输出测试数据、参考文档等。

3. 实验任务根据实验题目,编写C语言程序,实现特定的功能要求。

程序需包括输入部分、处理部分和输出部分。

4. 程序调试与测试对编写完成的程序进行调试,确保程序的正确性。

使用多组测试数据进行测试,验证程序的功能是否符合要求。

5. 实验总结与思考对实验过程中遇到的问题进行总结,并提出改进建议。

思考课程的重点和关键,深化对C语言程序设计的理解。

三、实验步骤1. 实验环境的搭建在计算机上下载并安装C语言编译器,如Dev-C++或Code::Blocks等。

2. 实验材料准备根据实验题目要求,准备好实验所需的输入测试数据和输出要求。

3. 编写C语言程序根据实验题目,使用C语言编写程序。

在程序的开头部分添加必要的注释,说明程序的功能和使用方法。

4. 程序调试与测试编译并运行程序,查看是否存在语法错误。

使用给定的测试数据,验证程序的输出是否符合要求。

5. 实验总结与思考对实验过程中遇到的问题进行总结,并提出改进建议。

思考课程的重点和关键,深化对C语言程序设计的理解。

四、实验结果与分析根据实验题目要求,给出实验编写的C语言程序的详细代码,并解释程序的设计思路和实现方法。

同时,给出实验所得的输出结果,并分析结果是否符合预期。

五、实验心得体会通过完成本次实验,我对C语言程序设计的基本语法和思维方式有了更深入的理解。

在编写程序的过程中,我遇到了一些问题,但通过不断尝试和调试,最终顺利完成了实验任务。

在今后的学习中,我将进一步加强对C语言的理解和应用能力,提高程序设计的质量和效率。

实验七 顺序程序设计和循环程序设计

实验七  顺序程序设计和循环程序设计

实验七顺序程序设计和循环程序设计一.实验目的:1.学习编写顺序结构的程序,完成调试2.学习编写循环结构的程序,完成调试.二.实验内容:在ADDR单元中存放着数0XXXXH(number变量)的地址,编制一个程序把0XXXXH中1的个数存入COUNT单元中。

三.实验设备:IBM PC机,DOS或WINDOWS, MASM5。

0程序。

四.实验原理:要测出数0XXXXH中1的个数就应逐位测试。

一个比较简单的办法是可以根据最高有效位是否为1来记数,然后用移位的方法把各位数逐次移到最高位去。

循环结束可用计数值为16来控制,也可用测试数是否为0来作为结束条件。

此外,考虑到0XXXXH本身可能为0,可优先选择DO-WHILE 的结构形式。

程序框图如下:五.实验过程:1编辑源程序:datarea segment 数据段的定义number dw 0XXXXH;0XXXXH定义,在调试时0XXXXH的值有自己指定,本例为AAABH。

addr dw number ;数据0XXXXH地址count dw ? ;数字1统计个数值保存单元定义datarea ends ;数据段定义结束prognam segment ;代码段定义main proc far ;主过程定义assume cs:prognam ,ds: datarea ;代码段,数据段与寄存器关联 start: ;第一条指令开始标志push dssub ax,axpush ax ;以上三条指令完成返回DOSmov ax,datarea ;将数据段地址送AXmov ds,ax ;将数据段地址送数据段寄存器mov cx,0 ;初始化计数器CX为0mov bx,addr ;送0XXXXH的地址到BXmov ax,[bx] ; 送0XXXXH到AXrepeat:test ax,0ffffh ;测试0XXXXH是否为0jz exit ;0XXXXH为0退出jns shift ;判定最高位是否为0,是为0则移位 inc cx ;最高位为1,则计数器加1shift:shl ax,1 ;左移一位jmp repeat ;跳转到标号repeat处exit:mov count,cx ;将最后结果送计数单元ret ;程序返回DOSmain endp ;主过程结束prognam ends ;代码段结束end start ;整个程序结束保存为一个sy7.asm的文件。

实验七,矩阵式键盘输入实验

实验七,矩阵式键盘输入实验

实验七、矩阵式键盘输入实验一、实验目的1.学习矩列式键盘工作原理2.学习矩列式接口的电路设计和程序设计二、实验设备1.仿真器2.单片机最小系统实验教学模块3.矩阵式键盘实验模块4.动态扫描数码管显示模块三、实验要求要求实现:在矩阵式键盘中的某个键被按下时,8位LED动态显示器上最低位显示该键对应的字符,以前的字符向高位推进1位(即类似于计算器)。

注意,在进行该项实验之前,请先进行实验二“数码管动态扫描显示实验”。

四、实验原理矩阵式由行线和列线组成,按键位于行、列的交叉点上。

如图所示,一个4*4的行、列结构可以构成一个由16个按键的键盘。

很明显,在按键数量较多的场合,矩阵式键盘与独立式键盘相比,要节省很多的I/0口。

图7-1 矩阵式键盘结构4.1 矩阵式键盘工作原理按键设置在行、列交节点上,行、列分别连接到按键开关的两端。

行线通过上拉电阻接到VCC上。

平时无按键动作时,行线处于低电平状态,而当有按键按下时,列线电平为低,行线电平为高。

这一点是识别矩阵式键盘是否被按下的关键所在。

因此,各按键彼此将相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。

4.2 按键识别方法下面以图7-2中4号键被按下为例,来说明此键是如何被识别出来的。

前已述及,键被按下时,与此键相连的行线电平将由与此键相连的列线电平决定,而行线电平在无键按下时处于高电平状态。

如果让所有列线处于高电平那么键按下与否不会引起行线电平的状态变化,始终是低电平,所以,让所有列线处于高电平是没法识别出按键的。

现在反过来,让所有列线处于低电平,很明显,按下的键所在行电平将也被置为高电平,根据此变化,便能判定该行一定有键被按下。

但我们还不能确定是这一行的哪个键被按下。

所以,为了进一步判定到底是哪—列的键被按下,可在某一时刻只让一条列线处于低电平,而其余所有列线处于高电平。

当第1列为低电平,其余各列为高电平时,因为是键4被按下,所以第1行仍处于低电平状态;当第2列为低电平,其余各列为高电平时,同样我们会发现第1行仍处于低电平状态,直到让第4列为低电平,其余各列为高电平时,因为是3号键被按下,所以第1行的高电平转换到第4列所处的高电平,据此,我们确信第1行第4列交叉点处的按键即3号键被按下。

实验七 二维数组实验报告

实验七 二维数组实验报告

***软件类实验报告课程名称:C语言程序设计学号:姓名:班级:指导教师:开课学期:学院:***教务处⑶二维数组处理矩阵问题。

四、实验过程及内容:(运行结果请抓图到对应题目的下方)1.输入下面的程序,说明程序的功能并分析运行结果。

2.程序填空题。

加法口诀表。

输入1个正整数n(1≤n≤10),输出一张10以内的加法口诀表。

加数与被加数都不大于n(将加数、被加数、和放入一个二维数组中,再输出该数组),程序运行结果如图7-1所示。

填空完成程序。

实验结果:3. 程序填空题。

下列程序定义了M×N的二维数组,并在主函数中对其赋值。

函数fun()的功能是计算数组周边元素的平均值并作为函数值返回给主函数。

实验结果:4. 编程insert函数,insert函数的功能是:实现在字符串s的指定的下标位置插入另一个字符串t。

例如:字符串s为“I am a boy.”,t为“good ”,调用insert(s,7,t);则s结果为“I am a good boy.”。

主函数框架如下:#include "stdio.h"#include "string.h"void main(){char s[100]="I am a boy.",t[50]="good ";void insert(char s[],int n,char t[]);insert(s,7,t);puts(s);}请完成insert函数的定义。

实验结果:5. 程序改错题。

打印九九乘法表。

6.编写程序实现,求3*3矩阵两条对角线元素之和五、实验小结。

《程序设计》实验报告

《程序设计》实验报告

《程序设计》实验报告实验报告:程序设计一、实验目的本次实验的目的是通过一个简单的程序设计实践项目,让学生了解并掌握C语言的基本语法和程序设计能力。

通过此次实验,学生需要能够利用C语言的各种语法和函数,编写一个完整的、具备一定功能的程序。

二、实验内容本次实验要求学生编写一个简单的学生成绩管理系统。

系统需要实现以下功能:1.从文件中读取学生的信息,并存储在程序中;2.根据学生的成绩,计算每个学生的总分和平均分,并进行排名;3.根据学生的姓名、学号、成绩等信息,能够实现对学生信息的查询;4.能够对学生信息进行排序和修改;5.将学生的信息输出到文件中。

三、实验过程1.定义学生信息的结构体,并定义需要用到的全局变量;2.编写从文件中读取学生信息的函数,并将读取到的信息存储在数组中;3.初始化学生信息、计算每个学生的总分和平均分,并进行排名;4.编写查询学生信息、排序学生信息和修改学生信息的函数;5.编写将学生信息输出到文件中的函数;6.在主函数中根据用户输入调用以上函数,完成学生成绩管理系统的各项功能。

四、实验结果经过编写和调试,最终实现了一个简单的学生成绩管理系统。

用户可以通过菜单选择需要的功能,包括添加学生信息、查询学生信息、修改学生信息、排序学生信息和输出学生信息等。

程序能够准确地读取和存储学生的信息,并能够根据用户的指令完成相应的操作。

五、实验总结通过本次实验,我对C语言的基本语法有了更深入的理解,并通过实践掌握了C语言的一些常用函数和数组的使用。

在编写程序的过程中,我还学会了如何利用文件进行输入和输出,提高了程序的灵活性和实用性。

通过对学生成绩管理系统的设计与实现,我对程序设计的整个过程有了更清晰的认识,增强了我的程序设计能力。

在本次实验中,我还遇到了一些问题和困难。

比如学生信息的存储和读取、学生信息的排序和查询等。

但通过和同学的讨论和老师的指导,我最终解决了这些问题,并成功完成了实验。

在解决问题的过程中,我学会了如何运用调试工具进行程序的调试和错误的定位,提高了解决问题的能力。

汇编语言程序设计实验七文件操作

汇编语言程序设计实验七文件操作

汇编语言程序设计实验七文件操作上海应用技术学院实验报告实验报告课程名称实验项目一、目的及要求1、掌握文件的建立、打开、关闭的方法。

2、掌握文件的读写方法。

3、建立一个文件,存放到指定的路径下,理解文件代号的作用。

4、将内存某区域AREA1中的内容写入该文件。

二、实验准备认真复习第六章。

三、实验内容1、编写程序,在D盘根目录下建立一个名为TEST1.T某T和TEST2.T某T的文件,建立成功后,在TEST1.T某T文件中写入写入入你的学号,在TEST2.T某T中写入‘Hello!’。

并且在屏幕上显示“SUCCESS”。

2、打开FILE1.T某T文本文件,将文件的内容通过显示器显示出来。

3、打开前题中的两个文件,将TEST1.T某T的内容append到TEST2.T某T,并显示TEST2.T某T。

四、源程序1.INCLUDEYLIB.HDATASEGMENTFILE1DB'D:\\TEST1.T某T',0FILE2DB'D:\\TEST2.T某T',0HANDLE1DWHANDLE2DWDTA1DBDTA2DBMESS1DB0DH,0AH,'inputte某tpleae:$'MESS2DB0DH,0AH,'FAILTOWRITE!$'SUCCESSDB0DH,0AH,'SUCCESS !$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:第1页上海应用技术学院实验报告MOVA某,DATAMOVDS,A某LEAD某,FILE1MOVC某,0MOVAH,3CHINT21HMOVHANDLE1,A某LEAD某,FILE2MOVC某,0MOVAH,3CHINT21HMOVHANDLE2,A某NE某T1:LEAD某,MESS1MOVAH,09HINT21HLEAD某,DTA1MOVB某,HANDLE1AGN1:MOVAH,01HINT21HMOVDTA1,ALMOVAH,40HMOVC某,1INT21HJCERROR1CMPDTA1,0DHJNEAGN1LEAD某,SUCCESSMOVAH,09HINT21HJMPCLOSE1AGN2:第2页上海应用技术学院实验报告LEAD某,MESS1MOVAH,09HINT21HLEAD某,DTA2MOVB某,HANDLE2NE某T: MOVAH,01HINT21HMOVDTA2,ALMOVAH,40HMOVC某,1INT21HJCERROR1CMPDTA2,0DHJNENE 某TLEAD某,SUCCESSMOVAH,09HINT21HJMPCLOSE2CLOSE1:MOVAH,3EHMOVB某,HANDLE1INT21HJMPAGN2CLOSE2:MOVAH,3EHMOVB某,HANDLE2INT21HERROR1:LEAD某,MESS2MOVAH,09HINT21HE某IT:MOVA某,4C00HINT21HCODEENDS第3页上海应用技术学院实验报告ENDSTART2.DATASEGMENTFILEDB'D:\\FILE1.T某T',0HANDLEDWIN_AREADB10DUP(),'$'LENEQU20MESS1DB0DH,0AH,'OPENFILEERROR.$’MESS2DB0DH,0AH,'READFILEERR OR.$’MESS3DB0DH,0AH,'READFILESUCCESS.$’DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATAMOVDS,A某MOVAH,3DHLEAD某,FILEMOVAL,00HINT21HJNCLEAJMPSUCD某,MESS1E某ITSTART:MOVA某,DATASUC:MOVHANDLE,A某NE某T:MOVAH,3FHMOVC某,LENLEAD某,IN_AREAMOVB某,HANDLEINT21HJCREAD_ERRCMPCMPLEAADDA某,0IN_AREA,1AHSI,IN_AREASI,A某JZREAD_FINJZREAD_FINMOVBYTEPTR[SI],'$'MOVAH,09H第4页上海应用技术学院实验报告3.DATASEGMENTFILENAME1FILENAME2DTADTA2DB'D:\\TEST1.T某T',0DB'D:\\TEST2.T某T',0;磁盘缓冲区LEAJMPD某,IN_AREANE某TINT21HREAD_FIN:MOVAH,3EHMOVB某,HANDLEINT21HLEAJMPD某,MESS3E某ITREAD_ERR:MOVAH,3EHMOVB某,HANDLEINT21HLEAD某,MESS2E某IT:MOVAH,09HINT21HMOVA某,4C00HINT21HENDSTARTCODEENDSDB256DUP()DBDWDWHANDLE1HANDLE2DONEFAIL1FAIL2FAIL3FAIL4MESS3DATA DB0DB0DH,0AH,'OpenFileError.$'DB0DH,0AH,'MoveFilePointerError.$ 'DB0DH,0AH,'ReadFileError.$'DB0DH,0AH,'WriteFileError.$'DB0DH,0A H,'readfileucce.$'ENDSCODESEGMENT第5页上海应用技术学院实验报告AGAIN:MOVAH,3FH第6页ASSUMECS:CODE,DS:DATAMOVDS,A某MOVDONE,0LEASTART:MOVA某,DATAD某,FILENAME2MOVAL,01HMOVAH,3DHINT21HJCERR11;打开不成功,转ERR11MOVHANDLE2,A某LEAD某,FILENAME1;为“读”打开文件1MOVAL,0MOVAH,3DHINT21HJCERR12MOVHANDLE1,A某MOVAH,42HMOVAL,02MOVD某,0MOVC某,0MOVB某,HANDLE2INT21HJCERR2;读文件1LEAD某,DTAMOVB某,HANDLE1MOVC某,256INT21HJCERR3CMP A某,0JNEAGA1MOVDONE,1JMPFINISH;文件结束,转FINISH上海应用技术学院实验报告AGA1:CMPCONT:PUSHA某ERR11:LEAINT21HJMPE某ITD某,FAIL1;打开文件1失败,显示信息D某,FAIL1MOVAH,09HMOVAH,40HLEAPOPD某,DTAC某;写文件失败,转ERR4;写文件2JECONTMOVDONE,1;文件结束,置完成标志A某,256MOVB某,HANDLE2INT21HJCERR4CMPMOVAH,3EH;关闭文件1MOVB某,HANDLE1INT21HMOVB某,HANDLE2INT21HJMP READF2;关闭文件2JEAGAINDONE,0FINISH:FINISH1:MOVAH,3EHERR12:LEAINT21HJMPJMPJMPMOVAH,09HFINISH1ERR2:LEAERR3:LEAERR4:LEAD某,FAIL2D某,FAIL3D某,FAIL4;移动指针失败,显示信息;读文件失败,显示信息;写文件失败,显示信息;显示出错信息DISPDISPDISP:MOVAH,09HINT21H第7页上海应用技术学院实验报告READF2:MOVAH,3DHLEAMOVAL,00HINT21HMOVHANDLE2,A某D某,DTA2MOVB某,HANDLE2MOVC某,1MOVAH,3FHINT21HJCERR3CMPCMPA某,0DTA2,1AHJECLOSEJECLOSEMOVDL,DTA2MOVAH,02HINT21HJMPONE;打开文件2D某,FILENAME2;为读而打开JMPFINISH;转FINISH,关闭文件ONE:LEACLOSE:MOVAH,3EHMOVB某,HANDLE2INT21HINT21HEND1.STARTE某IT:MOVA某,4C00HCODEENDS五、运行结果第8页上海应用技术学院实验报告.第9页上海应用技术学院实验报告2.第10页上海应用技术学院实验报告3.第11页上海应用技术学院实验报告六、上机调试时的问题和解决方法在这次实验中,文件的建立和写入时程序运行没有错误,但是在输入学号名时键盘输出一个1它却出现两个1,令人很苦恼,换了台电脑才运行正确了。

实验七二维数组程序设计

实验七二维数组程序设计

实验七二维数组程序设计实验七二维数组程序设计一、实验学时 2学时二、实验目的(一)掌握二维数组的定义、赋值及输入输出的方法;(二)掌握与二维数组有关的算法如查找、矩阵转置等;(三)掌握在程序设计中使用数组的方法。

数组是非常重要的数据类型,循环中使用数组能更好地发挥循环的作用,有些问题不使用数组难以实现。

(四)掌握在VC++环境下上机调试二维数组程序的方法,并对结果进行分析。

三、预习要求熟悉二维数组的定义、引用和相关算法(求最大值、最小值)的程序设计,同时要掌握在程序设计中利用双重循环来实现二维数组的输入和输出。

四、实验内容(一)二维数组的初始化,即给二维数组的各个元素赋初值。

下面的几个程序都能为数组元素赋值,请输入程序并运行,比较这些赋值方法有何异同。

1.在定义数组的同时对数组元素分行初始化。

/* c7-1.c *//*二维数组的初始化(分行)*/#include "stdio.h"void main( ){ int i,j,a[2][3]={{1,2,3},{4,5,6}};for(i=0; i<2; i++){ for(j=0; j<3; j++)printf("%d ",a[i][j]);printf("\n");}}2.不分行的初始化。

把{ }中的数据依次赋值给数组的各个元素。

/* c7-2.c *//*二维数组的初始化(不分行)*/#include "stdio.h"void main( ){ int i,j,a[2][3]={1,2,3,4,5,6};for(i=0;i<2;i++){ for(j=0;j<3;j++)printf("%d ",a[i][j]);printf("\n");}}3.为部分数组元素初始化。

如:数组定义语句为:int i,j,a[2][3]={{1,2},{4}};4.可以省略第一维的定义,但不能省略第二维的定义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七过程程序设计一、实验目的与要求1.掌握Sub子过程和Function函数过程的定义及其调用方法;2.掌握参数按值传递和按地址传递的传递方式;3.理解变量和过程的作用域;4.掌握递归概念和使用方法。

二、实验准备1.预习子过程和函数过程的定义、创建及调用方法;2.弄清形参、实参的概念及参数按值传递和按地址传递的区别;3.熟悉变量和过程的作用域;4.理解递归概念。

三、实验案例【案例一】编写一个Sub过程,实现将三个数由大到小排序。

分析:本题在Sub过程中引入三个参数A、B、C,在过程中对它们进行排序,执行完过程后还通过A、B、C返回排序后的结果,即参数传递方式采用按地址传递。

具体实现步骤如下:1.界面设计根据题目要求,需要在窗体上添加两个命令按钮和两个文本框。

界面如图7-1所示。

图7-1排序过程(界面设计)2.属性设置本题的属性设置见表7-1。

对象属性设定值Form1Name frmSort3 Caption 案例7-1Text1 Name txtInput TextText2 Name txtOutput Text3.代码编写本题需要在通用|声明部分定义三个变量X、Y、Z;编写一个三个数由大到小的通用排序子过程Sort3;对两个命令按钮cmdFront、cmdBehind的Click事件进行编程。

程序清单如下:Dim X As Integer, Y As Integer, Z As Integer'定义排序过程Sort3Public Sub Sort3(A As Integer, B As Integer, C As Integer)Dim T As IntegerIf A < B ThenT = A: A = B: B = TEnd IfIf A < C ThenT = A: A = C: C = TEnd IfIf B < C ThenT = B: B = C: C = TEnd IfEnd Sub'单击cmdBehind命令按钮调用Sort3过程进行排序,并显示排序结果Private Sub cmdBehind_Click()Sort3 X, Y, Z '调用Sort3过程进行排序txtOutput.Text = Str(X) & " " & Str(Y) & " " & Str(Z) '显示排序结果End Sub'单击cmdFront命令按钮产生并显示三个随机数Private Sub cmdFront_Click()Randomize '随机产生[0,99]之间的三个整数X = Int(100 * Rnd)Y = Int(100 * Rnd)Z = Int(100 * Rnd)txtInput.Text = Str(X) & " " & Str(Y) & " " & Str(Z) '输出三个随机整数End Sub4.调试运行在主菜单运行项单击“启动”按钮,进入运行状态。

单击“排序前”命令按钮,则在文本框txtInput中显示三个[0,99]之间的随机整数,然后单击“排序后”命令按钮,则在文本框txtOutput中由大到小的排序显示这三个随机整数。

运行结果如图7-2所示。

图7-2排序过程(运行结果)5.保存以“案例7-1”为名称分别保存窗体文件和工程文件。

【案例二】编写Function过程求1!+2!+…+n!的值。

分析:本题可用两个Function过程即Fact过程和Mul过程。

Fact过程计算每一个数的阶乘,Mul过程求n个数阶乘的累加和。

在“计算”命令按钮的单击事件过程中首先调用Mul 过程,在Mul过程中又调用Fact过程,这种在一个过程执行期间又调用另外一个过程称为过程的嵌套调用。

具体实现步骤如下:1.界面设计根据题目要求,需要在窗体上添加一个标签和一个命令按钮。

界面如图7-3所示。

图7-3阶乘累加过程(界面设计)2.属性设置本题的属性设置见表7-2。

对象属性设定值Form1Name frmMul Caption 案例7-2Label1Name lblMul CaptionCommand1Name cmdMul Caption 计算3.代码编写本题需要编写一个Function过程Fact计算每一数的阶乘,一个Function过程Mul求n 个数阶乘的累加和,对命令按钮cmdMul的Click事件进行编程。

程序清单如下:Function Mul(n As Integer) As Double ' 求累加和Dim i As Integer, sum As Doublesum = 0For i = 1 To nsum = sum + Fact(i) '调用Fact过程,过程的嵌套调用Next iMul = sumEnd FunctionFunction Fact(n As Integer) As Double '求n!Dim i As Integer, f As Doublef = 1For i = 1 To nf = f * iNext iFact = fEnd FunctionPrivate Sub cmdMul_Click()Dim n As Integern = Val(InputBox("请输入n的值", "求1!+2!+…+n!的值"))If n = 0 Then '控制标签lblMul的Caption属性值lblMul.Caption = "0!=1"ElseIf n = 1 ThenlblMul.Caption = "1!=" & Mul(n) '调用Mul过程ElseIf n = 2 ThenlblMul.Caption = "1!+2!=" & Mul(n)ElseIf n = 3 ThenlblMul.Caption = "1!+2!+3!=" & Mul(n)ElselblMul.Caption = "1!+2!+…" & Str(n) & "!=" & Mul(n)End IfEnd Sub4.调试运行在主菜单运行项单击“启动”按钮,进入运行状态。

单击“计算”命令按钮,则可在产生的输入框中输入任意的n值如15,单击输入框的确定按钮后标签上显示的内容发生变化,即输出程序结果,如图7-4所示。

图7-4阶乘累加过程(运行结果)5.保存以“案例7-2”为名称分别保存窗体文件和工程文件。

【案例三】编写一个Sub过程,将字符串s1中出现的字符串s2删除,结果仍保存在s1中。

例如,s1=“abcdefgzyxabcd12abcd34”,s2=“abcd”,删除后结果为s1=“efgzyx1234”。

分析:可以利用内部函数InStr查找要删除的字符串,由于可能在s1串中存在多个s2字符串,或者根本不存在s2字符串,所以要用循环来实现重复查找;s1串的长度会随着删除操作而发生变化。

因此,每次循环要计算s1串的长度;删除操作可以通过Left、Right等函数来实现。

具体实现步骤如下:1.界面设计根据题目要求,需要在窗体上添加三个标签、三个文本框和一个命令按钮。

界面如图7-5所示。

图7-5删除子串过程(界面设计)2.属性设置本题的属性设置见表7-3。

对象属性设定值Form1Name frmDelete Caption 案例7-3Text1 Name txtSource TextText2 Name txtChildren TextText3 Name txtResult TextLabel1Name lblSource Caption 原字符串S1为:Label2Name lblChildren Caption 子字符串S2为:Label3Name lblResult Caption 结果字符串为:Command1Name cmdDelete Caption 在S1串中删除S2串3.代码编写本题需要编写一个把在字符串s1中出现的字符串s2删除的通用子过程DeleteStr;对命令按钮cmdDelete的Click事件进行编程。

程序清单如下:Private Sub DeleteStr(s1 As String, ByVal s2 As String)'定义删除字符串的Sub过程DeleteStrDim position As Integer, s1length As Integer, s2length As Integerposition = InStr(s1, s2) '返回子串s2在字符串s1中的起始位置s2length = Len(s2) '返回子串s2的字符数Do While position > 0s1length = Len(s1) '返回字符串s1的字符数s1 = Left(s1,position-1) & Right(s1, s1length - (position + s2length) + 1)'当字符串s1中包含有子串s2时删除子串s2position = InStr(s1, s2)'继续查找s2在新产生的s1中下一个可能出现的起始位置LoopEnd SubPrivate Sub cmdDelete_Click()Dim s1 As Strings1 = txtSource.Text '在文本框中输入字符串s1Call DeleteStr(s1, txtChildren.Text)'在文本框txtChildren中输入字符串s2,调用DeleteStr过程进行删除字符串s2txtResult.Text = s1'用文本框txtResult显示删除字符串s2后的结果字符串End Sub4.调试运行在主菜单运行项单击“启动”按钮,进入运行状态。

在文本框中输入原字符串S1“abcd1234abcef”和子字符串S2“abc”然后单击“在S1串中删除S2串”命令按钮,则在结果字符串文本框中显示“d1234ef”。

运行结果如图7-6所示。

图7-6删除子串过程(运行结果)5.保存以“案例7-3”为名称分别保存窗体文件和工程文件。

四、问题与思考1.【案例1】中的参数传递能否采用按值传递方式?为什么?2.【案例2】中试输一个n的值为多大会产生数据溢出?五、课外实验1.编写一个计算乘幂的Function过程,用来计算x的y次幂,其中y>0。

相关文档
最新文档