关于vb的二三事(1)

  其实作为一名oier,不刷dp写vb,好像有点不务正业。。。

  但是既然有小伙伴问,那就总结一下吧,拯救我终将逝去的信息课。

例1.

(打开文件“工程1.vbp”,完善程序。)编程运行时在文本框text1中输入行数n(n<10) 单击命令按钮“计算”,然后在窗体上清屏并输出n行数字直角三角形图案(如图所示)。

 

 

'注意:不要删除注释;完善程序时删除下划线

'要求:完善程序的填空,并调试运行和保存

 

Private Sub Command1_Click()
Cls '清屏
Dim i, j, n As Integer '定义整数 i,j,n
n = Val(Text1.Text) '给n赋值
For i = 1 To n '循环开始,从i=1一直做到i=n时停止,step默认等于1,也就是i值每做一次循环在原来的基础上+1
  For j = 1 To i '第二层循环,从j=1一直做到j=i
    Print Str(j); '第二层循环的内容,打印j值,Str()可以使输出更整洁,
  Next j '第二层循环结束,j=j+1,再进入第二层循环,在进入第二层循环时做一次判断,判断是否满足j<=n,不满足则跳出循环
  Print '换行
Next i '第一层循环结束,其余同上
End Sub

*本题主要考察了循环的嵌套,从结构上看,内循环(for j)是外循环的循环体,它的执行过程仍要遵循循环语句的执行原则。首先执行外层循环,即i由1至n执行n次。外层循环每执行一次,内层则执行一个完整的循环,即执行i次,循环体(即输出i, j的值)共执行i*n次。

例2.

(打开文件“工程1.vbp”,完善程序。)编程运行时在文本框text1中输入行数n(n<10且n为奇数) 单击命令按钮“确定”,然后在图像框picture1上输出n行实心数字菱形图案(如图所示)。

 

'注意:不要删除注释;完善程序时删除下划线

'要求:完善程序的填空,并调试运行和保存

思路分析:观察菱形,可以发现n与只菱形中间的那一列有关系,那么我们可以令中间一行的值为i,枚举i值,也就是行号,在菱形的上半部分,i的值从1递增至n/2+1,打印菱形时,先打空格,以第一行为例,先打印2*(n-i)个空格(为什么呢,由于加了 Str()这个函数,每次输出字符时会占两个位置,也就是说每次输出一个字符时会多输出一个空格,中间一列前面的数字的个数为n-i,加上空格数就成了2*(n-i)),再打数字,再重复前面打空格的过程。由于数字后面只有空格并没有其他内容,所以我们可以直接进入下一行,也就是直接进入i的下一层循环。打印数字可以分为两个部分,先令j=1,前半部分从j=1一直打到j=i,j值每次+1也就是中间一列的值,后半部分从j=i-1一直做到j=1,j值每次减1。通过这个过程打印出每一行“空格——递增序列——递减序列——空格”,每一行都如此,以此类推。打完上半部分在反过来打下半部分,同理。

 

Private Sub Command1_Click()
Dim
n, i, j As Integer '定义整数n,i,j n = Val(Text1.Text) '给n赋值 If n Mod 2 = 0 Then '判断n是否为奇数,不是则执行下一行语句 MsgBox ("输入的行数n必须为奇数!") End End If n = n \ 2 + 1 For i = 1 To n '打印菱形的上半部分
For j = 1 To 2 * (n - i) Picture1.Print " ";'打印每一行数字前的空格
 Next j For j = 1 To i Picture1.Print Str(j);'打印数字的前半部分
Next j For j = i - 1 To 1 Step -1 Picture1.Print Str(j);'打印数字的后半部分
Next j Picture1.Print'换行,若不换行会出现“ 1 121 12321 1234321”的情况
Next i'进入下一层循环

For i = n - 1 To 1 Step -1'打印菱形的下半部分 For j = 1 To 2 * (n - i) Picture1.Print " "; Next j For j = 1 To i Picture1.Print Str(j); Next j For j = i - 1 To 1 Step -1 Picture1.Print Str(j); Next j Picture1.Print Next i End Sub

考点仍然是循环的嵌套,重点在于菱形中间的一列,作为循环的判断条件(不想每一行都写注释了啊ToT)

Tips:

逗号:用在print语句中,以标准格式用来分隔各输出项,即每个输出项的宽度占18个字符位置,这样每行分成四个区.
分号:也用在print语句中,以紧凑格式用来分隔各输出项,输出的字符之间留一个空格位,输出的数值之间除留一个空格位外还留一个符号位.
冒号:用在语句之间,将一个物理行分成多个逻辑行(即多个语句占一行,其间用冒号分隔)

运算符"\"表示向下取整的除法,而"/"同数学中除法

例3.

打开文件“工程1.vbp”,完善程序。)编程运行时在文本框text1中输入行数n(n<=10) 单击命令按钮“确定”,然后在图像框picture1上输出n行杨辉三角图案(如图所示)。

 

Private Sub Command1_Click()
Dim n, i, j, a(15, 15) As Integer '此处定义的a(15,15)为数组,还是二维的/无奈
n = Val(Text1.Text)
If n > 10 Then '判断n值
  MsgBox ("输入的行数n不能大于10")
  End
End If
For i = 1 To n '数组清空,将数组所有值赋为1
   a(i, 1) = 1
   a(i, i) = 1
Next i
For i = 3 To n
   For j = 2 To n - 1
     a(i, j) = a(i - 1, j - 1) + a(i - 1, j)
   Next j
Next i
For i = 1 To n
  For j = 1 To n - i
    Picture1.Print " ";
  Next j
  For j = 1 To i
    Picture1.Print Str(a(i, j));
  Next j
  Picture1.Print
Next i
End Sub

考点由循环嵌套加了一个二维数组(天知道出题人是不是脑子坏掉了考这么难的东西)

那么来介绍一下数组

一维数组:举个例子,定义一个一维数组a(15),就相当于开了15个房间用来存放数字,a(i)里的i是房间编号,a(i)的值是房间里存放的数字

二维数组:a(i,j)相当于一个i行j列的矩阵/表格,在每一个格子中存数,原理同一维数组

 

Tips:数组的编号和数组里存放的数不是一个东西

posted @ 2017-06-20 19:07  mljkw_gsry  阅读(807)  评论(1编辑  收藏  举报