版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualBasic流程控制结构
第3章VisualBasic流程控制结构第3章主要内容3.2选择结构3.3循环结构3.1顺序结构主要内容3.2选择结构3.3循环结构3.1.1赋值语句
3.1.2数据输出3.1.3数据输入3.1顺序结构3.1.4顺序结构应用程序举例3.1.1赋值语句3.1.2数据输出3.1顺序结构是一种最简单的程序结构。这种结构的程序按语句书写的顺序“从上到下”依次执行,中间既没有跳转语句,也没有循环语句。顺序结构程序由变量的声明语句、赋值语句、输入输出语句、计算语句等部分组成。3.1顺序结构顺序结构是一种最简单的程序结构。这种结构的程序按语句书赋值语句是程序设计语言中最基本的语句,也是使用最多的语句,使用赋值语句可以在程序运行中改变对象的属性或变量的值。赋值语句的形式为:
变量名=表达式或
对象名.属性名=表达式赋值语句的作用是首先计算赋值号右边的表达式的值,而后将计算出的值赋给赋值号左边的变量或对象的属性。在赋值语句中,“=”是赋值号,与数学上的等号意义不同。例如,有如下语句:
i=i+1该语句表示将变量i的值加上1后的结果再赋给变量i,从而使变量i的值增1,而并非表示等号两边的值相等。3.1.1赋值语句
赋值语句是程序设计语言中最基本的语句,也是使用最多的VisualBasic中主要有以下三种输出数据的方法,即:
使用Print方法输出
使用控件(文本框、标签)输出
使用消息对话框输出
1.Print方法Print方法的格式为:
对象名.Print输出项3.1.2数据输出VisualBasic中主要有以下三种输出数据的方Print方法的说明:对象名:可以是窗体名称、图片框名称、打印机名称或Debug,若为Debug,则表示将结果输出到立即窗口中。如果省略对象名,则表示在当前窗体上输出。输出项:是需要输出的数据,可以是常量、变量或表达式。若为表达式,则先计算表达式的值,然后输出结果;如果是变量,则输出变量的值;如果是常量,则直接输出该常量,对字符串常量来说,不会输出双引号。如果省略输出项,则输出一个空行。分隔符:若要在同一行上输出多个数据项的值,则需要在Print后面书写多个数据项,且应使用逗号或分号进行分隔。此时Print方法的格式为:
对象名.Print输出项1,|;输出项2,|;输出项3…当用逗号进行分隔各个输出项时,将按标准输出格式(两个输出项的内容之间间隔14个字符)显示数据;用分号分隔时,将按紧凑格式输出数据,即第二个输出项的内容会紧随第一个输出项的内容之后输出。3.1.2数据输出Print方法的说明:3.1.2数据输出2.与Print方法有关的函数为使输出项按指定的格式输出,VisualBasic中提供了几个与Print方法一起使用的函数,其中包括Tab函数、Spc函数和Format等。⑴Tab函数Tab函数用来将插入点定位在某一列上,即在指定的位置输出数据,与Print方法一起使用的格式为:
PrintTab(n);输出项⑵Spc函数Spc函数用于在输出的数据项之前插入若干个空格。与Print方法一起使用的格式为:
PrintSpc(n);输出项3.1.2数据输出2.与Print方法有关的函数3.1.2数据输⑶Format函数Format为格式输出函数,用来将要输出的数据按照指定的格式输出。Format函数的使用格式为:
Format(表达式,格式字符串)其中,表达式为要输出的数据,可以是数值型、日期型或字符串类型数据;格式字符串是指输出的格式,具体格式说明见教材P52。⑷Cls方法Cls方法用于清除运行时在窗体或图片框内生成的图形和文本。其使用格式为:
对象名.Cls若省略对象名,则表示清除当前窗体上的显示内容。注意,Cls方法无法清除在设计阶段添加到窗体上的控件或图片框中使用Picture属性设置的背景图片。3.1.2数据输出⑶Format函数3.1.2数据输出3.使用控件输出VisualBasic中可使用标签和文本框输出数据。标签控件只能用来显示信息,而不能用来输入信息;而文本框控件既可以显示信息,也可以完成信息的输入。⑴使用标签控件进行输出标签中显示的信息是通过其Caption属性进行设置的,可在属性窗口中设置,也可以通过程序代码进行设置。例如:
Label1.Caption=Date&vbCrLf&Time⑵使用文本框进行输出通过文本框控件的Text属性可实现数据的输出。例如:
Text1.Text=Date&vbCrLf&Time该语句表示在文本框Text1中分两行显示日期和时间。3.1.2数据输出3.使用控件输出3.1.2数据输出4.使用消息对话框输出消息对话框可实现系统和用户之间的交互。消息对话框可通过MsgBox函数或MsgBox过程实现,MsgBox函数有返回值,且返回值为整数;MsgBox过程没有返回值,常常用来输出信息。MsgBox函数的使用格式为:
变量=MsgBox(提示信息,按钮类型,标题)MsgBox过程使用格式为:
MsgBox提示信息,按钮类型,标题说明:
⑴提示信息:是对话框中显示的信息,它是一个字符串表达式,可以为字符或汉字.
⑵按钮类型:用于确定对话框中显示的按钮数目、形式及图标的类型、默认按钮等。
⑶标题:是一个字符串表达式,决定对话框标题栏显示的信息内容3.1.2数据输出4.使用消息对话框输出3.1.2数据输出VisualBasic中可使用输入对话框函数或文本框控件实现数据的输入。
1.使用输入对话框函数InputBox输入数据输入对话框使用Inputbox函数实现,InputBox函数的格式为:
InputBox(提示信息,标题,默认值,x坐标,y坐标)该函数的作用是打开一个对话框,等待用户在对话框中输入数据,当用户按下回车键或者单击“确定”按钮时,函数将输入的内容作为字符串返回给变量。●提示信息是一个字符串表达式,不能省略,在对话框中作为提示信息,可以为字符或汉字。●标题是一个字符串表达式,决定对话框标题栏显示的信息内容。●默认值也是一个字符串表达式,决定对话框初始的输入内容。●x、y坐标是整型表达式,用来决定输入对话框在屏幕上显示的位置3.1.3数据输入VisualBasic中可使用输入对话框函数或文本在使用Inputbox函数时应注意:●各项参数的次序必须一一对应,除“提示信息”不可省略外,其他项均为可选项,都可省略;但省略参数时,参数间的逗号不能省略。●Inputbox函数的返回值类型为字符型,程序设计时,通常将InputBox函数的返回值赋给某个变量,再通过这个变量使用函数的返回值。若要通过InputBox函数得到数值型数据,可使用Val函数进行类型转换或直接赋给数值型变量。●输入对话框中有两个按钮,即“确定”与“取消”。若用户单击“确定”按钮或按下回车键时,InputBox函数返回输入的数据;如果单击“取消”按钮或按Esc键,则返回空字符串。●执行一次InputBox函数只能输入一个值,若要输入多个数据,则需要多次执行InputBox函数,实际应用中可与循环语句一起使用。3.1.3数据输入在使用Inputbox函数时应注意:3.1.32.使用文本框TextBox控件输入数据利用文本框控件的Text属性,文本框控件不仅可实现数据的输出,也可以实现数据的输入,即接收用户在文本框内输入的信息。需要注意的是,TextBox控件接收的数据为字符型,如果需要对数值型数据进行处理,可通过Val函数进行转换,或直接将其赋值给数值型变量。如:
Text3.Text=Val(Text1.Text)+Val(Text2.Text)
在该语句中,文本框Text1与Text2接收用户输入的数据,转换为数值型数据后进行求和运算,文本框Text3实现数据的输出。3.1.3数据输入2.使用文本框TextBox控件输入数据3.1.3在编制程序时,首先要根据需要处理的问题,规划和确定变量并进行定义和声明;之后通过变量的输入或赋值方法进行数据输入;接下来要进行计算(或程序的处理),这是编制程序的核心,它用于完成程序的功能;最后要将计算或处理的结果进行输出。一个程序一般都是由这4部分构成的,即:变量的声明、变量的输入或赋值、计算(程序处理)、结果的输出。请读者在编制程序时,也按照这样的结构来组织程序。3.1.4顺序结构应用程序举例在编制程序时,首先要根据需要处理的问题,规划和确定变例3.5编写程序,输入圆柱体的半径与高,输出其表面积和体积。程序代码为:PrivateSubCommand1_Click()DimrAsSingle,hAsSingle '声明变量r表示半径,h表示高DimareaAsSingle,vAsSingle'声明变量area表示表面积,v表示体积r=InputBox("请输入半径") '输入半径h=InputBox("请输入高度") '输入高area=2*3.14*r*r+2*3.14*r*h'计算表面积v=3.14*r*r*h '计算体积Print"圆柱体的半径为:"&r;"高为:"&h'输出半径与高Print"表面积为:"&area '输出表面积Print"体积为:"&v '输出体积EndSub3.1.4顺序结构应用程序举例例3.5编写程序,输入圆柱体的半径与高,输出其表面积和体积例3.6输入三角形的三个边(假定可构成三角形),求三角形的面积。三角形面积公式为:,其中,A、B、C为三边之长程序代码为:PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingle '声明变量DimsAsSingle,areaAsSinglea=Text1 '输入b=Text2c=Text3s=(a+b+c)/2 '计算area=Sqr(s*(s-a)*(s-b)*(s-c))Label2="三角形的面积为:"&area '输出
EndSub
3.1.4顺序结构应用程序举例例3.6输入三角形的三个边(假定可构成三角形),求三角形的例3.7输入两个整数,将其值交换后输出。例如若变量a、b的值分别1、2,则交换后a的值为2,b的值为1。程序代码为:PrivateSubCommand1_Click()DimaAsInteger,bAsInteger,tAsInteger '声明变量a=Text1 '输入b=Text2t=a '将a的值赋给t,即t保存a的值a=b '将b的值赋给a,则a的值变为bb=t '将t的值赋给bLabel2="交换后的值为:"&a&","&b '输出EndSub3.1.4顺序结构应用程序举例例3.7输入两个整数,将其值交换后输出。例如若变量a、b的例3.8输入一个4位正整数,输出各位数字之和。例如若输入2134,则输出结果为10(即2+1+3+4)。程序代码为:PrivateSubCommand1_Click()DimxAsInteger,sAsInteger '声明变量DimaAsInteger,bAsIntegerDimcAsInteger,dAsIntegerx=InputBox("请输入一个四位正整数") '输入a=xMod10 '得到个位数b=x\10Mod10 '得到十位数c=x\100Mod10 '得到百位数d=x\1000 '得到千位数s=a+b+c+d '求和Printx;"的各位数字之和为:";s '输出EndSub3.1.4顺序结构应用程序举例例3.8输入一个4位正整数,输出各位数字之和。例如若输入23.2选择结构3.2.1If语句
3.2.2SelectCase语句3.2.3条件函数3.2.4选择结构程序设计举例3.2选择结构3.2.1If语句3.2.2在实际应用中,有许多问题是根据不同的条件来选择执行不同的操作。例如,根据成绩进行输出,当成绩为60分以上时,输出“合格”,小于60分时,则输出“不合格”。根据成绩值的不同,进行选择来执行不同的输出操作,这样的程序结构称为选择结构或分支结构。VisualBasic中通过If语句和SelectCase语句实现选择结构,它们都是对某个条件进行判断,而后选择执行不同的分支。3.2选择结构在实际应用中,有许多问题是根据不同的条件来选择执行不在选择结构中,可以根据程序分支的数目,分为单分支结构、双分支结构和多分支结构。If语句可实现单分支、双分支和多分支结构。
1.单分支结构单分支结构是指只有一个程序分支,只有满足指定的条件才能执行该程序分支的语句。If语句实现单分支结构,可有两种形式:形式1:
If表达式Then语句组EndIf形式2:
If表达式Then语句3.2.1If语句
真假语句(组)表达式
单分支结构流程图该语句在执行时,首先计算表达式,若表达式的值为真,则执行Then后面的语句组,若表达式的值为假,则跳过Then后面的语句,执行EndIf后面的语句。在选择结构中,可以根据程序分支的数目,分为单分支结构单分支结构的说明:1.表达式可为关系表达式、逻辑表达式或数值表达式。当表达式是数值表达式时,非零值表示True,0表示False。2.在形式1中,语句组可以为一条或多条语句。在形式2中,语句表示一条语句,若为多条语句,则必须使用冒号:进行分隔,即语句必须与Then写在同一行上。3.在形式1中,必须以EndIf语句结束;形式2为单行结构,要求语句都写在一行上,且不能以EndIf语句结束。3.2.1If语句
单分支结构的说明:3.2.1If语句
2.双分支结构双分支结构表示程序有两个分支,当满足给定条件时,执行分支1,否则执行分支2。If语句实现双分支结构也有两种语句形式:形式1:
If表达式Then语句组1Else语句组2EndIf形式2为:
If表达式Then语句1Else语句23.2.1If语句
该语句在执行时,首先计算表达式,若表达式的值为真,执行Then后面的语句组1(或语句1);否则跳过语句组1(或语句1),执行Else后面的语句组2(或语句2)。使用时应注意在形式1中的Else后不能增加表达式。假真语句(组)1语句(组)2表达式双分支结构流程图2.双分支结构3.2.1If语句该语句在执行时,
3.多分支结构在实际问题中常常会遇到多个条件,此时就要用到多分支。If语句实现多分支结构的形式为:
If表达式1Then语句组1ElseIf表达式2Then语句组2…ElseIf表达式nThen语句组nElse语句组n+1EndIf3.2.1If语句
假真真真……表达式1表达式n语句组1语句组2语句组n语句组n+1……多分支结构流程图表达式2假3.多分支结构3.2.1If语句假真执行多分支结构该语句时,首先计算表达式1,若表达式1的值为真,则执行语句组1,而后退出If语句,执行EndIf后面的语句;若表达式1的值为假,则计算表达式2;若表达式2的值为真,则执行语句组2,而后退出If语句,执行EndIf后面的语句;若表达式2的值为假,则计算表达式3;……;以此类推,若表达式n的值为真,则执行语句组n,而后退出If语句,执行EndIf后面的语句;若表达式n的值为假,则执行Else后面的语句组n+1,而后执行EndIf后面的语句。需要注意:⑴无论有几个分支,程序一旦执行了某一个分支则退出If语句,其余分支不再执行。⑵ElseIf子句的数量没有限制,可以根据需要使用任意多个ElseIf子句。⑶Else后不能有表达式,Else表示以上表达式均为假时则执行其下面的语句组。⑷Else及其后的语句组可以省略。⑸ElseIf不能写作ElseIf。3.2.1If语句
执行多分支结构该语句时,首先计算表达式1,若表达式14.If语句的嵌套在实现选择结构时,若各个分支的语句组中又包含另一个分支结构,则成为选择结构的嵌套。由于在If语句中又嵌套了另外的If语句,因此会形成更多的程序分支,所以,If语句的嵌套也可实现多分支结构。3.2.1If语句
If表达式1ThenIf表达式2Then 语句组1Else 语句组2EndIfElseIf表达式3Then语句组3Else语句组4EndIfEndIf内层内层外层两层嵌套的If语句4.If语句的嵌套3.2.1If语句If表达SelectCase语句也称为情况语句,是多分支结构的另一种表示形式。SelectCase语句的格式如下:SelectCase测试表达式Case表达式列表1语句组1Case表达式列表2语句组2……Case表达式列表n语句组nCaseElse语句组n+1EndSelect3.2.2SelectCase语句SelectCase语句的流程图┆FTFF表达式列表n语句组n+1┆语句组nT表达式列表2语句 组2T表达式列表1语句组1┆计算测试表达式的值SelectCase语句也称为情况语句,是多分支结SelectCase语句的功能是根据测试表达式的值,从多个语句组中选择符合条件的一个语句组执行。SelectCase语句的执行过程首先计算测试表达式的值,然后将计算的结果与每个Case后的表达式列表的值进行比较,如果有相匹配的,就执行该Case下面的语句组,执行完该语句组后则退出SelectCase语句,不再与后面的表达式列表比较;若测试表达式的值没有找到匹配项,则执行CaseElse语句后面的语句组,而后退出SelectCase语句;若无CaseElse,则直接退出SelectCase语句。3.2.2SelectCase语句SelectCase语句的功能是根据测试表达式的值说明:⑴测试表达式可以是各类表达式,还可以是常量、变量或对象属性值,通常为变量。⑵Case后的表达式列表的类型必须与测试表达式值的类型相同。表达式列表通常有四种形式:单个表达式、一组用逗号隔开的枚举值、某个范围及Is关系运算表达式。
⑶当有多个Case子句的值与测试表达式的值匹配时,只执行第一个与之匹配的语句组。
⑷CaseElse及其对应的语句组放在所有Case的表达式列表的下面,它们用于指定当测试表达式的值与所有表达式列表都不匹配时所执行的操作。
⑸Select表示SelectCase语句的开始,EndSelect表示SelectCase语句的结束,它们必须成对出现。
⑹语句组可由一行或多行语句组成,还可以是If语句或其他SelectCase语句等。3.2.2SelectCase语句说明:3.2.2SelectCase语句VisualBasic中提供了IIf条件函数用于实现简单的条件选择,它是双分支选择结构的另一种表达形式。IIf函数的格式为:
IIf(表达式1,表达式2,表达式3)IIf函数在执行时,首先计算表达式1的值,当表达式1的值为真时,计算表达式2的值,并将其作为IIf函数的返回值;当表达式1的值为假时,计算表达式3的值,并将其作为IIf函数的返回值。说明:三个表达式均不能省略,且可为任意表达式。3.2.3条件函数VisualBasic中提供了IIf条件函数用于实例3.19输入三个数,将其按从小到大的顺序输出。(P76)例3.20编写程序,输入年份,判断该年是否为闰年。(P77)例3.21编写程序,输入个人收入salary,计算个人所得税tax并输出。(P78)例3.22编写程序,输入数据与运算符(+、-、*、/),输出运算结果,实现加减乘除四则运算。若除数为0或运算符输入错误,则给出提示信息。(P78)3.2.4选择结构程序设计举例例3.19输入三个数,将其按从小到大的顺序输出。(P76)3.3循环结构3.3.1For循环语句
3.3.2Do循环语句3.3.3While循环语句3.3.4循环的强制退出3.3.5循环的嵌套3.3.6几种循环结构的比较3.3.7循环结构应用程序举例3.3循环结构3.3.1For循环语句3.在许多问题中,常常需要将某个程序段反复执行多次,如果在这类程序中安排多个重复的语句序列,就会使程序冗长并浪费计算机存储空间。为了解决这个问题,VisualBasic中提供了循环语句来实现程序段的多次反复执行,从而简化程序结构,节省计算机存储空间。在循环结构中需要反复执行的语句称为循环体。循环结构是结构化程序设计的三种基本结构之一,它和顺序结构、选择结构一起成为各种复杂程序的基本构造单元。在VisualBasic中,有两种类型的循环语句,一种是循环次数已知的循环语句,即For语句,一种是由条件控制的循环语句,相应的语句为Do语句和While语句。3.3循环结构在许多问题中,常常需要将某个程序段反复执行多次,如果For循环语句适用于循环次数已知的循环结构,其一般格式为:
For循环变量=初值To终值Step步长循环体Next循环变量
3.3.1For循环语句
For语句的执行过程为:首先将初值赋给循环变量,然后检查循环变量的值是否在初值到终值范围内,若超出了该范围,则结束循环,执行Next后面的语句;如果没有超过该范围,则执行一次循环体,而后将循环变量的值加上步长后再赋给循环变量,然后继续判断循环变量的值。循环体循环变量=循环变量+步长循环变量=初值FT循环变量是否在初值与终值的范围内For循环的执行过程For循环语句适用于循环次数已知的循环结构,其一般格说明:⑴For、To、Next、Step都是关键字。⑵循环变量是一个数值型变量,用于控制循环的次数。⑶初值、终值代表循环变量的初值和终值,可以是数值型常量或数值表达式。⑷步长是循环变量的增值,可以是数值型常量或数值表达式。步长的值可正可负,其取值与初值和终值有关。若步长为正,则初值必须小于终值,否则无法进入循环,步长值为1时可省略“Step1”;步长为负时,初值必须大于终值,否则无法进入循环;步长的值为0,则出现无限循环(即死循环),因此步长不能为0。⑸For和Next之间为循环体,它可以由一个或多个语句构成。⑹Next后的循环变量必须与For后的循环变量相同,也可省略不写。⑺循环次数由初值、终值和步长决定,计算公式为:
循环次数=INT((终值–初值)/步长+1)⑻当初值等于终值时,不论步长是正数还是负数,都执行一次循环体。3.3.1For循环语句
说明:3.3.1For循环语句For循环适用于循环次数已知的循环结构,而在很多实际问题中却无法预先确定循环次数,因此这类循环通常使用基于条件的循环语句。Do循环语句主要用于循环次数不确定的循环结构,通过循环条件来决定循环是继续进行还是结束。Do语句有两种形式,即:
形式1:DoWhile|Until循环条件循环体Loop形式2:Do循环体LoopWhile|Until表达式3.3.2Do循环语句For循环适用于循环次数已知的循环结构,而在很多实际说明:⑴Do,Loop,Until,While都是关键字,Do和Loop共同构成Do循环语句。⑵“循环条件”可为关系表达式、逻辑表达式或数值表达式。若其为数值表达式,则表达式的值为非0时表示为真,为0时表示为假。⑶关键字While表示当循环条件为真时则执行循环体,若循环条件为假则结束循环;关键字Until表示若循环条件为假则执行循环体,一旦循环条件为真则结束循环。⑷形式1与形式2的区别在于,形式1为先判断后执行,即先判断循环条件,而后根据条件的真或假来决定是否执行循环体;而形式2为先执行后判断,即先执行一次循环体,而后判断循环条件,根据条件的真或假再决定是否继续执行循环体。⑸Do与Loop应成对出现,当省略“While|Until循环条件”时,循环结构仅由Do和Loop构成,表示无条件循环,此时应在循环体中有ExitDo语句用于终止循环,否则循环语句将永远无法终止,导致死循环。3.3.2Do循环语句说明:3.3.2Do循环语句根据以上两种形式,可构成五种循环结构,即Do…Loop、DoWhile…Loop、DoUntil…Loop、Do…LoopWhile和Do…LoopUntil结构,其格式分别为:DoWhile|Until循环条件3.3.2Do循环语句(2)DoWhile循环条件循环体Loop(4)Do循环体LoopWhile循环条件(3)DoUntil循环条件循环体Loop(5)Do循环体LoopUntil循环条件(1)Do循环体Loop根据以上两种形式,可构成五种循环结构,即Do…LooWhile循环语句用于循环次数不可知的循环结构,该语句和DoWhile…Loop结构的功能完全相同,其语句格式为:
While表达式 循环体Wend该语句的执行过程为:首先计算表达式的值,当表达式的值为真(非零)时,执行循环体,而后由Wend语句控制返回再次计算While后的表达式,若为真则继续执行循环体,若表达式的值为假,则结束循环,执行Wend后面的语句。3.3.3While循环语句While循环语句用于循环次数不可知的循环结构,该语在循环结构中,有时需要中途提前退出循环。VisualBasic中提供了Exit语句,用于退出某种控制结构的执行。
ExitFor和ExitDo均用于退出循环结构。ExitFor只能用于For循环语句的循环体中,执行了该语句后则立即退出循环,不再执行循环体内的其他语句,而是执行Next后面的语句;ExitDo只能用于Do循环语句的循环体中,一旦执行该语句则退出循环,执行Loop后面的语句。通常ExitFor与ExitDo总是与If语句一起用于循环结构中,其形式为:
If条件ThenExitDo|ExitForEndIf表示当条件成立时提前终止Do循环或For循环,不成立则不退出循环。3.3.4循环的强制退出在循环结构中,有时需要中途提前退出循环。Visual与选择结构的嵌套类似,循环结构也可构成嵌套。当一个循环的循环体内包含有另一个完整的循环时,称为循环的嵌套,也称为多重循环。使用循环嵌套时应注意:⑴在执行循环嵌套时,每执行一次外层循环,其内层循环必须循环所有的次数(即内层循环结束)后,才能进入到外层循环的下一次循环。⑵在构成循环嵌套时要特别注意,外层循环和内层循环之间是包含关系,即内层循环必须被完全包含在外层循环里面,绝对不能出现循环交叉的情况。⑶For、Do、While三种循环语句可以自身嵌套,也可以互相嵌套⑷ExitDo或ExitFor语句用在嵌套的循环结构中时,仅能退出包含该语句的那层循环,即它只能跳出一层循环。3.3.5循环的嵌套与选择结构的嵌套类似,循环结构也可构成嵌套。当一个循一般情况下,几种循环语句可以相互替代,在编写程序时,要根据题目的要求采用合适的循环语句。下表给出了几种循环语句的区别3.3.6几种循环结构的比较For…Next语句DoWhile/Until…Loop语句Do…LoopWhile/Until语句循环类型先判断后执行先判断后执行先执行后判断循环变量初值在For语句行中在Do语句之前在Do语句之前循环控制条件循环变量是否在终值范围内条件成立/不成立执行循环体条件成立/不成立执行循环体提前结束循环ExitForExitDoExitDo改变循环条件循环体中不需要专门语句,由Next语句自动改变在循环体中使用专门语句在循环体中使用专门语句使用场合循环次数可确定循环/结束控制条件可确定循环/结束控制条件可确定一般情况下,几种循环语句可以相互替代,在编写程序时,例3.33用公式计算π的近似值,直到最后一项的绝对值小于10-6为止。(P93)例3.34求裴波那契(Fibonacci)数列:1,1,2,3,5,8,13,…的前40个数。(P94)例3.35输入10个学生的成绩,输出最高分。(P94)例3.36使用牛顿迭代法求解方程2x3-4x2+3x-6=0在1.5附近的一个根,当|xn+1-xn|≤10-6时达到精度要求。(P95)例3.37编写程序输出定积分的值。(P96)例3.38编写程序判断用户输入的字符串是否为回文。所谓回文,就是当一个字符串正读和反读时都一样。如"LEVEL"、"2332"等均为回文,而"visual"则不是回文。(P97)例3.39字符串的编码与译码。将输入的一行字符串的所有字符编码(加密),然后再将编码进行译码(解密)。(P97)3.3.7循环结构应用程序举例例3.33用公式计算π的近似演讲完毕,谢谢观看!演讲完毕,谢谢观看!VisualBasic流程控制结构
第3章VisualBasic流程控制结构第3章主要内容3.2选择结构3.3循环结构3.1顺序结构主要内容3.2选择结构3.3循环结构3.1.1赋值语句
3.1.2数据输出3.1.3数据输入3.1顺序结构3.1.4顺序结构应用程序举例3.1.1赋值语句3.1.2数据输出3.1顺序结构是一种最简单的程序结构。这种结构的程序按语句书写的顺序“从上到下”依次执行,中间既没有跳转语句,也没有循环语句。顺序结构程序由变量的声明语句、赋值语句、输入输出语句、计算语句等部分组成。3.1顺序结构顺序结构是一种最简单的程序结构。这种结构的程序按语句书赋值语句是程序设计语言中最基本的语句,也是使用最多的语句,使用赋值语句可以在程序运行中改变对象的属性或变量的值。赋值语句的形式为:
变量名=表达式或
对象名.属性名=表达式赋值语句的作用是首先计算赋值号右边的表达式的值,而后将计算出的值赋给赋值号左边的变量或对象的属性。在赋值语句中,“=”是赋值号,与数学上的等号意义不同。例如,有如下语句:
i=i+1该语句表示将变量i的值加上1后的结果再赋给变量i,从而使变量i的值增1,而并非表示等号两边的值相等。3.1.1赋值语句
赋值语句是程序设计语言中最基本的语句,也是使用最多的VisualBasic中主要有以下三种输出数据的方法,即:
使用Print方法输出
使用控件(文本框、标签)输出
使用消息对话框输出
1.Print方法Print方法的格式为:
对象名.Print输出项3.1.2数据输出VisualBasic中主要有以下三种输出数据的方Print方法的说明:对象名:可以是窗体名称、图片框名称、打印机名称或Debug,若为Debug,则表示将结果输出到立即窗口中。如果省略对象名,则表示在当前窗体上输出。输出项:是需要输出的数据,可以是常量、变量或表达式。若为表达式,则先计算表达式的值,然后输出结果;如果是变量,则输出变量的值;如果是常量,则直接输出该常量,对字符串常量来说,不会输出双引号。如果省略输出项,则输出一个空行。分隔符:若要在同一行上输出多个数据项的值,则需要在Print后面书写多个数据项,且应使用逗号或分号进行分隔。此时Print方法的格式为:
对象名.Print输出项1,|;输出项2,|;输出项3…当用逗号进行分隔各个输出项时,将按标准输出格式(两个输出项的内容之间间隔14个字符)显示数据;用分号分隔时,将按紧凑格式输出数据,即第二个输出项的内容会紧随第一个输出项的内容之后输出。3.1.2数据输出Print方法的说明:3.1.2数据输出2.与Print方法有关的函数为使输出项按指定的格式输出,VisualBasic中提供了几个与Print方法一起使用的函数,其中包括Tab函数、Spc函数和Format等。⑴Tab函数Tab函数用来将插入点定位在某一列上,即在指定的位置输出数据,与Print方法一起使用的格式为:
PrintTab(n);输出项⑵Spc函数Spc函数用于在输出的数据项之前插入若干个空格。与Print方法一起使用的格式为:
PrintSpc(n);输出项3.1.2数据输出2.与Print方法有关的函数3.1.2数据输⑶Format函数Format为格式输出函数,用来将要输出的数据按照指定的格式输出。Format函数的使用格式为:
Format(表达式,格式字符串)其中,表达式为要输出的数据,可以是数值型、日期型或字符串类型数据;格式字符串是指输出的格式,具体格式说明见教材P52。⑷Cls方法Cls方法用于清除运行时在窗体或图片框内生成的图形和文本。其使用格式为:
对象名.Cls若省略对象名,则表示清除当前窗体上的显示内容。注意,Cls方法无法清除在设计阶段添加到窗体上的控件或图片框中使用Picture属性设置的背景图片。3.1.2数据输出⑶Format函数3.1.2数据输出3.使用控件输出VisualBasic中可使用标签和文本框输出数据。标签控件只能用来显示信息,而不能用来输入信息;而文本框控件既可以显示信息,也可以完成信息的输入。⑴使用标签控件进行输出标签中显示的信息是通过其Caption属性进行设置的,可在属性窗口中设置,也可以通过程序代码进行设置。例如:
Label1.Caption=Date&vbCrLf&Time⑵使用文本框进行输出通过文本框控件的Text属性可实现数据的输出。例如:
Text1.Text=Date&vbCrLf&Time该语句表示在文本框Text1中分两行显示日期和时间。3.1.2数据输出3.使用控件输出3.1.2数据输出4.使用消息对话框输出消息对话框可实现系统和用户之间的交互。消息对话框可通过MsgBox函数或MsgBox过程实现,MsgBox函数有返回值,且返回值为整数;MsgBox过程没有返回值,常常用来输出信息。MsgBox函数的使用格式为:
变量=MsgBox(提示信息,按钮类型,标题)MsgBox过程使用格式为:
MsgBox提示信息,按钮类型,标题说明:
⑴提示信息:是对话框中显示的信息,它是一个字符串表达式,可以为字符或汉字.
⑵按钮类型:用于确定对话框中显示的按钮数目、形式及图标的类型、默认按钮等。
⑶标题:是一个字符串表达式,决定对话框标题栏显示的信息内容3.1.2数据输出4.使用消息对话框输出3.1.2数据输出VisualBasic中可使用输入对话框函数或文本框控件实现数据的输入。
1.使用输入对话框函数InputBox输入数据输入对话框使用Inputbox函数实现,InputBox函数的格式为:
InputBox(提示信息,标题,默认值,x坐标,y坐标)该函数的作用是打开一个对话框,等待用户在对话框中输入数据,当用户按下回车键或者单击“确定”按钮时,函数将输入的内容作为字符串返回给变量。●提示信息是一个字符串表达式,不能省略,在对话框中作为提示信息,可以为字符或汉字。●标题是一个字符串表达式,决定对话框标题栏显示的信息内容。●默认值也是一个字符串表达式,决定对话框初始的输入内容。●x、y坐标是整型表达式,用来决定输入对话框在屏幕上显示的位置3.1.3数据输入VisualBasic中可使用输入对话框函数或文本在使用Inputbox函数时应注意:●各项参数的次序必须一一对应,除“提示信息”不可省略外,其他项均为可选项,都可省略;但省略参数时,参数间的逗号不能省略。●Inputbox函数的返回值类型为字符型,程序设计时,通常将InputBox函数的返回值赋给某个变量,再通过这个变量使用函数的返回值。若要通过InputBox函数得到数值型数据,可使用Val函数进行类型转换或直接赋给数值型变量。●输入对话框中有两个按钮,即“确定”与“取消”。若用户单击“确定”按钮或按下回车键时,InputBox函数返回输入的数据;如果单击“取消”按钮或按Esc键,则返回空字符串。●执行一次InputBox函数只能输入一个值,若要输入多个数据,则需要多次执行InputBox函数,实际应用中可与循环语句一起使用。3.1.3数据输入在使用Inputbox函数时应注意:3.1.32.使用文本框TextBox控件输入数据利用文本框控件的Text属性,文本框控件不仅可实现数据的输出,也可以实现数据的输入,即接收用户在文本框内输入的信息。需要注意的是,TextBox控件接收的数据为字符型,如果需要对数值型数据进行处理,可通过Val函数进行转换,或直接将其赋值给数值型变量。如:
Text3.Text=Val(Text1.Text)+Val(Text2.Text)
在该语句中,文本框Text1与Text2接收用户输入的数据,转换为数值型数据后进行求和运算,文本框Text3实现数据的输出。3.1.3数据输入2.使用文本框TextBox控件输入数据3.1.3在编制程序时,首先要根据需要处理的问题,规划和确定变量并进行定义和声明;之后通过变量的输入或赋值方法进行数据输入;接下来要进行计算(或程序的处理),这是编制程序的核心,它用于完成程序的功能;最后要将计算或处理的结果进行输出。一个程序一般都是由这4部分构成的,即:变量的声明、变量的输入或赋值、计算(程序处理)、结果的输出。请读者在编制程序时,也按照这样的结构来组织程序。3.1.4顺序结构应用程序举例在编制程序时,首先要根据需要处理的问题,规划和确定变例3.5编写程序,输入圆柱体的半径与高,输出其表面积和体积。程序代码为:PrivateSubCommand1_Click()DimrAsSingle,hAsSingle '声明变量r表示半径,h表示高DimareaAsSingle,vAsSingle'声明变量area表示表面积,v表示体积r=InputBox("请输入半径") '输入半径h=InputBox("请输入高度") '输入高area=2*3.14*r*r+2*3.14*r*h'计算表面积v=3.14*r*r*h '计算体积Print"圆柱体的半径为:"&r;"高为:"&h'输出半径与高Print"表面积为:"&area '输出表面积Print"体积为:"&v '输出体积EndSub3.1.4顺序结构应用程序举例例3.5编写程序,输入圆柱体的半径与高,输出其表面积和体积例3.6输入三角形的三个边(假定可构成三角形),求三角形的面积。三角形面积公式为:,其中,A、B、C为三边之长程序代码为:PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingle '声明变量DimsAsSingle,areaAsSinglea=Text1 '输入b=Text2c=Text3s=(a+b+c)/2 '计算area=Sqr(s*(s-a)*(s-b)*(s-c))Label2="三角形的面积为:"&area '输出
EndSub
3.1.4顺序结构应用程序举例例3.6输入三角形的三个边(假定可构成三角形),求三角形的例3.7输入两个整数,将其值交换后输出。例如若变量a、b的值分别1、2,则交换后a的值为2,b的值为1。程序代码为:PrivateSubCommand1_Click()DimaAsInteger,bAsInteger,tAsInteger '声明变量a=Text1 '输入b=Text2t=a '将a的值赋给t,即t保存a的值a=b '将b的值赋给a,则a的值变为bb=t '将t的值赋给bLabel2="交换后的值为:"&a&","&b '输出EndSub3.1.4顺序结构应用程序举例例3.7输入两个整数,将其值交换后输出。例如若变量a、b的例3.8输入一个4位正整数,输出各位数字之和。例如若输入2134,则输出结果为10(即2+1+3+4)。程序代码为:PrivateSubCommand1_Click()DimxAsInteger,sAsInteger '声明变量DimaAsInteger,bAsIntegerDimcAsInteger,dAsIntegerx=InputBox("请输入一个四位正整数") '输入a=xMod10 '得到个位数b=x\10Mod10 '得到十位数c=x\100Mod10 '得到百位数d=x\1000 '得到千位数s=a+b+c+d '求和Printx;"的各位数字之和为:";s '输出EndSub3.1.4顺序结构应用程序举例例3.8输入一个4位正整数,输出各位数字之和。例如若输入23.2选择结构3.2.1If语句
3.2.2SelectCase语句3.2.3条件函数3.2.4选择结构程序设计举例3.2选择结构3.2.1If语句3.2.2在实际应用中,有许多问题是根据不同的条件来选择执行不同的操作。例如,根据成绩进行输出,当成绩为60分以上时,输出“合格”,小于60分时,则输出“不合格”。根据成绩值的不同,进行选择来执行不同的输出操作,这样的程序结构称为选择结构或分支结构。VisualBasic中通过If语句和SelectCase语句实现选择结构,它们都是对某个条件进行判断,而后选择执行不同的分支。3.2选择结构在实际应用中,有许多问题是根据不同的条件来选择执行不在选择结构中,可以根据程序分支的数目,分为单分支结构、双分支结构和多分支结构。If语句可实现单分支、双分支和多分支结构。
1.单分支结构单分支结构是指只有一个程序分支,只有满足指定的条件才能执行该程序分支的语句。If语句实现单分支结构,可有两种形式:形式1:
If表达式Then语句组EndIf形式2:
If表达式Then语句3.2.1If语句
真假语句(组)表达式
单分支结构流程图该语句在执行时,首先计算表达式,若表达式的值为真,则执行Then后面的语句组,若表达式的值为假,则跳过Then后面的语句,执行EndIf后面的语句。在选择结构中,可以根据程序分支的数目,分为单分支结构单分支结构的说明:1.表达式可为关系表达式、逻辑表达式或数值表达式。当表达式是数值表达式时,非零值表示True,0表示False。2.在形式1中,语句组可以为一条或多条语句。在形式2中,语句表示一条语句,若为多条语句,则必须使用冒号:进行分隔,即语句必须与Then写在同一行上。3.在形式1中,必须以EndIf语句结束;形式2为单行结构,要求语句都写在一行上,且不能以EndIf语句结束。3.2.1If语句
单分支结构的说明:3.2.1If语句
2.双分支结构双分支结构表示程序有两个分支,当满足给定条件时,执行分支1,否则执行分支2。If语句实现双分支结构也有两种语句形式:形式1:
If表达式Then语句组1Else语句组2EndIf形式2为:
If表达式Then语句1Else语句23.2.1If语句
该语句在执行时,首先计算表达式,若表达式的值为真,执行Then后面的语句组1(或语句1);否则跳过语句组1(或语句1),执行Else后面的语句组2(或语句2)。使用时应注意在形式1中的Else后不能增加表达式。假真语句(组)1语句(组)2表达式双分支结构流程图2.双分支结构3.2.1If语句该语句在执行时,
3.多分支结构在实际问题中常常会遇到多个条件,此时就要用到多分支。If语句实现多分支结构的形式为:
If表达式1Then语句组1ElseIf表达式2Then语句组2…ElseIf表达式nThen语句组nElse语句组n+1EndIf3.2.1If语句
假真真真……表达式1表达式n语句组1语句组2语句组n语句组n+1……多分支结构流程图表达式2假3.多分支结构3.2.1If语句假真执行多分支结构该语句时,首先计算表达式1,若表达式1的值为真,则执行语句组1,而后退出If语句,执行EndIf后面的语句;若表达式1的值为假,则计算表达式2;若表达式2的值为真,则执行语句组2,而后退出If语句,执行EndIf后面的语句;若表达式2的值为假,则计算表达式3;……;以此类推,若表达式n的值为真,则执行语句组n,而后退出If语句,执行EndIf后面的语句;若表达式n的值为假,则执行Else后面的语句组n+1,而后执行EndIf后面的语句。需要注意:⑴无论有几个分支,程序一旦执行了某一个分支则退出If语句,其余分支不再执行。⑵ElseIf子句的数量没有限制,可以根据需要使用任意多个ElseIf子句。⑶Else后不能有表达式,Else表示以上表达式均为假时则执行其下面的语句组。⑷Else及其后的语句组可以省略。⑸ElseIf不能写作ElseIf。3.2.1If语句
执行多分支结构该语句时,首先计算表达式1,若表达式14.If语句的嵌套在实现选择结构时,若各个分支的语句组中又包含另一个分支结构,则成为选择结构的嵌套。由于在If语句中又嵌套了另外的If语句,因此会形成更多的程序分支,所以,If语句的嵌套也可实现多分支结构。3.2.1If语句
If表达式1ThenIf表达式2Then 语句组1Else 语句组2EndIfElseIf表达式3Then语句组3Else语句组4EndIfEndIf内层内层外层两层嵌套的If语句4.If语句的嵌套3.2.1If语句If表达SelectCase语句也称为情况语句,是多分支结构的另一种表示形式。SelectCase语句的格式如下:SelectCase测试表达式Case表达式列表1语句组1Case表达式列表2语句组2……Case表达式列表n语句组nCaseElse语句组n+1EndSelect3.2.2SelectCase语句SelectCase语句的流程图┆FTFF表达式列表n语句组n+1┆语句组nT表达式列表2语句 组2T表达式列表1语句组1┆计算测试表达式的值SelectCase语句也称为情况语句,是多分支结SelectCase语句的功能是根据测试表达式的值,从多个语句组中选择符合条件的一个语句组执行。SelectCase语句的执行过程首先计算测试表达式的值,然后将计算的结果与每个Case后的表达式列表的值进行比较,如果有相匹配的,就执行该Case下面的语句组,执行完该语句组后则退出SelectCase语句,不再与后面的表达式列表比较;若测试表达式的值没有找到匹配项,则执行CaseElse语句后面的语句组,而后退出SelectCase语句;若无CaseElse,则直接退出SelectCase语句。3.2.2SelectCase语句SelectCase语句的功能是根据测试表达式的值说明:⑴测试表达式可以是各类表达式,还可以是常量、变量或对象属性值,通常为变量。⑵Case后的表达式列表的类型必须与测试表达式值的类型相同。表达式列表通常有四种形式:单个表达式、一组用逗号隔开的枚举值、某个范围及Is关系运算表达式。
⑶当有多个Case子句的值与测试表达式的值匹配时,只执行第一个与之匹配的语句组。
⑷CaseElse及其对应的语句组放在所有Case的表达式列表的下面,它们用于指定当测试表达式的值与所有表达式列表都不匹配时所执行的操作。
⑸Select表示SelectCase语句的开始,EndSelect表示SelectCase语句的结束,它们必须成对出现。
⑹语句组可由一行或多行语句组成,还可以是If语句或其他SelectCase语句等。3.2.2SelectCase语句说明:3.2.2SelectCase语句VisualBasic中提供了IIf条件函数用于实现简单的条件选择,它是双分支选择结构的另一种表达形式。IIf函数的格式为:
IIf(表达式1,表达式2,表达式3)IIf函数在执行时,首先计算表达式1的值,当表达式1的值为真时,计算表达式2的值,并将其作为IIf函数的返回值;当表达式1的值为假时,计算表达式3的值,并将其作为IIf函数的返回值。说明:三个表达式均不能省略,且可为任意表达式。3.2.3条件函数VisualBasic中提供了IIf条件函数用于实例3.19输入三个数,将其按从小到大的顺序输出。(P76)例3.20编写程序,输入年份,判断该年是否为闰年。(P77)例3.21编写程序,输入个人收入salary,计算个人所得税tax并输出。(P78)例3.22编写程序,输入数据与运算符(+、-、*、/),输出运算结果,实现加减乘除四则运算。若除数为0或运算符输入错误,则给出提示信息。(P78)3.2.4选择结构程序设计举例例3.19输入三个数,将其按从小到大的顺序输出。(P76)3.3循环结构3.3.1For循环语句
3.3.2Do循环语句3.3.3While循环语句3.3.4循环的强制退出3.3.5循环的嵌套3.3.6几种循环结构的比较3.3.7循环结构应用程序举例3.3循环结构3.3.1For循环语句3.在许多问题中,常常需要将某个程序段反复执行多次,如果在这类程序中安排多个重复的语句序列,就会使程序冗长并浪费计算机存储空间。为了解决这个问题,VisualBasic中提供了循环语句来实现程序段的多次反复执行,从而简化程序结构,节省计算机存储空间。在循环结构中需要反复执行的语句称为循环体。循环结构是结构化程序设计的三种基本结构之一,它和顺序结构、选择结构一起成为各种复杂程序的基本构造单元。在VisualBasic中,有两种类型的循环语句,一种是循环次数已知的循环语句,即For语句,一种是由条件控制的循环语句,相应的语句为Do语句和While语句。3.3循环结构在许多问题中,常常需要将某个程序段反复执行多次,如果For循环语句适用于循环次数已知的循环结构,其一般格式为:
For循环变量=初值To终值Step步长循环体Next循环变量
3.3.1For循环语句
For语句的执行过程为:首先将初值赋给循环变量,然后检查循环变量的值是否在初值到终值范围内,若超出了该范围,则结束循环,执行Next后面的语句;如果没有超过该范围,则执行一次循环体,而后将循环变量的值加上步长后再赋给循环变量,然后继续判断循环变量的值。循环体循环变量=循环变量+步长循环变量=初值FT循环变量是否在初值与终值的范围内For循环的执行过程For循环语句适用于循环次数已知的循环结构,其一般格说明:⑴For、To、Next、Step都是关键字。⑵循环变量是一个数值型变量,用于控制循环的次数。⑶初值、终值代表循环变量的初值和终值,可以是数值型常量或数值表达式。⑷步长是循环变量的增值,可以是数值型常量或数值表达式。步长的值可正可负,其取值与初值和终值有关。若步长为正,则初值必须小于终值,否则无法进入循环,步长值为1时可省略“Step1”;步长为负时,初值必须大于终值,否则无法进入循环;步长的值为0,则出现无限循环(即死循环),因此步长不能为0。⑸For和Next之间为循环体,它可以由一个或多个语句构成。⑹Next后的循环变量必须与For后的循环变量相同,也可省略不写。⑺循环次数由初值、终值和步长决定,计算公式为:
循环次数=INT((终值–初值)/步长+1)⑻当初值等于终值时,不论步长是正数还是负数,都执行一次循环体。3.3.1For循环语句
说明:3.3.1For循环语句For循环适用于循环次数已知的循环结构,而在很多实际问题中却无法预先确定循环次数,因此这类循环通常使用基于条件的循环语句。Do循环语句主要用于循环次数不确定的循环结构,通过循环条件来决定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年朔州陶瓷职业技术学院单招职业技能考试模拟测试卷附答案
- 2026年安徽省黄山市单招职业适应性测试题库附答案
- 2026年山西信息职业技术学院单招职业倾向性考试模拟测试卷附答案
- 2025年潇湘职业学院单招(计算机)测试备考题库附答案
- 2026年佳木斯职业学院单招职业适应性考试模拟测试卷附答案
- 2026年桂林山水职业学院单招职业技能测试模拟测试卷附答案
- 2026年新疆天山职业技术大学单招职业技能测试题库附答案
- 2026年基金从业资格证考试题库500道附完整答案【必刷】
- 2026年网络在线学法普法考试题库及完整答案(名师系列)
- 2026年交管12123学法减分复习考试题库附答案(巩固)
- 初中地理七年级上册第七章第四节俄罗斯
- 法院起诉收款账户确认书范本
- 15ZJ001 建筑构造用料做法
- 课堂观察与评价的基本方法课件
- 私募基金内部人员交易管理制度模版
- 针对低层次学生的高考英语复习提分有效策略 高三英语复习备考讲座
- (完整)《走遍德国》配套练习答案
- 考研准考证模板word
- 周练习15- 牛津译林版八年级英语上册
- 电力电缆基础知识课件
- 代理记账申请表
评论
0/150
提交评论