go练习题

第一题:数字1、2、3、4四个数字组成互不重复的三位数(比如123是正确的,但是121就是错误的,因为1数字重复了)

package main

import (
	"fmt"
)

func main() {
	total := 0
	for i := 1;i < 5;i++{
		for j := 1;j<5;j++{
			for k :=1;k<5;k++{
				if i != j && i !=k && j != k{
					total++
					fmt.Printf("第%d方案: %d%d%d\n",total,i,j,k)
				}
			}
		}
	}
	
}

效果如下所示:

PS D:\go> .\a.exe      
第1方案: 123
第2方案: 124
第3方案: 132
第4方案: 134
第5方案: 142
第6方案: 143
第7方案: 213
第8方案: 214
第9方案: 231
第10方案: 234
第11方案: 241
第12方案: 243
第13方案: 312
第14方案: 314
第15方案: 321
第16方案: 324
第17方案: 341
第18方案: 342
第19方案: 412
第20方案: 413
第21方案: 421
第22方案: 423
第23方案: 431
第24方案: 432

第二题:
一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?

package main

import (
	"fmt"
	"math"
)

func main() {
	var i int;
	for i = 0;i< 100;i++{
                // 使用go语言的math.Sqrt函数开平方
		x := int(math.Sqrt(float64(i+100)))
		y := int(math.Sqrt(float64(i+268)))
		if x*x== i+100 && y*y == i+268{
			fmt.Println(i)
		}
	}
	
}

效果如下所示:

PS D:\go> .\a.exe      
21

第三题,统计字符串的字符个数

var name = "chenchaofeng"
var vmap = make(map[string]int)
for _,k := range name{
	x := fmt.Sprintf("%c",k)
	vmap[x]++
}

第四题,分金币练习题


package main
  
import (
	"fmt"
)

var money = 50

func main(){
	f,fa := dispatchCoin(50)
	f("Aegustis")
	f("MEttIew")
	fmt.Println("当前还剩余金币数量:",fa())

}

func dispatchCoin(money int)(func(string),func()int){
	
	f1 := func(name string){
		var s = 0
		for _,k := range name{
			var b = 1
			switch k {
				case 'e','E':
					s += b * 1
					fallthrough
				case 'i','I':
					s += b * 2
				}
		}

		fmt.Printf("当前 %s  账户有 %d 金币\n",name,s)
		money -= s
	}
	f2 := func()int{
		return money
	}
	return f1,f2
}
posted @ 2021-08-03 10:16  峰哥ge  阅读(240)  评论(0编辑  收藏  举报