package main
import (
"fmt"
"math/rand"
"time"
)
// 练习
// 一个三位数由0-7组成,求所能组成的奇数的个数
func test1() int {
counter := 0
for i := 100; i < 779; i++ {
if i%2 != 0 {
counter++
}
}
return counter
}
// 随机1-100以内的数,10个并且没有重复
func test2() [10]int {
var arr [10]int
rand.Seed(time.Now().UnixNano())
for i := 0; i < 10; i++ {
num := rand.Intn(101)
for _, v := range arr {
if v == num {
arr[i] = rand.Intn(101)
continue
}
}
arr[i] = num
}
return arr
}
// 从键盘输入一个字符串,将小写字母全部转换为大写字母
func test3() {
}
//TODO
// 从键盘输入一个字符串,统计各个字符出现的次数
func test4a() {
var counter string
fmt.Printf("请输入要统计的字符串:")
fmt.Scan(&counter)
// 将字符串转为切片
slice := []byte(counter)
var num [26]int
for i := 0; i < len(slice); i++ {
//计算字符和a的偏移量 (差值)
offset := slice[i] - 'a'
num[offset]++
}
for k, v := range num {
if v != 0 {
fmt.Printf("字符:%c 出现的次数为:%d\n", k+'a', v)
}
}
}
func test4b() {
var counter string
fmt.Printf("请输入要统计的字符:")
fmt.Scan(&counter)
// 将字符串转为切片
slice := []byte(counter)
var num [256]int
for i := 0; i < len(slice); i++ {
num[slice[i]]++
}
for k, v := range num {
if v != 0 {
fmt.Printf("字符:%c 出现的次数为:%d\n", k, v)
}
}
}
func mainslice1a() {
//fmt.Println(test1())
//fmt.Println(test2())
//fmt.Println(len(test2()))
test4b()
}