Golang实现交替星号方阵
Golang实现交替星号方阵 你好,我正在尝试做一个相当简单的练习,但我不知道如何解决这个问题;练习的文本是: 编写一个程序,从标准输入读取一个整数 n,并如执行示例所示,在屏幕上打印一个由 n 行组成的正方形,每行由 n 个符号和空格交替组成,交替打印仅由符号 *(星号)和空格组成的行,以及仅由符号 +(加号)和空格组成的行。 提示:你可以使用两个嵌套循环,并使用 % 运算符来区分偶数行和奇数行。 执行示例: 输入一个数字:5
我写的代码是:
package main
import "fmt"
func main() {
var n int
var riga int
var riga2 int
fmt.Println("Enter a number: ")
fmt.Scan(&n)
for riga = 1; riga <= n; riga++ {
for riga2 = 1; riga2 <= n; riga2++ {
fmt.Print("*")
}
for riga2 = 1; riga2 <= n; riga2++ {
fmt.Print("+")
}
fmt.Print("\n")
}
}
有人能帮忙吗?我不会使用 % 运算符,我该如何使用它?
更多关于Golang实现交替星号方阵的实战教程也可以访问 https://www.itying.com/category-94-b0.html
6 回复
执行示例不可见,因此我添加一张图片:

当然,你可以避免使用 %,但原帖的练习包含了使用它的说明,并且她询问了如何使用它。
当回答一个看起来像家庭作业的问题时,我倾向于指出正确的方向,而不是直接给出解决方案。
是的,你不需要使用 % 运算符来交替输出。
代码可以这样写:
package main
import "fmt"
func printRow(ch byte, numcols int) {
for i := 0; i < numcols; i++ {
fmt.Printf("%c ", ch)
}
}
func printPattern(n int) {
var ch byte = '*'
for i := 0; i < n; i++ {
printRow(ch, n)
fmt.Println()
if ch == '*' {
ch = '+'
} else {
ch = '*'
}
}
}
func main() {
n := 5
printPattern(n)
}
根据你的需求,你需要交替打印星号和加号的行,而不是在同一行中同时打印两种符号。以下是修正后的代码,使用 % 运算符来区分偶数行和奇数行:
package main
import "fmt"
func main() {
var n int
fmt.Println("Enter a number: ")
fmt.Scan(&n)
for i := 1; i <= n; i++ {
// 使用 % 运算符判断行号的奇偶性
if i%2 == 1 {
// 奇数行打印星号和空格
for j := 1; j <= n; j++ {
if j%2 == 1 {
fmt.Print("*")
} else {
fmt.Print(" ")
}
}
} else {
// 偶数行打印加号和空格
for j := 1; j <= n; j++ {
if j%2 == 1 {
fmt.Print("+")
} else {
fmt.Print(" ")
}
}
}
fmt.Println()
}
}
这段代码会交替打印星号行和加号行,并在每行内交替打印符号和空格。例如,当输入 5 时,输出如下:
* * *
+ + +
* * *
+ + +
* * *


