发布时间 : 星期六 文章教材习题及答案更新完毕开始阅读f3615d5e76c66137ee0619e6
最大和为20。
9. 数论中有许多猜想尚未解决,其中有一个被称为“角谷猜想”的问题,这个问题是
这样描述的:任何一个大于一的自然数,如果是奇数,则乘以三再加一;如果是偶数,则除以二;得出的结果继续按照前面的规则进行运算,最后必定得到一。现在请你编写一个程序验证。
10. 某部队进行新兵队列训练,将新兵从1开始按顺序依次编号,并排成一行横队,训
练的规则如下:从头开始1至2报数,凡报到2的出列,剩下的向小序号方向靠拢,再从头开始进行1至3报数,凡报到3的出列,剩下的向小序号方向靠拢,继续从头开始进行1至2报数,以后从头开始轮流进行1至2报数、1至3报数直到剩下的人数不超过三人为止。编写程序,输入数N为最开始的新兵人数(20 11. 在医院打点滴(吊针)的时候,如果滴起来有规律,先是滴一滴,停一下;然后滴 二滴,停一下;再滴三滴,停一下...,现在有一个问题:这瓶盐水一共有v毫升,每一滴是d毫升,每一滴的速度是一秒(假设最后一滴不到D毫升,则花费的时间也算一秒),停一下的时间也是一秒,这瓶水什么时候能滴完呢?(0 第7章习题答案 ‘—1— Module Module1 Sub Main() Dim sArray() As Integer = {12, -78, 67, 23, 2, 99, 234, -23, 45, 56, 12, 78} '在屏幕上显示数组 Show(sArray) '排序并显示排序后的结果 Console.WriteLine(\数组排序...\ Bubble(sArray) '显示排序后的结果 Show(sArray) End Sub '在屏幕上显示数组 Sub Show(ByVal sArray() As Integer) For Each k As Integer In sArray Console.Write(k.ToString() + \ Next Console.WriteLine() End Sub '冒泡排序算法 Sub Bubble(ByVal sArray() As Integer) '得到数组的大小 Dim length As Integer = sArray.GetLength(0) For i As Integer = 0 To length - 1 For j = length - 1 To i + 1 Step -1 If sArray(j) < sArray(j - 1) Then '交换 Dim temp As Integer = sArray(j) sArray(j) = sArray(j - 1) sArray(j - 1) = temp End If Next Next End Sub End Module ‘—2— '冒泡排序算法 Sub Bubble(ByVal sArray() As Integer) '得到数组的大小 Dim length As Integer = sArray.GetLength(0) For i As Integer = 0 To length – 1 Dim change As Boolean=true For j = length - 1 To i + 1 Step -1 If sArray(j) < sArray(j - 1) Then '交换 Dim temp As Integer = sArray(j) sArray(j) = sArray(j - 1) sArray(j - 1) = temp change=false End If Next If change then Exit For EndIf Next End Sub ‘—3— Module Module1 Sub Main() Dim A() As Integer = {50, 39, 64, 90, 72, 12, 29} Console.WriteLine(\排序前:\ '显示A数组 Show(A) '排序 QkSort(A, 0, A.GetLength(0) - 1) Console.WriteLine(\排序后:\ Show(A) End Sub '显示数组的A数据 Sub Show(ByVal A() As Integer) For Each k As Integer In A Console.Write(k.ToString() + \ Next Console.WriteLine() End Sub ' 快速排序 'A是待排序的数组 'i和j指示了对数组从i到j处的数据进行排序,i Sub QkSort(ByVal A() As Integer, ByVal i As Integer, ByVal j As Integer) If i < j Then '对数组A调用QkPass函数进行一趟快速排序。 'i和j指示了排序的起始和终了位置(下标) '返回值指示了一趟排序后的分割点 Dim k = QkPass(A, i, j) '对前一部分继续快速排序,递归调用 QkSort(A, i, k - 1) '对后一部分快速排序 QkSort(A, k + 1, j) End If End Sub '一趟快速排序的函数,对数组A从i到j快速排序,并返回分割点 Function QkPass(ByVal A() As Integer, ByVal i As Integer, ByVal j As Integer) As Integer '存储关键字 Dim key As Integer = A(i) While i < j While i < j And A(j) >= key j = j - 1 '从后向前搜寻比key小的值 End While A(i) = A(j) '找到后放入A(i) While i < j And A(i) <= key i = i + 1 '从前向后搜寻比key大的值 End While A(j) = A(i) '找到后放入A(j) End While '循环结束时,i=j,放入key值,并返回i A(i) = key Return i End Function End Module ‘—4— Function QkPass(ByVal A() As Integer, ByVal i As Integer, ByVal j As Integer) As Integer Dim ro As Random=new Random() Dim r As Integer=ro.Next(i,j+1) '存储关键字 Dim key As Integer = A(i) A(i)=A(r) A(r)=key key=A(i) While i < j While i < j And A(j) >= key j = j - 1 '从后向前搜寻比key小的值 End While A(i) = A(j) '找到后放入A(i) While i < j And A(i) <= key i = i + 1 '从前向后搜寻比key大的值 End While A(j) = A(i) '找到后放入A(j) End While '循环结束时,i=j,放入key值,并返回i A(i) = key Return i End Function End Module ‘—5— Module Module1 Structure Address