当前位置:首页 > 《算法与程序设计》复习提纲
Dim c, b, sum As Integer, a As Single List1.AddItem (\List1.AddItem (\sum = 0 For a = 3 To 100 ‘一一列举 For b = a + 1 To 100 ‘一一列举 c = ① If ② And c <= 100 Then ‘逐个作出判断 List1.AddItem (Str(a) & \ sum = sum + 1 End If Next b Next a Label1.Caption = \共有勾股数:\组\例如:百钱买百鸡问题(100元钱,要求买100只鸡),公鸡5元一只,母鸡3元一只,小鸡一元3只;每种鸡至少一只。 List1.AddItem (\公鸡 母鸡 小鸡\For i = 1 To 20 For j = 1 To 33 ① If ② Then List1.AddItem (Str(i) & \ End If Next j Next i 答案①:m = 100 - i – j 答案②:5 * i + 3 * j + m / 3 = 100 答案①:Sqr(a ^ 2 + b ^ 2) 答案②:Int(c) = c 习题:一张彩票上有一个5位数的编号,其千位数和百位数处已经变得模糊不清(如下)。但知道这个5位数是35或65的倍数。现设计下列算法,找出所有满足这些条件的5位数,并统计出这些5位数的个数。请在空白行处填写合适的VB语句或表达式,把程序补充完整。
NO. 3□□45 C=0 For j=0 To ① n=30045+100*j If (n Mod 35=0) or (n Mod 65=0) then ② Print \可能的一个数为:\ End if Next j Print \符合题意的数总数为:\习题:输出100-200间的所有不能被3整除的数并统计个数。 方法一:
Dim i, D As Integer For i = 100 To 200 If ① Then List1.AddItem (Str(i)) ②
12
答案①:99 答案②:c=c+1 答案①:i Mod 3 <> 0 答案②: D=D+1 End If Next i Print Str(D) 方法二:
Dim i,a,b,c, D As Integer ‘a为百位数,b为十位数 ,c为个位数 For i = 100 To 200 a= ① : b = ② : c = ③ If (a + b + c) Mod 3 <> 0 Then List1.AddItem (Str(i)) D = D + 1 End If Next i Print Str(D) 方法三:
Dim i, a, b, c, D As Integer For i = 100 To 200
a = Val(Left(Trim(Str(i)), 1)) b = Val(Mid(Trim(Str(i)), 2, 1)) c = Val(Right(Trim(Str(i)), 1)) If (a + b + c) Mod 3 <> 0 Then List1.AddItem (Str(i)) D = D + 1 End If Next i Print Str(D)
习题:求100-200间的所有素数
判断i是否为素数的方法:如果i不能被[2,答案①:a = i \\ 100 答案②:(i - a * 100) \\ 10或 (i Mod 100) \\ 10 答案③: i Mod 10 或 c = i - 100 * a i]之间任一个数整除,则i为素数。
13
开始 i=101 N 100
要点1:确定变量范围:100~999(即n从100变到999) 要点2: 确定问题的判断条件
n这个数具有从左往右看与从右往左看相等的特征
14
要点3:判断条件如何实现?
——要点是分离出各数位上的数(借助Int函数)
如n=456,则百位数字a = 4 a=Int(n/100) 或 a = n\\100
十位数字b = 5 b=Int((n-100*a)/10) 或 b=(n\\10) Mod 10 个位数字c = 6 c=n-100*a-10*b 或 c=n Mod 10 则,组装n的逆序数n1 =c*100 + b*10 + a 然后判断n=n1? 对应程序:
gs=0 '变量gs存放回文数个数 For n=100 To 999 '寻找范围:100~999 a=Int(n/100) '得到n的百位数字 b=Int((n-100*a)/10) '得到n的十位数字 c=n-100*a-10*b '得到n的个位数字 n1=100*c+10*b+a '组装生成n的逆序三位数 If n=n1 Then '如果n和n的逆序三位数相等 gs=gs+1 '统计回文数的个数
List1.AddItem Str(n) '将回文数添加到列表框1中 End If Next n
Text1.Text = Str(gs) '将回文数个数写到文本框中
习题『高考2010年3月卷』:一个十进制整数的二进制表示中,如果数字“1”的个数多于数字“0”的个数,则称该整数为A类数,如十进制26的二进制表示为11010,26是一个A类数,下列VB程序的功能是:统计前1000个自然数中A类数的个数,并在文本框中输出。请在划线处填入合适代码。 Private Sub Command1_Click() Dim i As Integer, n As Integer Dim s As Integer 's为A类数的个数
Dim t As Integer 't为二进制数中“1”的个数 Dim k As Integer 'k为二进制数中“0”的个数 s = 0
For i = 1 To ① n = i t = 0 k = 0
Do While n > 0
If n Mod 2 = 1 Then t = t + 1 Else k = k + 1 n = n \\ 2 Loop
If ② Then s = s + 1 Next i
Text1.Text = Str(s) End Sub
答案①:1000 ;答案②:t>k
习题:马克思在研究无产阶级革命学说的同时也很重视数学科学学习,他的数学手稿中有这样一道题:有30个人,其中有男人、女人、小孩,在一家小饭馆里花50先令,每个男人3先令,每个女人2先令,每个小孩1先令,为计算男人、女人、
15
共分享92篇相关文档