1. 程式人生 > >GO語言學習初級之程式碼案例01

GO語言學習初級之程式碼案例01

@(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)
}