第一篇:VB編程題及答案
1定義一個下標上界為10整型數組,并用隨機函數為其賦值(值處于[0,100]之間),計算數組中所有偶數的和。Private Sub Command1_Click()Randomize Dim a%(10)Dim i%, s% For i = 0 To 10 a(i)= 101 * Rnd()Next For i = 0 To 10 If a(i)Mod 2 = 0 Then s = s + a(i)End If Next Print “所有偶數的和為”, s 2 設 S=35,C=0.3,編寫程序,計算并輸出下面級數的部分和。結果取小數點后面7位。C/1!-C^3/3!+C^5/5!-? +(-1)^(S-1)*C^(2*S-1)/(2*S-1)!+ ?
參考答案如下:
Private Sub Command1_Click()
Dim n As Integer
Dim x As Double
x = 0.3
Dim item As Double
Dim sum As Double
Dim fac As Double
For n = 1 To 35
fac = 1
Dim i As Integer
For i = 1 To 2 * n1)* x ^(2 * n1
If n Mod i = 0 Then
isprime = False
Exit Function
End If
Next
isprime = True End Function Private Sub Command1_Click()
Dim i As Integer
Dim sum As Long
For i = 1000 To 2000
If isprime(i)= True Then
sum = sum + i
End If
Next
Text1.Text = “sum=” & sum End Sub 'sum= 419684 13.編寫一個函數,求某個數的階乘。
調用該函數計算22!。
Public Function fact(ByVal n As Integer)As
Long
Dim i As Integer, f As Long
f = 1
For i = 1 To n
f = f * i
Next i
fact = f End Function Private Sub Command1_Click()
Dim m As Integer, i As Integer, s As Long
m = InputBox(“輸入一個正整數:
”)
s = fact(m)
MsgBox(s)End Sub ‘479001600 14.編寫子過程,計算并輸出3000-4000之間的素數之和C與其中最小的素數MIN。
Private Sub Command1_Click()
Dim sum, i, min As Integer
min=0
For i = 3000 To 4000
Dim isprime As Boolean = True
Dim j As Integer
For j = 2 To i1)* n *(n + 1)
sum = sum + item
n = n + 2
Loop While Abs(sum)<= 100
MsgBox(sum)End Sub 'sum=-68 編寫一個函數,其功能為求兩個數的最大公約數。
Public Function
gcd(ByVal m As Integer, ByVal n As Integer)As Integer
Dim i As Integer If m > n Then Dim t As Integer t = m: m = n: n = t End If For i = m To 1 Step-1 If m Mod i = 0 And n Mod i = 0 Then gcd = i Exit Function
End If
Next End Function
20.用InputBox輸入一個年份,判斷該年份是否是平年,若是則輸出“Yes”,否則輸出“No”。
Dim year As Integer year = Val(InputBox(“"))If(year Mod 400 = 0)Or(year Mod 4 = 0 And year Mod 100<>0)
Then MsgBox(”No“)Else
MsgBox(”Yes“)
End If 輸入兩個整數m、n,編寫程序使得
m>=n,并輸出m、n的值。
Dim m, n As Integer
m = Val(InputBox(”“))n = Val(InputBox(”“))
If m < n Then Dim t As Integer t = m : m = n : n = t End If
MsgBox(”m=“ & m & ”;“ & ”n=“ & n)
22求下面級數前n項的和S,在求和
過程中,當某項(注意,該項參與求和)的絕對值小于0.0001 時求和終止。結果取 5 位小數。
1-1/3+1/5-1/7+1/9-1/11+ ? +(-1)^(n-1)*1/(2n-1)+ ?
Private Sub Command1_Click()
Dim n As Integer
Dim item As Double
Dim sum As Double
i = Do While True
item =(-1)^(i1)
整數:”)sum = sum + item If Abs(item)< 0.0001 Then Exit Do Else i = i + 1 End If Loop
MsgBox(Format(sum, “0.0000”))
End Sub '
sum=0.78545 編寫一個函數,其功能為判斷一個3位正整數是否是“水仙花數”。(“水仙花數”是指各位數字的立方和與該數相等,如153=1^3+5^3+3^3,153就是水仙花數。)
Public Function Panduan(ByVal x As Integer)As Boolean
Dim a As Integer, b As Integer, c As Integer
a = x 100
b =(x Mod 100)10
c = x Mod 10
If x = a ^ 3 + b ^ 3 + c ^ 3 Then
Panduan = True
Else
Panduan = False
End If
End Function Private Sub Command1_Click()
Dim i As Integer
i = InputBox(“輸入一個3位正
MsgBox(Panduan(i))End Sub 定義一個下標上界為10整型數組,并為其賦值(值處于[0,100]之間),計算數組中所有不小于60的數據的和。
Dim a(10), i, sum As Integer
For i = 0 To 10
a(i)= Int(Rnd()* 101)
Next
For i = 0 To 10
If a(i)〉=60 Then
sum = sum + a(i)
End If
Next
print sum
25.編寫程序,求下面級數前n項的和s=1/1!-1/2!+1/3!-1/4!+....+(-1)^(n-1)*1/n!+.....。
'求和過程當某一項的絕對值小于0.0001時結束(注意,該項參與求和),計算并輸出所求的s,要求結果保留6位小數。Private Sub Command1_Click()
Dim m As Double, n As Long, s As Double, f As Integer
s = 0: n =-1: m = 1: f = 1 Do While 1 / m >= 0.0001 m = m * f f = f + 1 n =-n
s = s + n / m Loop
s = Format(s, ”0.000000“)Print s End Sub
26輸入一個四位數,分別輸出它的個位數字,是十位數字,百位數字,千位數字。Private Sub Command1_Click()Dim a%, j%, k%, i%, m% a = InputBox(”請輸入一個四位整數“)j = a 1000 k = a 100 Mod 10 i = a 10 Mod 10 m = a Mod 10 Print ”個位數字;“;m Print ”十位數字;“;i Print ”百位數字;“;k Print ”千位數字;“;j End Sub 6.計算sum=2!+4!+6!+...+10!Private Sub Command1_Click()Dim a%, i% Sum = 0 i = 1: a = 1 Do a = 2 * i If i Mod 2 = 0 Then Sum = Sum + a End If i = i + 1 Loop While i <= 10 Print Sum End Sub
27編寫程序,計算并輸出下面級數前n項(n=20)中奇數項的和。1*2*3-2*3*4+3*4*5-4*5*6+....+(-1)^(n-1)*n*(n+1)*(n+2)+...Private Sub Command1_Click()Dim s!, i% For i = 1 To 20 Step 2 s = s + i *(i + 1)*(i + 2)Next MsgBox(s)End Sub
28隨機輸出一個小寫字母。Private Sub Command1_Click()Dim a As String Randomize
a = Chr(Int(97 + 26 * Rnd))MsgBox(a)End Sub、29編寫程序,計算并輸出下面級數前n項(n=50)中偶數項的和。s=1*2+2*3+3*4+4*5+....+n*(n+1)+.....Private Sub Command1_Click()Dim s!, i%
For i = 2 To 50 Step 2 s = s + i *(i + 1)Next
MsgBox(s)End Sub
30斐波那契數列是由計算某類動物繁殖增長量而提出的。數列的前兩項是1、1,以后的每一項都是其相鄰前兩項的和。編寫程序求:數列前30項和。
Private Sub Command1_Click()Dim a&, b&, c&, i%
a = 1: b = 1: c = 2: Sum = 0 For i = 1 To 28 c = a + b a = b b = c
Sum = Sum + c Next
MsgBox(Sum)End Sub
31輸入三個數a、b、c,編寫程序使得a<=b<=c,并輸出a、b、c的值。Private Sub Command1_Click()Dim a%, b%, c%, t%
a = Val(InputBox(”請輸入a的值!“))b = Val(InputBox(”請輸入b的值!“))c = Val(InputBox(”請輸入c的值!“))If a > b Then t = b b = a a = t End If
If a > c Then t = a a = c c = t End If If b > c Then t = b b = c c = t End If
Print a, b, c End Sub 32編寫程序,設n=20,x=3.4,計算并輸出S(n)的值,要求結果保留5位小數。S(n)=Inx/x+In2x/x^2+In3x/x^3+.....+In(n*x)/x^n+.....Private Sub Command1_Click()Dim x#, i% Dim S(20)As Double n = 20 x = 3.4 For i = 1 To 20 S(20)= S(20)+ Log(i * x)/(x ^ i)Next Print Format(S(20), ”0.00000“)End Sub
33輸入任意三個數 找出其中最大的數 Private Sub Command1_Click()Dim a!, b!, c!, Max!a = Text1.Text b = Text2.Text c = Text3.Text Max = a If b > Max Then Max = b If c > Max Then Max = c Text4.Text = Max End Sub
輸出1到100之間的素數 Print 1;2;a = 3 While a <= 100 i = 2
While i < a
If a Mod i = 0 Then
i = a
End If
i = i + 1
Wend
If i = a Then
Print a;
End If a = a + 1 Wend、34打印斐波那契數列20項 Private sub form_click()A=0 B=1
Text1.text=text1.text&str(A)&str(B)&chr(13)& Chr(10)For i=1 to 9 A=A+B B=A+B
Text1.text=text1.text&str(A)&str(B)&chr(13)& Chr(10)Next i
35判定素數
A=val(inputbox(“input a”))For i=2 to a
If(a mod i=0)then Exit for End if Next i
If i 36求sum 1+(1+2)+(1+2+3)………….n = Val(Text1.Text)sum = 0 For i = 1 To n sum1 = 0 For j = 1 To i sum1 = sum1 + j Next j sum = sum + sum1 Next i Text2.Text = sum 37求50名學生的平均成績并統計高于平均分的人 Dim c(1 to 50)as integer Dim p!,n%,i% P=0 For i=1 to 50 C(i)=inputbox(“請輸入第”&i&”位學生的成績” P=p+c(i)Next i P=p/50 N=0 For i= 1 to 50 If c(i)>p then n=n+1 Next i Print “平均分=”;”高于平均分的人數=”;n 設C=0.3,編寫程序,計算并輸出下面級數的部分和。結果取小數點后面7位。C/1!-C^3/3!+C^5/5!-? +(-1)^(S-1)*C^(2*S-1)/(2*S-1)!+ ? Dim n as integer Dim x as integer X=0.3 Dim item as double Dim sum as double Dim fact as double For n=1 to 35 Fact=1 Dim I as integer For I =1 to 2*n-1 Fact=fact*i Next Item =(-1)^(n-1)*x^(2*n-1)/fact Sum=sum+item Next Sum=int(sum*10000000+0,.5)/100000000 Magbox 39已知A、B為整數A和B的立方和為1000求所有的A、B。 Dim x ,y as integer For x=0 to10 For y=0 to10 If x^3+y^3=1000 then Msgbox(x=;y=) 定義一個下標上界為30的單精度數組,設置好其初值(值處于[20,90]),計算數組中所有元素的均值。Dim array(30)as single For i=0 Array(i)=20+int(rnd()*71)Next i Dim sum% For i=0 to 30 Sum=sum+array(i)Next i Print sum 31 End sum 41求下面級數前S項中奇數項的和sum。在求和過程中,以第一個奇數項的數值大于 10000 的項為末項。1!-2!+3!-4!+ ? +(-1)^(S-1)*S!+ ? Dim n as integer Dim item double Dim I as integer Dim sum as double Dim abs as double Do while true Item =1 For I =1 to n Item = item*1 Next i Sum=sum +item N=n+2 If abs(item)>10000 then Exit do Else N=n+2 End if Loop Msgbox(sum) 42計算sum=1/1!+1/2!+1/3!+....+1/10!Private Sub Command1_Click()Dim m As Integer, n As Long, s As Double n = 1 s = 0 For m = 1 To 10 n = n * m s = s + 1 / n Next Print s 42求從[j,s]區間內的素數及素數和(這里需要用到三個文本框和2個按鈕)'Private Sub Command1_Click()Dim n%, i%, j%, s% Sum = 0 j = Val(Text1.Text())s = Val(Text2.Text())For n = j To s For i = 2 To n1 Then Sum = Sum + n: Print n Next n Text3.Text = Sum End Sub Private Sub Command2_Click()Cls Text1.Text = ”“ Text2.Text = ”“ Text3.Text = ”“ Text1.SetFocus End Sub 43某分段函數描述如下:(1)當x為偶數時,y的值為x的二分之一。(2)當x為奇數時,y的值為x的二倍。Private Sub Command1_Click()Dim x!, y!x = Val(InputBox(”請輸入X的值!“)) If x Mod 2 = 0 Then y = x / 2 Else y = 2 * x MsgBox(y)End If End Sub 44隨機輸出一個小寫字母。Private Sub Command1_Click()Dim a As String Randomize a = Chr(Int(97 + 26 * Rnd))MsgBox(a)End Sub、45編寫程序,計算并輸出下面級數前n項(n=50)中偶數項的和。s=1*2+2*3+3*4+4*5+....+n*(n+1)+.....Private Sub Command1_Click()Dim s!, i% For i = 2 To 50 Step 2 s = s + i *(i + 1)Next MsgBox(s)End Sub 46編寫程序,設n=20,x=3.4,計算并輸出S(n)的值,要求結果保留5位小數。S(n)=Inx/x+In2x/x^2+In3x/x^3+.....+In(n*x)/x^n+.....Private Sub Command1_Click()Dim x#, i% Dim S(20)As Double n = 20 x = 3.4 For i = 1 To 20 S(20)= S(20)+ Log(i * x)/(x ^ i)Next Print Format(S(20), ”0.00000“)End Sub 47設 S=35,C=0.3,編寫程序,計算并輸出下面級數的部分和。結果取小數點后面7位。C/1!-C^3/3!+C^5/5!-? +(-1)^(S-1)*C^(2*S-1)/(2*S-1)!+ ? 參考答案如下: Private Sub Command1_Click() Dim n As Integer Dim x As Double x = 0.3 Dim item As Double Dim sum As Double Dim fac As Double For n = 1 To 35 fac = 1 Dim i As Integer For i = 1 To 2 * n1)* x ^(2 * n1 fac = fac * i Next item =(-1)^(n1)/ fac sum = sum + item Next sum = Int(sum * 10000000 + 0.5)/ 10000000 MsgBox(sum)End Sub ' sum = 0.479426 49編寫子過程,計算并輸出3000-4000之間的素數之和C與其中最小的素數MIN。 Private Sub Command1_Click() Dim sum, i, min As Integer min=0 For i = 3000 To 4000 Dim isprime As Boolean = True Dim j As Integer For j = 2 To ia(1))*(pa(3)))MsgBox(s)Else MsgBox(”不能構成三角形")End If End Sub 循環部分 1.求自然數1~100之間奇數之和。 2.求自然數1~100之間偶數之和。 3.編程計算從200到1000之間的所有4的倍數之和。 4.編程計算從300到1000之間的所有7的倍數之和。 5.編寫程序在窗體上顯示出:5/6+4/5+3/4+2/3+1/2 6.編寫程序,通過InputBox函數從鍵盤上輸入4個數,計算并在窗體上顯示這4個數的和及平均值。 7.在窗體的單擊事件過程中,編寫程序計算1!+2!+3!+ ? +20! 8.有一個窗體,窗體中有一個文本框,名稱為Text1,有一個按鈕,試編寫按鈕的單擊事件,實現計算1!+2!+3!+?+10!,將結果顯示在文本框Text1中。(或參照 7 用教材:P86 [例4-21] 方法) 9.編寫程序計算:s=1+1/2!+1/3!+?+1/n!,說明:在窗體中有一個文本框控件:Text1,用來接收n的值,有一個標簽控件:Label1,用來顯示S的值,試編寫窗體的單擊事件,實現計算與顯示功能,只要求寫出事件的主要代碼,事件過程的起始語句和結束語句可略去。(或 參照7 用教材:P87 [例4-22] 方法) 10.編寫程序,在窗體上輸出由1、2、3、4、5這五個數字組成的所有可能的兩位數,并統計它們的個數。 說明: 程序中紅色標示的部分 控制 每行輸出5個數 11.求s=a+aa+aaa+?+aaa?aaa(n個a),其中a和n的值由用戶自己輸入。例如,當a=3,n=4時,S=3+33+333+3333。 12.在窗體上輸出下三角的九九乘法表。 13.編寫程序,將26個字母逆序輸出。 14.編寫程序,將字符串“山高人為峰”按逆序“峰為人高山”輸出。 15.設紙的厚度為0.5毫米,將紙對折,再對折?,求至少對折多少次,紙張的厚度能達到珠穆朗瑪峰的高度8848米。 16.編寫程序,求s的值,s=1×2×3+2×3×4+?+n×(n+1)×(n+2)的值。n由程序輸入。 17.編寫一個程序,用戶連續輸入N個值,直到輸入非數值數據為止。最后輸出其中最大的一個數。 18.編寫程序,輸入一個數,判定該數是否為素數,如果是素數,則輸出“該數是素數”的信息,否則輸出“該數不是素數”的信息。 1.抓交通肇事犯 一輛卡車違反交通規則,撞人后逃跑。現場有三人目擊事件,但都沒有記住車號,只記下車號的一些特征。甲說:牌照的前兩位數字是相同的;乙說:牌照的后兩位數字是相同的,但與前兩位不同; 丙是數學家,他說:四位的車號剛好是一個整數的平方。請根據以上線索求出車號。*問題分析與算法設計 按照題目的要求造出一個前兩位數相同、后兩位數相同且相互間又不同的整數,然后判斷該整數是否是另一個整數的平方。*程序說明與注釋 #include Lorry _No.is 7744 2.百錢百雞問題 中國古代數學家張丘建在他的《算經》中提出了著名的“百錢買百雞問題”:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問翁、母、雛各幾何? *問題分析與算法設計 設雞翁、雞母、雞雛的個數分別為x,y,z,題意給定共100錢要買百雞,若全買公雞最多買20只,顯然x的 值在0~20之間;同理,y的取值范圍在0~33之間,可得到下面的不定方程: 5x+3y+z/3=100 x+y+z=100 所以此問題可歸結為求這個不定方程的整數解。由程序設計實現不定方程的求解與手工計算不同。在分析確定方程中未知數變化范圍的前提下,可通過對 未知數可變范圍的窮舉,驗證方程在什么情況下成立,從而得到相應的解。*程序說明與注釋 #include for(x=0;x<=20;x++)/*外層循環控制雞翁數*/ for(y=0;y<=33;y++)/*內層循環控制雞母數y在0~33變化*/ { z=100-x-y;/*內外層循環控制下,雞雛數z的值受x,y的值的制約*/ if(z%3==0&&5*x+3*y+z/3==100)/*驗證取z值的合理性及得到一組解的合理性*/ printf(“%2d:cock=%2d hen=%2d chicken=%2dn”,++j,x,y,z);} } 3.三色球問題 若一個口袋中放有12個球,其中有3個紅的。3個白的和6個黒的,問從中任取8個共有多少種不同的顏色搭 配? *問題分析與算法設計 設任取的紅球個數為i,白球個數為j,則黒球個數為8-i-j,根據題意紅球和白球個數的取值范圍是0~3,在紅球和白球個數確定的條件下,黒球個數取值應為8-i-j<=6。*程序說明與注釋 #include 馬克思手稿中有一道趣味數學問題:有30個人,其中有男人、女人和小孩,在一家飯館吃飯花了50先令;每個男人花3先令,每個女人花2先令,每個小孩花1先令;問男人、女人和小孩各有幾人? *問題分析與算法設計 設x,y,z分別代表男人、女人和小孩。按題目的要求,可得到下面的方程: x+y+z=30(1)3x+2y+z=50(2)用方程程序求此不定方程的非負整數解,可先通過(2)-(1)式得: 2x+y=20(3)由(3)式可知,x變化范圍是0~10 *程序說明與注釋 #include int x,y,z,count=0;printf(“ Men Women Childrenn”);printf(“........................................n”);for(x=0;x<=10;x++){ y=20-2*x;/*x定值據(3)式求y*/ z=30-x-y;/*由(1)式求z*/ if(3*x+2*y+z==50)/*當前得到的一組解是否滿足式(2)*/ printf(“ %2d: %d %d %dn”,++count,x,y,z);} } 5.新娘和新郞 三對情侶參加婚禮,三個新郞為A、B、C,三個新娘為X、Y、Z。有人不知道誰和誰結婚,于是詢問了六位新人中的三位,但聽到的回答是這樣的:A說他將和X結婚;X說她的未婚夫是C;C說他將和Z結婚。這人聽后知道他們在開玩笑,全是假話。請編程找出誰將和誰結婚。 *問題分析與算法設計 將A、B、C三人用1,2,3表示,將X和A結婚表示為“X=1”,將Y不與A結婚表示為“Y!=1”。按照題目中的敘述可以寫出表達式: x!=1 A不與X結婚 x!=3 X的未婚夫不是C z!=3 C不與Z結婚 題意還隱含著X、Y、Z三個新娘不能結為配偶,則有: x!=y且x!=z且y!=z 窮舉以上所有可能的情況,代入上述表達式中進行推理運算,若假設的情況使上述表達式的結果均為真,則假設情況就是正確的結果。*程序說明與注釋 #include X will marry to B.(X與B結婚)Y will marry to C.(Y與C結婚) Z will marry to A.(Z與A結婚)6.委派任務 某偵察隊接到一項緊急任務,要求在A、B、C、D、E、F六個隊員中盡可能多地挑若干人,但有以下限制條件: 1)A和B兩人中至少去一人; 2)A和D不能一起去; 3)A、E和F三人中要派兩人去; 4)B和C都去或都不去; 5)C和D兩人中去一個; 6)若D不去,則E也不去。問應當讓哪幾個人去? *問題分析與算法設計 用A、B、C、D、E、F六個變量表示六個人是否去執行任務的狀態,變量的值為1,則表示該人去;變量的值為0,則表示該人不參加執行任務,根據題意可寫出表達式: a+b>1 A和B兩人中至少去一人; a+d!=2 A和D不能一起去; a+e+f==2 A、E、F三人中要派兩人去; b+c==0或b+c==2 B和C都去或都不去; c+d==1 C和D兩人中去一個; d+e==0或d==1 若D不去,則E也不去(都不去;或D去E隨便)。 上述各表達式之間的關系為“與”關系。窮舉每個人去或不去的各種可能情況,代入上述表達式中進行推理運算,使上述表達式均為“真”的情況就是正確的結果。*程序說明與注釋 #include } *運行結果 A will be assigned.(去)B will be assigned.(去)C will be assigned.(去)D will not be assigned.(不去)E will not be assigned.(不去)F will be assigned.(去)7.50.誰在說謊 張三說李四在說謊,李四說王五在說謊,王五說張三和李四都在說謊。現在問:這三人中到底誰說的是真話,誰說的是假話? *問題分析與算法設計 分析題目,每個人都有可能說的是真話,也有可能說的是假話,這樣就需要對每個人所說的話進行分別判斷。假設三個人所說的話的真假用變量A、B、C表示,等于1表示該人說的是真話; 表示這個人說的是假話。由題目可以得到: *張三說李四在說謊 張三說的是真話:a==1&&b==0 或 張三說的是假話:a==0&&b==1 *李四說王五在說謊 李四說的是真話:b==1&&c==0 或 李四說的是假話:b==0&&c==1 *王五說張三和李四都在說謊 王五說的是真話:c==1&&a+b==0 或 王五說的是假話:c==0&&a+b!=0 上述三個條件之間是“與”的關系。將表達式進行整理就可得到C語言的表達式:(a&&!b||!a&&b)&&(b&&!c||!b&&c)&&(c&&a+b==0||!c&&a+b!=0)窮舉每個人說真話或說假話的各種可能情況,代入上述表達式中進行推理運算,使上述表達式均為“真”的情況就是正確的結果。*程序說明與注釋 #include Zhangsan told a lie(張三說假話)Lisi told a truch.(李四說真話)Wangwu told a lie.(王五說假話) 8.黑與白 有A、B、C、D、E五人,每人額頭上都帖了一張黑或白的紙。五人對坐,每人都可以看到其它人額頭上的紙的顏色。五人相互觀察后,A說:“我看見有三人額頭上帖的是白紙,一人額頭上帖的是黑紙。” B說:“我看見其它四人額頭上帖的都是黑紙。” C說:“我看見一人額頭上帖的是白紙,其它三人額頭上帖的是黑紙。” D說:“我看見四人額頭上帖的都是白紙。” E什么也沒說。 現在已知額頭上帖黑紙的人說的都是謊話,額頭帖白紙的人說的都是實話。問這五人誰的額頭是帖白紙,誰的額頭是帖黑紙? *問題分析與算法設計 假如變量A、B、C、D、E表示每個人額頭上所帖紙的顏色,0 代表是黑色,1 代表是白色。根據題目中A、B、C、D四人所說的話可以總結出下列關系: A說: a&&b+c+d+e==3||!a&&b+c+d+e!=3 B說: b&&a+c+d+e==0||!b&&a+c+d+e!=0 C說: c&&a+b+d+e==1||!c&&a+b+d+e!=1 D說: d&&a+b+c+e==4||!d&&a+b+c+e!=4 窮舉每個人額頭所帖紙的顏色的所有可能的情況,代入上述表達式中進行推理運算,使上述表達式為“真”的情況就是正確的結果。*程序說明與注釋 #include } } *運行結果 A is pasted a paper of black paper on his forehead.(黑)B is pasted a paper of black paper on his forehead.(黑)C is pasted a paper of white paper on his forehead.(白)D is pasted a paper of black paper on his forehead.(黑)E is pasted a paper of white paper on his forehead.(白)9.誠實族和說謊族是來自兩個荒島的不同民族,誠實族的人永遠說真話,而說謊族的人永遠說假話。迷語博士是個聰明的人,他要來判斷所遇到的人是來自哪個民族的。迷語博士遇到三個人,知道他們可能是來自誠實族或說謊族的。為了調查這三個人是什么族的,博士分別問了他們的問題,這是他們的對話: 問第一個人:“你們是什么族?”,答:“我們之中有兩個來自誠實族。”第二個人說:“不要胡說,我們三個人中只有一個是誠實族的。”第三個人聽了第二個人的話后說:“對,就是只有一個誠實族的。” 請根據他的回答判斷他們分別是哪個族的。*問題分析與算法設計 假設這三個人分別為A、B、C,若說謊其值為0,若誠實,其值為1。根據題目中三個人的話可分別列出: 第一個人: a&&a+b+c==2||!a&&a+b+c!=2 第二個人: b&&a+b+c==1||!b&&a+b+c!=1 第三個人: c&&a+b+c==1||!c&&a+b+c!=1 利用窮舉法,可以很容易地推出結果。*程序說明與注釋 #include A is a lier(說謊族)B is a lier(說謊族)C is a lier(說謊族) 10. 角谷猜想 日本一位中學生發現一個奇妙的“定理”,請角谷教授證明,而教授無能為力,于是產生角谷猜想。猜想的內容是:任給一個自然數,若為偶數除以2,若為奇數則乘3加1,得到一個新的自然數后按照上面的法則繼續演算,若干次后得到的結果必然為1。請編程驗證。*問題分析與算法設計 本題是一個沿未獲得一般證明的猜想,但屢試不爽,可以用程序驗證。 題目中給出的處理過程很清楚,算法不需特殊設計,可按照題目的敘述直接進行證。*程序說明與注釋 #include 現有21根火柴,兩人輪流取,每人每次可以取走1至4根,不可多取,也不能不取,誰取最后一楰火柴誰輸。請編寫一個程序進行人機對弈,要求人先取,計算機后取;計算機一方為“常勝將軍”。*問題分析與算法設計 在計算機后走的情況下,要想使計算機成為“常勝將軍”,必須找出取 關鍵。根據本題的要求枷以總結出,后走一方取子的數量與對方剛才一步取子的數量之和等于,就可以保證最后一個子是留給先取子的那個人的。 據此分析進行算法設計就是很簡單的工作,編程實現也十分容易。*程序說明與注釋 #include do{ printf(”How many stick do you wish to take(1~%d)?“,a>4?4:a);scanf(”%d“,&i);}while(i>4||i<1||i>a);/*接收正在確的輸入*/ if(a-i>0)printf(” %d stick left in the pile.n“,a-i);if((a-i)<=0){ printf(” You have taken the last stick.n“);printf(” * * * You lose!nGame Over.n“);/*輸出取勝標記*/ break;} else printf(” Compute take %d stick.n“,5-i);/*輸出計算機取的子數*/ a-=5;printf(” %d stick left in the pile.n",a);} } 12. 課 題:vb語言編程概述 課 時:2課時 授課時間:2011.09.05 課堂類型:講授 教學目的:1.熟悉VB界面和VB集成開發環境; 2.在實際操作中學會編簡單的VB應用程序; 教學要求:1.掌握VB基礎知識。 2.會編簡單的VB應用程序。 教學重點:1.熟悉VB集成開發環境 2.編寫簡單VB應用程序。 教學難點:在熟悉VB界面的同時學習編寫簡單VB應用程序 教學方法:講授 教學過程: 一、VB簡介 BASIC是英文Beginner’s All-purpose Symbolic Instruction Code(初學者通用符號指令代碼)的縮寫,它是專門為初學者設計的高級語言。Visual Basic是Microsoft公司于1991年推出的基于窗口的可視化程序設計語言。 a.“Visual”是“可視化的”、“形象化的”的意思。b.因此Visual Basic也具有易學易用的特點 c.目前Visual Basic的最新版本是Visual Basic 6.0(簡稱VB 6.0) 二、啟動VB 1、首先顯示“新建工程”對話框 直接單擊“打開”按鈕,創建“標準EXE”類型應用程序,進入集成開發環境主界面。 2、集成開發環境中的各元素 1)標題欄:用來顯示窗口的標題。2)菜單欄 3)工具欄 4)工具箱 5)窗體窗口 6)工程窗口 7)屬性窗口 8)窗體布局窗口 三、通過一個簡單的應用程序快速入門 【例1.1(實訓1,p16)】制作一個的一個簡單的應用程序的運行界面。它由一個窗體、一個文本框、一個標簽和一個命令按鈕組成。當用戶單擊命令按鈕“顯示”時,文本框中出現“教你學VB”。1.新建工程 2.添加文本框Text1 3.添加命令按鈕Command1 4.添加標簽Label1 5.設置屬性 6.編寫事件過程代碼 前面的工作把應用程序的界面設計好了,屬性也設置完畢。但現在應用程序并不能實現實際的功能。為了使它具有一定的功能,還必須為對象編寫實現某一功能的事件過程代碼。1)雙擊窗體上的“顯示”按鈕,屏幕上出現代碼窗口,程序代碼就在這里編寫。編寫如下事件過程: Private Sub Command1_Click()Text1.Text = “歡迎使用VB” End Sub 2)運行應用程序 3)保存應用程序 VB應用程序至少有兩種文件需要保存: · 窗體文件(.frm)· 工程文件(.vbp)4)生成EXE文件 四、總結步驟 設計VB應用程序主要有以下4個步驟:(1)設計用戶界面。(2)設置屬性。(3)編寫代碼。(4)保存和運行調試程序,生成EXE文件。 五、知識延伸 1、只有一個文本框的實例 編寫如下事件過程: Private Sub Command1_Click()Text1.Text = “教你學VB“ End Sub 2、多個文本框時 編寫如下事件過程: Private Sub Command1_Click()Text1.Text = ”教你學VB“ Text2.Text = “歡迎使用VB“ End Sub 3、按照系統的元件特性分類(分別舉例說明)課后實訓1 第二個命令按鈕:清除 第三個命令按鈕:退出 步驟: 1.添加2個命令按鈕 2.雙擊按鈕,進入編程狀態 3.和顯示按鈕命令編程相似 編寫如下事件過程: Private Sub Command2_Click()Text1.Text = ” “ End Sub Private Sub Command3_Click()End End Sub 4、圖片的加載方法 Private Sub Form_Load()Image1.Picture = LoadPicture(App.Path + “1.BMP”)End Sub 六、小結 1.熟悉界面。 2.掌握完整編程過程以及運行及調試程序的過程。 六、編程題參考答案 1.編程,統計在所輸入的50個實數中有多少個正數、多少個負數、多少個零。#include “stdio.h” #define N 50 void main(){ float x;unsigned int s1,s2,s3,i;s1=s2=s3=0;for(i=1;i<=N;i++){ scanf(“%f”,&x);if(x<0)s1++;else if(x==0)s2++;else s3++;} printf(“負數%u個,零%u個,正數%u個n”,s1,s2,s3);} 2.編程,計算并輸出方程 X2+Y2=1989 的所有整數解。#include “stdio.h” void main(){ int x,y;for(x=-45;x<=45;x++){ y=-45;while(y<=45){ if(x*x+y*y==1989)printf(“%d*%d+%d*%d=%dn”,x,x,y,y,1989);y++;} } } 3.編程,輸入一個10進制正整數,然后輸出它所對應的八進制、十六進制數。#include “stdio.h” void main(){ unsigned int x;printf(“請輸入一個十進制正整數:”);scanf(“%u”,&x);printf(“%d=八進制數 %o=十六進制數%xn”,x,x,x);} 4.編程,找出1000以內的所有完數,并輸出其因子。#include “stdio.h” void main(){ int i,j,s=1;for(i=1;i<=1000;i++,s=1){ for(j=2;j<=i/2;j++)if(i%j==0)s+=j;// 求 i的因子和 if(s==i){ printf(“%d=1”,i);// 如果i 是完數則輸出其各因子 for(j=2;j<=i/2;j++)if(i%j==0)printf(“+%d”,j);printf(“n”);} } } 5.輸入一個正整數,輸出它的所有質數因子。#include “stdio.h” void main(){ int m,i=2;printf(“請輸入一個整數:”);scanf(“%d”,&m);while(m!=1)if(m%i==0){ printf(“%d ”,i);m/=i;} else i++;printf(“n”);} 6.輸入20個整數,輸出其中能被數組中其它元素整除的那些數組元素。#include “stdio.h” #define N 20 void main(){ int a[N],i,j;for(i=0;i 7.輸入兩個數組(數組元素個數自定),輸出在兩個數組中都出現的元素。#include “stdio.h” #define NA 6 #define NB 8 void main(){ float a[NA],b[NB];int i,j;for(i=0;i 8.輸入兩個數組(數組元素個數自定),輸出在兩個數組中都不出現的元素。#include “stdio.h” #define NA 6 #define NB 8 void main(){ float a[NA],b[NB];int i,j;for(i=0;i 9.編程,將字符數組S2中的全部字符拷貝到字符數組S1中。#include “stdio.h” void main(){ char s1[20],s2[]=“Good morning!”;int i=0;while((s1[i++]=s2[i])!='
主站蜘蛛池模板:
亚洲国产精品综合久久网络|
久久天天躁夜夜躁狠狠躁|
日本欧美亚洲中文在线观看|
国产∨亚洲v天堂无码久久久|
人妻无码手机在线中文|
97久久久久人妻精品区一|
亚洲精品av无码重口另类|
亚洲乱码中文字幕久久孕妇黑人|
亚洲欧美人成网站aaa|
久久人人玩人妻潮喷内射人人|
欧美成人精品高清视频在线观看|
精品久久久久久久无码|
国产午夜无码视频免费网站|
亚洲中文字幕一区精品自拍|
国产精品露脸视频观看|
97精品伊人久久大香线蕉|
亚洲国产精品无码aaa片|
亚洲日本va午夜中文字幕久久|
亚洲欧美日韩精品色xxx|
久久亚洲色www成人欧美|
99国产揄拍国产精品人妻|
久久免费精品视频|
国产在线aaa片一区二区99|
成人午夜福利院在线观看|
精品人妻少妇人成在线|
欧美性xxxxx极品娇小|
久久综合久中文字幕青草|
国产熟睡乱子伦午夜视频在线|
色翁荡熄又大又硬又粗又视频|
亚洲熟女少妇精品|
亚洲乱亚洲乱妇|
欧美成 人 网 站 免费|
无码 制服 丝袜 国产 另类|
精品人妻无码一区二区三区蜜桃一|
国产99久60在线视频 | 传媒|
波多野结衣一区二区免费视频|
91娇喘????白丝|
色欲天天天无码视频|
亚洲最大av资源网在线观看|
久久日本三级韩国三级|
国产高颜值大学生情侣酒店|
第二篇:VB編程題(循環部分總結題目
第三篇:趣味編程題整理及答案
第四篇:vb語言編程教案
第五篇:c語言編程題答案