GO語言學習初級之程式碼案例01
阿新 • • 發佈:2018-12-14
@(go語言 黑馬)[GO語言]
##判斷是否為閏年
- 題目:手動輸入一個年份,判斷出該年份是否為閏年
- 程式碼如下:邏輯思路在註釋中
package main
import "fmt"
//手動輸入一個年份,判斷出該年份是否為閏年
func main() {
var a int
fmt.Scan(&a) //輸入一個年份
var b bool //b為true則為閏年 false不是閏年
//能被400整除的為閏年,能被4整除,同時不被100整除的為閏年;程式碼實現如下:
//(a%400==0) || (a%4==0 && a%100!=0);|| 或語句
if a%400 == 0 {
b = true
} else if a%100 != 0 && a%4 == 0 {
b = true
} else {
b = false
}
fmt.Println(b)
}
##迴圈驗證密碼
-
題目:提示使用者輸入密碼,如果密碼輸入錯誤,則給出提示,並讓使用者再次輸入,直到密碼輸入正確為止
-
程式碼如下:邏輯思路在註釋中
package main
import "fmt"
//提示使用者輸入密碼,如果密碼輸入錯誤,則給出提示,並讓使用者再次輸入,直到密碼輸入正確為止
func main() {
var password string //密碼為字串型別變數
fmt. Println("請輸入密碼:")
IMPROT:
fmt.Scan(&password)
if password == "xhl1995" { //這裡設定的密碼為"xhl1995",你也可以設定任意密碼
fmt.Println("登陸成功!")
} else {
fmt.Println("密碼輸入錯誤!請再次輸入:")
goto IMPROT //goto 返回到IMPROT標記位置,繼續執行程式碼
//這裡goto就實現了迴圈輸入密碼的功能
}
}
##月份天數查詢
-
題目:輸入想要查詢的年份和月份,便可查詢到該年該月的天數
-
程式碼如下:這裡使用的是switch實現的,邏輯思路在註釋中
package main
import "fmt"
//輸入想要查詢的年份和月份,便可查詢到該年該月的天數
func main() {
var year int
var month int
var day int
//手動輸入年月:
fmt.Println("請輸入年份:")
fmt.Scan(&year)
fmt.Println("請輸入月份:")
fmt.Scan(&month)
//月份天數一共有三種情況:30天,31天,2月29天,閏年的2月28天,所以這裡使用switch要方便些
if month > 0 && month <= 12 {
switch month {
case 1:
fallthrough
//fallthrough表示不跳出迴圈,並執行下一層程式碼,
// 不加fallthrough則只執行本層,因為裡面內建break函式
case 3:
fallthrough
case 5:
fallthrough
case 7:
fallthrough
case 8:
fallthrough
case 10:
fallthrough
case 12:
day = 31//1,3,5,7,8,10,12月份都為31天
case 2:
//判斷是否為閏年
if year%400 == 0 {
day = 29
} else if year%4 == 0 && year%100 != 0 {
day = 29
} else {
day = 28
}
default://default代表其餘的意思
day = 30
}
fmt.Printf("%d年%d月有%d天", year, month, day)
} else {
fmt.Println("月份輸入錯誤!")
}
}
##利用GO語言解決一道數學題
-
題目:某校2006年有80000名學生,往後每年增加25%,問:哪年人數能夠達到20萬
-
程式碼如下:這裡使用的是switch實現的,邏輯思路在註釋中
package main
import "fmt"
//某校2006年有80000名學生,往後每年增加25%,問:哪年人數能夠達到20萬
func main() {
//利用for迴圈解決實際問題,不要將要輸出的變數當做迴圈條件
var year = 2006
for amount := 80000.0; amount < 200000; amount *= 1.25 { //當人數達到20萬,則停止迴圈
year++
}
fmt.Printf("%d年學員人數達到20萬", year)
}
##百錢百雞
-
題目:公雞價格5錢,母雞價格為3錢,1錢可以買3只小雞,問:如何用100錢買到一百隻雞?
-
程式碼如下:這裡使用的是switch實現的,邏輯思路在註釋中
package main
import "fmt"
//公雞價格5錢,母雞價格為3錢,1錢可以買3只小雞,問:如何用100錢買到一百隻雞?
func main() {
chicken := 0
a := 0 //記錄執行次數
for cock := 0; cock <= 20; cock++ {//最多隻能買20只公雞
for hen := 0; hen <= 33; hen++ {//最多隻能買33只母雞
for chicken := 0; chicken <= 100; chicken += 3 {//最多不能超過100只雞
if cock+hen+chicken == 100 && cock*5+hen*3+chicken/3 == 100 {//滿足:錢數100,雞數100
fmt.Printf("公雞:%d 母雞:%d 小雞:%d\n", cock, hen, chicken)
}
a++//每迴圈一次,a加1
}
}
}
fmt.Println("執行次數:", a)
}
- 改程式還可以優化,使程式執行次數大大減少:
package main
import "fmt"
//公雞價格5錢,母雞價格為3錢,1錢可以買3只小雞,問:如何用100錢買到一百隻雞?
func main() {
chicken := 0
a := 0 //記錄執行次數
for cock := 0; cock <= 20; cock++ {
for hen := 0; hen <= 33; hen++ {
chicken = 100 - cock - hen//減少chicken的迴圈
if cock*5+hen*3+chicken/3 == 100 && chicken%3 == 0 {
fmt.Printf("公雞:%d 母雞:%d 小雞:%d\n", cock, hen, chicken)
}
a++
}
}
fmt.Println("執行次數:", a)
}