【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)
	}
}
相关推荐
zs宝来了9 小时前
Go 内存管理:三色标记 GC 与逃逸分析
golang·go·后端技术
zs宝来了13 小时前
Go pprof 性能剖析:CPU、内存与锁分析
golang·go·后端技术
hrhcode14 小时前
【java工程师快速上手go】一.Go语言基础
java·开发语言·golang
LlNingyu14 小时前
Go 实现无锁环形队列:面向多生产者多消费者的高性能 MPMC 设计
开发语言·golang·队列·mpmc·数据通道
深挖派15 小时前
GoLand 2026.1 安装配置与环境搭建 (保姆级图文教程)
后端·golang·编辑器·go·goland
geovindu16 小时前
go: Factory Method Pattern
开发语言·后端·golang
zs宝来了17 小时前
Go Context:上下文传播与取消机制
golang·go·源码解析·后端技术
GDAL17 小时前
为什么选择gin?
golang·gin
non-action_pilgrim18 小时前
《小坦克大战小怪兽》小游戏实战四:基于 protoactor-go 的游戏服务器框架与状态持久化实战
服务器·游戏·golang
zs宝来了18 小时前
Go Channel 原理:环形缓冲区与同步机制
golang·go·源码解析·后端技术