GO語(yǔ)言初級(jí)學(xué)習(xí)之代碼案例03
@(go語(yǔ)言 黑馬)[GO語(yǔ)言]
打印等腰三角形
- 題目:通過(guò)程序打印出一個(gè)“ * ”組成的等腰三角形,具體效果代碼中展示。
- 邏輯:兩層循環(huán),外層控制行,內(nèi)層控制列。
- 代碼如下:
package main
import "fmt"
// * 5 1 i*2+1
// *** 4 3 i*2+1
// ***** 3 5 i*2+1
// ******* 2 7
// ********* 1 9
//*********** 0 11
func main() {
for i := 0; i < 6; i++ { //最外層控制行,循環(huán)一次打印一行
for j := 0; j < 5-i; j++ { //這個(gè)循環(huán)用來(lái)打印空格,每循環(huán)一次打印一個(gè)空格
// 通過(guò)“j < 5-i”遞減循環(huán)次數(shù),因?yàn)榭崭駭?shù)是遞減的
fmt.Print(" ") //不需要換行
}
for k := 0; k < i*2+1; k++ { //*的數(shù)量是i*2+1,i從0開(kāi)始循環(huán)
fmt.Print("*") //不要換行,打印完一整行后再換行
}
fmt.Println()
}
}
找出一個(gè)數(shù)組中最大的值
- 題目:找出一個(gè)數(shù)組中最大的值
- 邏輯:代碼的注釋中
- 代碼如下:
package main
import "fmt"
func main() { //找出這個(gè)集合中的最大值
arr := [10]int{1, 2, 4, 5, 7, 3, 6, 8, 7, 5}
var max = arr[0]//等于第一個(gè)數(shù)
for i := 0; i < len(arr); i++ {
if max < arr[i] {//與每個(gè)數(shù)比較
max = arr[i]//遇到比自身大的,則賦值給自己
}
}
fmt.Println("最大的數(shù)是:", max)
//循環(huán)結(jié)束,最終輸出的就是最大的數(shù)
}
數(shù)組置換
- 題目:把數(shù)組中的元素位置調(diào)換
- 邏輯:通過(guò)for循環(huán)一組一組置換,用if語(yǔ)句來(lái)終止for循環(huán)。
- 代碼如下:
package main
import "fmt"
func main() {
arr := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
//聲明兩個(gè)變量,分別作為數(shù)組的下標(biāo),從頭尾開(kāi)始
start := 0
end := len(arr) - 1//最后一個(gè)數(shù)的下標(biāo)是長(zhǎng)度減一
for i := 0; i < len(arr); i++ {
if start > end {//當(dāng)左邊的下標(biāo)變成右邊的時(shí),置換完畢,跳出循環(huán)
break
}
arr[start], arr[end] = arr[end], arr[start]//用多重賦值來(lái)完成置換
//左邊遞加,右邊遞減
start++
end--
}
fmt.Println(arr)
}
福利彩票雙色球
- 題目:紅球和藍(lán)球,生成一個(gè)藍(lán)球隨機(jī)數(shù)和六個(gè)紅球隨機(jī)數(shù),不能相同顏色的球數(shù)字不能相同;藍(lán)球范圍是1-16,紅球范圍是1-33。
- 邏輯:這里面最關(guān)鍵的是去重。
- 代碼如下:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
var red [6]int //儲(chǔ)存6個(gè)隨機(jī)數(shù)
var blue int
rand.Seed(time.Now().UnixNano())
//這是生成隨機(jī)數(shù)的種子,跟隨系統(tǒng)的時(shí)間發(fā)生改變,相同的種子生成相同的隨機(jī)數(shù)
for i := 0; i < 6; i++ {
var temp = rand.Intn(33) + 1 //rand.Intn(33)是生成0到33以?xún)?nèi)的隨機(jī)數(shù),不包括33,+1就可以生成1到33的隨機(jī)數(shù)(包括33)
for j := 0; j < i; j++ { //這個(gè)for循環(huán)是為了讓每次生成的隨機(jī)數(shù)與之前的不重復(fù)
if temp == red[j] {//若重復(fù),則重新生成隨機(jī)數(shù)
temp = rand.Intn(33) + 1
j = -1//回到循環(huán)最開(kāi)始,重新與第一個(gè)數(shù)開(kāi)始比較
//因?yàn)閏ontinue后執(zhí)行的是j++,所以賦值為-1
continue
}
}
red[i] = temp //只要不重復(fù),則輸入到數(shù)組中
}
fmt.Println("red=", red)
blue = rand.Intn(16) + 1
fmt.Println("blue=", blue)
}