【GO】for 循环练习题

计算数字阶乘

题目描述

for循环,计算 5 的阶乘(5! = 5×4×3×2×1)。

输出示例

5的阶乘:120

实现代码

Go 复制代码
package main

import "fmt"

func main() {
	// 定义初始值和阶乘变量
	n := 5
	factorial := 1

	// for条件循环:仅保留条件,初始化/自增在循环外/内
	for n >= 1 {
		factorial *= n // 等价于 factorial = factorial * n
		n--            // 自减,逐步逼近循环终止条件
	}

	fmt.Printf("5的阶乘:%d\n", factorial)
}

打印 1-20 的偶数

题目描述

打印 1-20 的所有偶数(跳过奇数)。

输出示例

1-20的偶数:2 4 6 8 10 12 14 16 18 20

实现代码

Go 复制代码
package main

import "fmt"

func main() {
	fmt.Print("1-20的偶数:")
	// 遍历1-20
	for i := 1; i <= 20; i++ {
		// 判断是否为奇数,是则跳过当前循环
		if i%2 != 0 {
			continue // 跳过后续代码,直接进入下一次循环
		}
		// 仅打印偶数
		fmt.Printf("%d ", i)
	}
	fmt.Println() // 换行
}

打印九九乘法表

题目描述

用嵌套for循环打印九九乘法表。

输出示例

1×1=1

2×1=2 2×2=4

3×1=3 3×2=6 3×3=9

4×1=4 4×2=8 4×3=12 4×4=16

5×1=5 5×2=10 5×3=15 5×4=20 5×5=25

6×1=6 6×2=12 6×3=18 6×4=24 6×5=30 6×6=36

7×1=7 7×2=14 7×3=21 7×4=28 7×5=35 7×6=42 7×7=49

8×1=8 8×2=16 8×3=24 8×4=32 8×5=40 8×6=48 8×7=56 8×8=64

9×1=9 9×2=18 9×3=27 9×4=36 9×5=45 9×6=54 9×7=63 9×8=72 9×9=81

实现代码

Go 复制代码
package main

import "fmt"

func main() {
	// 外层循环:控制行数(1-9)
	for i := 1; i <= 9; i++ {
		// 内层循环:控制列数(1-当前行数)
		for j := 1; j <= i; j++ {
			// 格式化输出,每个式子占6个字符宽度
			fmt.Printf("%d×%d=%-2d  ", i, j, i*j)
		}
		// 每行结束后换行
		fmt.Println()
	}
}

统计字符出现次数

题目描述

统计指定字符的出现次数。

输出示例

字符串:Go语言Go编程Go123

字符'G'出现次数:3

实现代码

Go 复制代码
package main

import "fmt"

func main() {
	s := "Go语言Go编程Go123"
	targetChar := 'G'
	count := 0

	// for range遍历字符串(按rune遍历,支持中文)
	for _, c := range s {
		if c == targetChar {
			count++
		}
	}

	fmt.Printf("字符串:%s\n", s)
	fmt.Printf("字符'%c'出现次数:%d\n", targetChar, count)
}

切片元素求和 & 去重

题目描述

  • 定义切片 nums = []int{1, 2, 3, 2, 4, 3, 5}
  • 第一步:遍历切片求和,输出总和;
  • 第二步:遍历切片去重,生成新切片uniqueNums,输出去重结果;
  • 仅使用for循环,无其他复杂数据结构。

输出示例

原切片:[1 2 3 2 4 3 5]

切片元素总和:20

去重后的切片:[1 2 3 4 5]

实现代码

Go 复制代码
package main

import "fmt"

func main() {
	nums := []int{1, 2, 3, 2, 4, 3, 5}
	sum := 0
	uniqueNums := []int{}

	// 1. 遍历求和
	for _, num := range nums {
		sum += num
	}

	// 2. 遍历去重(基础版:嵌套for判断是否已存在)
	for _, num := range nums {
		// 标记是否已存在
		exists := false
		for _, u := range uniqueNums {
			if u == num {
				exists = true
				break
			}
		}
		if !exists {
			uniqueNums = append(uniqueNums, num)
		}
	}

	fmt.Printf("原切片:%v\n", nums)
	fmt.Printf("切片元素总和:%d\n", sum)
	fmt.Printf("去重后的切片:%v\n", uniqueNums)
}

统计切片元素频次

题目描述

  • 定义切片 fruits = []string{"苹果", "香蕉", "苹果", "橙子", "香蕉", "苹果"}
  • map[string]int存储水果名称和频次,for循环遍历切片统计;
  • 遍历map输出每个水果的频次。

输出示例

水果列表:[苹果 香蕉 苹果 橙子 香蕉 苹果]

水果频次统计:

苹果:3次

香蕉:2次

橙子:1次

实现代码

Go 复制代码
package main

import "fmt"

func main() {
	fruits := []string{"苹果", "香蕉", "苹果", "橙子", "香蕉", "苹果"}
	// 定义map存储频次:key=水果名,value=次数
	freqMap := make(map[string]int)

	// 1. 遍历切片统计频次
	for _, fruit := range fruits {
		freqMap[fruit]++ // 不存在则默认0,++后为1;存在则自增
	}

	fmt.Printf("水果列表:%v\n", fruits)
	fmt.Println("水果频次统计:")
	// 2. 遍历map输出结果
	for fruit, count := range freqMap {
		fmt.Printf("%s:%d次\n", fruit, count)
	}
}

单词计数

题目描述

  • 定义字符串 sentence = "I love Go Go is a great language I love Go"
  • 第一步:按空格拆分字符串为单词切片;
  • 第二步:用 map 统计每个单词的出现次数;
  • 遍历 map 输出单词和频次。

输出示例

原句子:I love Go Go is a great language I love Go

单词计数结果:

I:2次

love:2次

Go:3次

is:1次

a:1次

great:1次

language:1次

实现代码

Go 复制代码
package main

import (
	"fmt"
	"strings"
)

func main() {
	sentence := "I love Go Go is a great language I love Go"
	// 1. 按空格拆分字符串为单词切片
	words := strings.Split(sentence, " ")
	// 2. 定义map统计单词频次
	wordCount := make(map[string]int)

	// 遍历单词切片统计
	for _, word := range words {
		wordCount[word]++
	}

	fmt.Printf("原句子:%s\n", sentence)
	fmt.Println("单词计数结果:")
	// 遍历map输出
	for word, count := range wordCount {
		fmt.Printf("%s:%d次\n", word, count)
	}
}
相关推荐
lars_lhuan2 小时前
Go Mutex
golang
人间打气筒(Ada)3 小时前
如何使用 Go 更好地开发并发程序?
开发语言·后端·golang
yuanlaile3 小时前
Go-Zero高性能Web+微服务全集解析
微服务·golang·go-zero·go微服务
F1FJJ6 小时前
开源实践:用 Go 实现浏览器直连内网 RDP/SSH/VNC
运维·网络·网络协议·网络安全·golang·ssh
呆萌很6 小时前
【GO】switch 练习题
golang
添尹19 小时前
Go语言基础之变量和常量
golang
参.商.1 天前
【Day43】49. 字母异位词分组
leetcode·golang
参.商.1 天前
【Day45】647. 回文子串 5. 最长回文子串
leetcode·golang
AMoon丶1 天前
Golang--内存管理
开发语言·后端·算法·缓存·golang·os