统计标语字符数
题目描述
编写函数 countChar(s string) int,返回字符串字符个数,用于统计标语字数。
输出示例
标语:为人民服务
字符数:5
实现代码
Go
package main
import (
"fmt"
"unicode/utf8"
)
func countChar(s string) int {
return utf8.RuneCountInString(s)
}
func main() {
str := "为人民服务"
fmt.Printf("标语:%s \n字符数:%d\n", str, countChar(str))
}
求平均分
题目描述
写函数
calcAvg(nums []int) float64接收成绩切片,计算并返回平均分
输出示例
班级成绩列表:[85 92 78 90 88]
平均分:86.60
实现代码
Go
package main
import "fmt"
func calcAvg(nums []int) float64 {
sum := 0
for _, v := range nums {
sum += v
}
return float64(sum) / float64(len(nums))
}
func main() {
scores := []int{85, 92, 78, 90, 88}
avg := calcAvg(scores)
fmt.Printf("班级成绩列表:%v\n", scores)
fmt.Printf("平均分:%.2f\n", avg)
}
统计单词频次
题目描述
编写函数
countWords(words []string) map[string]int,统计每个单词出现的次数。
输出示例
单词列表: [爱国 强国 爱国 人民 强国 强国]
统计结果: map[人民:1 爱国:2 强国:3]
实现代码
Go
package main
import "fmt"
// 统计单词频次
func countWords(words []string) map[string]int {
m := make(map[string]int)
for _, w := range words {
m[w]++
}
return m
}
func main() {
list := []string{"爱国", "强国", "爱国", "人民", "强国", "强国"}
resMap := countWords(list)
fmt.Println("单词列表:", list)
fmt.Println("统计结果:", resMap)
}
字符串拼接
题目描述
编写可变参数函数
joinStr( strs ...string ) string,把多个字符串拼接成一句。
- 函数可以接收任意多个字符串
- 函数内部将所有传入的字符串按顺序无缝拼接成一整句完整的话
- 函数返回拼接后的最终字符串
- 主函数中传入固定字符串:"强"、"国"、"复"、"兴"、"有"、"我",调用函数并打印结果
输出示例
拼接结果: 强国复兴有我
实现代码
Go
package main
import "fmt"
// joinStr 可变参数函数:接收任意多个字符串,按顺序无缝拼接并返回
// strs ...string:可变参数,表示可以传入0个、1个或多个string类型参数
func joinStr(strs ...string) string {
// 定义空字符串,用于存储拼接结果
var result string
// 遍历所有传入的字符串,逐个拼接到result中
for _, str := range strs {
result += str
}
// 返回最终拼接完成的字符串
return result
}
func main() {
// 调用可变参数函数,传入固定字符串:强、国、复、兴、有、我
res := joinStr("强", "国", "复", "兴", "有", "我")
// 打印输出结果
fmt.Println("拼接后的字符串:", res)
}
两数运算(和、差、积)
题目描述
编写函数
calc(a,b int) (int,int,int)返回:两数之和、两数之差、两数乘积。
输出示例
请输入第一个整数:10
请输入第二个整数:4
和 = 14
差 = 6
积 = 40
实现代码
Go
package main
import "fmt"
// calc 函数:接收两个整数,返回 和、差、积
func calc(a, b int) (int, int, int) {
sum := a + b // 和
sub := a - b // 差
mul := a * b // 积
return sum, sub, mul
}
func main() {
// 定义变量存储用户输入的数字
var num1, num2 int
// 提示用户输入
fmt.Print("请输入第一个整数:")
fmt.Scan(&num1)
fmt.Print("请输入第二个整数:")
fmt.Scan(&num2)
// 调用多返回值函数
sumRes, subRes, mulRes := calc(num1, num2)
// 输出结果
fmt.Println("和 =", sumRes)
fmt.Println("差 =", subRes)
fmt.Println("积 =", mulRes)
}
参数校验接口
题目描述
写函数
checkRegisterInfo(phone string, age int) (valid bool, errMsg string)命名返回:
- valid:参数是否合法
- errMsg:错误提示,合法为空
规则:
- 手机号必须 11 位
- 年龄 16~60 才能注册
输出示例
请输入手机号:13812345678
请输入年龄:22
参数校验通过,可以注册
实现代码
Go
package main
import "fmt"
// 命名返回值:valid 是否合法,errMsg 错误信息
func checkRegisterInfo(phone string, age int) (valid bool, errMsg string) {
// 1. 校验手机号长度
if len(phone) != 11 {
valid = false
errMsg = "手机号必须为11位数字"
return
}
// 2. 校验年龄范围
if age < 16 || age > 60 {
valid = false
errMsg = "年龄必须在16~60岁之间"
return
}
// 3. 全部通过
valid = true
errMsg = ""
return
}
func main() {
// 定义变量接收用户输入
var phone string
var age int
// 输入手机号
fmt.Print("请输入手机号:")
fmt.Scan(&phone)
// 输入年龄
fmt.Print("请输入年龄:")
fmt.Scan(&age)
// 调用命名返回值函数
valid, msg := checkRegisterInfo(phone, age)
// 输出结果
if valid {
fmt.Println("校验通过:可以注册!")
} else {
fmt.Println("校验失败:", msg)
}
}
解析时间字符串
题目描述
编写多返回值函数
parseDate(dateStr string) (year string, month string, day string, ok bool)
要求:
- 传入格式为
2026-03-31的时间字符串- 用切片截取 / 分割,拆分出 年、月、日
- 第四个返回值
ok:格式正确返回 true,否则 false- 主函数输入时间,调用函数并输出年月日
输出示例
请输入日期:2026-04-01
年份: 2026
月份: 04
日期: 01
实现代码
Go
package main
import (
"fmt"
"strings"
)
// parseDate 解析日期字符串,多返回:年、月、日、是否成功
func parseDate(dateStr string) (year string, month string, day string, ok bool) {
// 按 "-" 分割字符串
parts := strings.Split(dateStr, "-")
// 判断是不是标准三段式:年-月-日
if len(parts) != 3 {
ok = false
return
}
year = parts[0]
month = parts[1]
day = parts[2]
ok = true
return
}
func main() {
var timeStr string
fmt.Print("请输入日期:")
fmt.Scanln(&timeStr)
y, m, d, success := parseDate(timeStr)
if success {
fmt.Println("年份:", y)
fmt.Println("月份:", m)
fmt.Println("日期:", d)
} else {
fmt.Println("日期格式错误,请按 年-月-日 输入")
}
}