原文地址:Go面试编程题目(二)
1、实现以下功能?
根据工龄(整数)给员工涨工资(整数),工龄和基本工资通过键盘录入,涨工资的条件如下:
-
[10-15) +5000
-
[5-10) +2500
-
[3~5) +1000
-
[1~3) +500
-
[0~1) +200
如果输入工龄为10,基本工资为3000,程序运行后打印为:【您目前工作了10年,基本工资为 3000元,应涨工资 5000元,涨后工资 8000元】。
代码实现如下:
package main
import "fmt"
func main() {
var n, salary, sum, a int
var err error
fmt.Println("请输入您的工龄")
_, err = fmt.Scanln(&n)
if err != nil {
fmt.Println(err)
}
fmt.Println("请输入您的基本工资")
_, err = fmt.Scanln(&salary)
if err != nil {
fmt.Println(err)
}
if n >= 0 && n < 1 {
a = 200
} else if n >= 1 && n < 3 {
a = 500
} else if n >= 3 && n < 5 {
a = 1000
} else if n >= 5 && n < 10 {
a = 2500
} else if n >= 10 && n < 15 {
a = 5000
}
sum = salary + a
fmt.Printf("您目前工作了%d年,基本工资为%d元,应涨工资%d元,涨后工资%d元", n, salary, a, sum)
}
打印结果如下:
2、定义一个map存储如下数据:
-
France 首都是 巴黎
-
Italy 首都是 罗马
-
Japan 首都是 东京
-
India 首都是 新德里
需检测American的首都是否存在,后将map的数据存入到mysql数据库,实现如下:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql" //注册MySQL驱动
)
func main() {
//创建集合
var countryCapitalMap map[string]string
countryCapitalMap = make(map[string]string)
// map插入key - value对,各个国家对应的首都
countryCapitalMap["France"] = "巴黎"
countryCapitalMap["Italy"] = "罗马"
countryCapitalMap["Japan"] = "东京"
countryCapitalMap["India "] = "新德里"
//使用键输出地图值
for country := range countryCapitalMap {
fmt.Println(country, "首都是", countryCapitalMap[country])
}
//查看元素在集合中是否存在
capital, ok := countryCapitalMap["American"] //如果确定是真实的,则存在,否则不存在
if ok {
fmt.Println("American 的首都是", capital)
} else {
fmt.Println("American 的首都不存在")
}
//用户名:密码@tcp(地址:3306)/数据库名
db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/test")
if err != nil {
fmt.Println(err)
}
//往数据库插入数据
for k, v := range countryCapitalMap {
result, err := db.Exec("INSERT INTO countryCapital(country,capital)VALUES (?,?)", k, v)
if err != nil {
fmt.Println(result, err)
}
}
}
3、判断两个map是否拥有相同的键和值,实现如下:
//判断两个map是否拥有相同的健和值
package main
import (
"fmt"
_ "fmt"
)
func equal(x, y map[string]int) bool {
if len(x) != len(y) {
return false
}
for k, xValue := range x { //使用!ok来区分元素不存在和元素存在但值为0的情况
if yValue, ok := y[k]; !ok || yValue != xValue {
return false
}
}
return true
}
func main() {
x := map[string]int{
"A": 0,
"B": 1,
"C": 2,
"D": 3,
}
y := map[string]int{
"B": 1,
"C": 2,
"D": 3,
}
z := map[string]int{
"A": 0,
"B": 1,
"C": 2,
"D": 3,
}
fmt.Println(equal(x, y))
fmt.Println(equal(x, z))
}
打印结果如下:
4、顺序遍历map中的元素。
实现代码如下:
package main
import (
"fmt"
_ "fmt"
"sort"
_ "sort"
)
func sortMap(student map[string]int) {
var names []string
for name := range student {
names = append(names, name)
}
sort.Strings(names)
for _, name := range names {
fmt.Printf("%s的年龄是%d\n", name, student[name])
}
}
func main() {
student := map[string]int{
"lisa": 17,
"bob": 20,
"victoria": 24,
"sabit": 40,
}
sortMap(student)
}
打印结果如下:
5、定义一个map,存1到20的阶乘并顺序输出。
实现代码一如下:
package main
import (
"fmt"
)
func main() {
m := make(map[int]int)
for i := 0; i <= 20; i++ {
if i == 0 {
m[i] = 1
} else {
m[i] = m[i-1] * i
}
fmt.Println(i, "的阶乘是", m[i])
}
}
实现代码二如下:
package main
import (
"fmt"
"sort"
)
func main() {
m := make(map[int]int)
for i := 0; i <= 20; i++ {
if i == 0 {
m[i] = 1
} else {
m[i] = m[i-1] * i
}
}
arr := make([]int, 0)
for k, _ := range m {
arr = append(arr, k)
}
sort.Ints(arr)
for i := 0; i <= len(arr)-1; i++ {
fmt.Println(arr[i], "的阶乘是", m[arr[i]])
}
}
输出结果如下:
至此,本次分享就结束了,后期会慢慢补充。
以上仅为个人观点,不一定准确,能帮到各位那是最好的。
好啦,到这里本文就结束了,喜欢的话就来个三连击吧。
扫码关注公众号,获取更多优质内容。