首页 > 其他分享 >Go语言打印九九乘法表,这是整洁代码范例

Go语言打印九九乘法表,这是整洁代码范例

时间:2023-11-17 17:55:25浏览次数:29  
标签:范例 输出 九九乘法 打印 Multiplication 循环 Go

Go语言打印九九乘法表,这是整洁代码范例

/ Go 语言输出九九乘法表 /

九九乘法表是我们学习编程时的一项基本练习,它看似简单,通过实现输出九九乘法表可以加深对 Go 语言循环结构的理解和运用。

本文将使用 Go 语言输出九九乘法表,内容涵盖:

  1. 问题描述
  2. 基本思路
  3. 使用双层 for 循环实现
  4. 控制打印格式
  5. 加入条件判断
  6. 计算并打印结果
  7. 优化循环结构
  8. 为表格添加标题
  9. 完整代码示例
  10. 使用go方法实现(纯练习)
  11. 总结思考

希望通过具体的代码实现和输出分析,可以帮助大家更好地理解 Go 语言中的基础循环语法,和编程思维方式。输出九九乘法表看似简单,其中却包含许多编程学习的思考点。

*1*

1. 问题描述

要求编写 Go 语言程序,在终端打印输出九九乘法表,格式如下:

1 * 1 = 1
1 * 2 = 2  2 * 2 = 4
...
1 * 9 = 9  2 * 9 = 18 ... 9 * 9 = 81

分析可知需要使用双层循环,并在内层控制打印格式。

*2*

2. 基本思路

九九乘法表输出的基本思路是:

  • 使用外层循环控制行
  • 使用内层循环控制列
  • 内层循环处理乘法计算和打印

*3*

3. 使用双层 for 循环实现

使用双层 for 循环可以实现九九表的打印:

for i := 1; i <= 9; i++ {
  for j := 1; j <= i; j++ {
    
  }
}

外层 for 循环控制行,内层 for 循环控制列。

*4*

4. 控制打印格式

通过 fmt.Printf 可以格式化输出内容:

for i := 1; i <= 9; i++ {
  for j := 1; j <= i; j++ {
    fmt.Printf("%d * %d = %d", i, j, i*j) 
  }
  fmt.Println() 
}

Println 打印换行符,进行行分隔。

*5*

5. 加入条件判断

可以判断内层循环 index,从而控制换行:

for i := 1; i <= 9; i++ {
  for j := 1; j <= i; j++ {
    fmt.Printf("%d * %d = %d", i, j, i*j)
    if j < i {
      fmt.Printf("\t") 
    }
  }
  fmt.Println()
}

*6*

6. 计算并打印结果

上面直接使用 i * j 进行运算,也可以分开计算结果:

for i := 1; i <= 9; i++ {
  for j := 1; j <= i; j++ {
    result := i * j
    fmt.Printf("%d * %d = %d", i, j, result)
    
    if j < i {
      fmt.Printf("\t")
    }
  }
  fmt.Println() 
}

这样分离了计算和输出。

*7*

7. 优化循环结构

可以将条件判断移到 for 循环中:

for i := 1; i <= 9; i++ {
  for j := 1; j <= i; j++ {
      
    if j < i {
      fmt.Printf("\t")
    }
  }
  fmt.Println()
}

这样可以精简代码逻辑。

*8*

8. 为表格添加标题

可以在外层再套一层循环打印标题:

fmt.Println("Multiplication Table")

for i := 1; i <= 9; i++ {

  // 省略内层循环逻辑

  fmt.Println()
}

这样输出表格增加了标题。

*9*

9. 完整代码示例

综合以上,完成代码如下:

package main

import "fmt"

func main() {

  fmt.Println("Multiplication Table")

  for i := 1; i <= 9; i++ {

    for j := 1; j <= i; j++ {

      if j < i {
        fmt.Printf("%d * %d = %d\t", i, j, i*j)
      } else {
        fmt.Printf("%d * %d = %d", i, j, i*j)  
      }
    }
    
    fmt.Println()
  }
}

输出结果:

Multiplication Table 
1 * 1 = 1
1 * 2 = 2   2 * 2 = 4
1 * 3 = 3   2 * 3 = 6  3 * 3 = 9
...

*10*

使用go方法实现如下:-----当然这个没必要使用方法,直接一个函数完事儿

package main

import "fmt"

// 定义结构体
type Multiplication_Table struct {
}

func (mt Multiplication_Table) res() {
	for i := 1; i <= 9; i++ {

		for j := 1; j <= i; j++ {

			if j < i {
				fmt.Printf("%d * %d = %d\t", i, j, i*j)
			} else {
				fmt.Printf("%d * %d = %d", i, j, i*j)
			}
		}
		fmt.Println()
	}
}
func main() {
	var mt Multiplication_Table
	fmt.Println("Multiplication Table")
    //调用res()方法
	mt.res()
}

运行结果如下:

image

*11*

11. 总结思考

输出九九乘法表虽看似简单,但其中包含:

  • 嵌套循环的思想
  • 循环控制和判断
  • 格式化打印输出
  • 算法优化

都是编程非常基础的概念和技能。在实现的过程中不仅巩固了 Go 语言循环语法,也培养了编程思维能力。可以进行扩展练习,如输出更大的表格、或者将结果输出到文件等。输出九九乘法表是一个编程入门的好题目。

标签:范例,输出,九九乘法,打印,Multiplication,循环,Go
From: https://www.cnblogs.com/MarkGuo/p/17839395.html

相关文章

  • beego:将服务器上的图片显示到客户端浏览器
    来源:http://www.shanhubei.com/archives/2840.html将服务器上的图片显示到客户端浏览器//@Title//@Description显示图片//@Paramnumquerystringtrue比如:图片名字20181120164548_75_jd.jpg//@Success200//@router/ShowImage[get]func(u......
  • 使用golang来解密m3u8视频播放列表里面的ts文件
    如果我有一个1.2G的mp4格式的电影,想要放在网站上进行播放,直接用video标签,src属性设置为视频的地址就可以了!这种观看体验,究竟怎么样,可以自己去尝试下。。。结果是令人崩溃的。。。加载巨慢,无法选择性观看自己想要看的部分,反正就是哪哪儿都不爽。 那么为了解决这个问题,现在有很......
  • go rpc原生用法
    Go先锋读完需要7分钟速读仅需3分钟  概述在分布式系统中,远程过程调用(RPC)是一种关键的通信方式,而Go语言提供了强大的RPC支持,使得在网络间实现函数调用变得更加便捷。本文将探讨Go语言中RPC的基础概念、实现方式,并通过示例代码演示如何模拟远程过程调用系统......
  • GoldenGate高可用管理组件-XAG部署与管理
    适用范围适用于OracleRAC集群环境,并在创建ACFS共享文件系统中部署GoldenGate软件前提下,部署xag高可用组件对GoldenGate进行高可用管理。实施步骤1.安装XAG#在安装OGG的节点安装xag#使用grid用户安装unzipxagpack_7b.zip-d/tmpcd/tmp/xag./xagsetup.sh--install--directo......
  • 学习笔记426—keras中to_categorical函数解析
    keras中to_categorical函数解析1.to_categorical的功能简单来说,to_categorical就是将类别向量转换为二进制(只有0和1)的矩阵类型表示。其表现为将原有的类别向量转换为独热编码的形式。先上代码看一下效果:fromkeras.utils.np_utilsimport*#类别向量定义b=[0,1,2,3,4,5,6,7,8]......
  • go语言解决跨域的问题图片显示问题
    来源:http://www.shanhubei.com/archives/2838.html直接上代码packagemainimport("fmt""io/ioutil""net/http")//获取C的图片数据funcReadImgData(urlstring)[]byte{resp,err:=http.Get(url)iferr!=nil{......
  • Go标准库学习:builtin
    Builtin模块最近在学Go,但感觉标准库中文资料不是很多,直接看官网文档又没有循序渐进的过程,所以自己在边看边记录,如有谬误还请指出,感谢。这部分总结了Go中内置的模块,不需要导包。来自Go的标准文档,版本是1.21.4。在类型方面是我自己的总结和理解。类型(types)Go语言提供的类型......
  • Django2.0以上版本path方法——路由层使用的转换器(五种)
    str#匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式int#匹配正整数,包含0。slug#匹配字母、数字以及横杠、下划线组成的字符串。uuid#匹配格式化的uuid,如075194d3-6885-417e-a8a8-6c931e272f00。path#匹配任何非空字符串,包含了路径分隔符(/)使用方式:p......
  • golang channel
    ”不要以共享内存的方式来通信,相反,要通过通信来共享内存“golang的一个思想,不整文的,整点武的,具体来看channel怎么做的有一个很关键的golangMPG模型再单独分析,这篇先只分析channel定义//runtim/chan.gotypehchanstruct{ qcountuint//通道里的元素......
  • Django07
    多表查询(跨表查询)子查询链表查询正反向查询概念聚合查询分组查询F查询和Q查询模型层中常见字段类型和参数Django中如何开启事务——————————————————————————————————————————————————————————————————......