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
}