16.現(xiàn)有n根棍子,第i根棍子的長度為ai.想要從中選出三根棍子組成周長盡可能長的三角形,輸出最大的周長;若無法組成三角形,則輸出0.如當n=5,a={2,3,4,5,10}時,輸出12,即選擇了3、4、5.當n=4,a={4,5,10,20}時,無法組成三角形,輸出0.加框處代碼有誤,請改正. Dim a( 1To 1000)As Integer Dim n As Integer Private Sub Form_Load ( ?。?br />‘確定n的值和數(shù)組a的各個元素值,即每根棍子的長度值,代碼略 End Sub Function max(x As Integer,y As Integer) As Integer If x>y Then max=x Else Max=y End If End Function Private Sub Command1_Click ( ?。?br />Dim i As Integer,j As Integer,k As Integer Dim ans As Integer,c As Integer,longest As Integer,rest As Integer ans=0 ‘讓i<j<k,保證棍子不會重復選中 For i=1To n For j=i+1 To n For k=j+1 To n c=a(i)+a(j)+a(k) longest=‘① rest=c-longest‘rest保存最短的兩條邊的和 If Then‘② ans=max(ans,c) End If Next k Next j Next i Print ans End Sub.
17.一個考古學家在尋找外星生物曾到過地球的證據(jù).他偶然發(fā)現(xiàn)一面破損的墻上有一串奇怪的數(shù)字,數(shù)字長度不超過9位數(shù),左側(cè)是完整的,而很多數(shù)字的右側(cè)部分因石頭被腐蝕而極難辨認.他發(fā)現(xiàn)保存完好的數(shù)都是2的冪,于是他猜測所有數(shù)都是2的冪.為了證明他的結(jié)論,他選取了一份數(shù)的清單,每個數(shù)中清晰可辨的數(shù)字個數(shù)總是嚴格小于模糊不清的數(shù)字個數(shù).請你為這些數(shù)找出一個盡量小的2的冪,使得它左側(cè)的數(shù)字和清單吻合. 以下程序,在Text1中輸入一個清單中的數(shù)n,單擊按鈕Command1后在Label中輸出一個最小的指數(shù)x(若存在),使得2x從最高位開始的若干個數(shù)字等于n.如:輸入10,則找到最小的x=20,即220=1048576的前兩位與輸入數(shù)相同;而x=10的結(jié)果1024長度不符.如果在給定條件內(nèi)找不到這樣的指數(shù)x,則輸出“No Power of 2”. 'power函數(shù)的功能與2^n一致,只不過它的返回值是String類型而不是整數(shù)型 Function power(n As Integer) As String Dim res As Long res=2^n power=Trim(Str(res))‘trim ( )函數(shù)的作用是去掉字符串左右的空格 End Function 'check ( ?。┖瘮?shù)用于檢測前幾位數(shù)和長度是否符合要求,符合要求返回為True Function check(x_power As String,n As String) As Boolean Dim length As Integer,x_power_len As Integer length=Len(n) x_power_len=Len( x_power) If Mid(x_power,1,length)=n And
Then check=True Else check=False End If End Function Private Sub Commandl_Click ( ?。?br />Dim n As String,i As Integer,x As String n=Textl.Text i=0 x=power(i) Do While Len(x)<10And ② i=i+1 x=power(i) Loop If Len(x)<10Then Labell.Caption=“2的”& ③ & “次方的前幾位是”& n &“,符合要求” Else Label1.Caption=“No Power of 2” End If End Sub.