教材习题及答案 联系客服

发布时间 : 星期六 文章教材习题及答案更新完毕开始阅读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