开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map :函数课堂练习题和作业】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/625/detail/9614
函数课堂练习题和作业
基本内容:
一、函数可以没有返回值案例,编写一个函数,从终端输入一个整数打印出对应的金子塔
二、编写一个函数,从终端输入一个整数(1一9),打印出对应的乘法表
三、编写函数,对给定的一个二维数组(3×3)转置
说明
在前面几节课讲 for 循环的时候,讲过两个案例。一个是用 for 循环打印金字塔,另一个是用 for 循环打印99乘法表。没有用函数,用的是面向过程的方式,现在要求用函数的方式实现。打印金字塔案例在第5章多重循环控制里讲到过,当时讲这个案例的时候没有用函数封装,而用的是原始的面向过程的方式,做开发的时候需要将这些功能封装到函数内部,需要打印金字塔或者乘法表的时候直接进行调用该函数。
一、函数可以没有返回值案例,编写一个函数,从终端输入一个整数打印出对应的金子塔
1、分析思路
将原来写的打印金字塔的案例,使用函数的方式进行封装,在需要打印时,直接调用即可。
2、操作方法
先把代码主体结构写出,引入包 fmt ,把代码主函数写出来,将打印金字塔的代码封装到函数中 func printPyramid(totalLevel int) 先定义层数,没有返回值。接收了一个 totalLevel ,调用 printPyramid 函数,就可以打印金字塔。先传一个9,打出的是空心金字塔。
如果不想打空心金字塔,把 if 和 else 注释掉,就变为实心金字塔了。要求是从终端输入一个整数打印出对应的金子塔,先定义一个变量 var n int,输入 fmt.Println ("请输入打印金字塔的层数"),必须要传入地址,地址传入之后才能够打印出外面的“n”。
3、代码如下:
package main
import (
"fmt"
)
//将打印金字塔的代码封装到函数中
func printPyramid(totalLevel int){
//
i表示层数
for i :=1; i <= totalLevel; i++ {
//在打印*前先打印空格
for k := 1; k <= totalLevel - i; k++ {
fmt.Print(”")
}
//j表示每层打印多少*
for j :=1; j = 2*i - 1;j++ {
fmt.Print("*")
}
fmt.Println()
}
}
func main() {
//调用printPyramid函数,就可以打印金字塔
//从终端输入一个整数打印出对应的金子塔
var n int
fmt.Println
("请输入打印金字塔的层数")
fmt.scanln
( &n
)
printPyramid
(9
)
}
输出结果如下图所示:
二、编写一个函数,从终端输入一个整数(1-9),打印出对应的乘法表
1、分析思路:
就是将原来写的调用九九乘法表的案例,使用函数的方式封装,在需要打印时直接调用即可
2、操作方法
新建一个文件夹 printmulti,新建一个文件 main.go ,引入包 fmt ,把代码主函数写出来。编写一个函数调用九九乘法表,接收一个整数 int ,不需要返回值,代码中 num 代表层数,形参改为 num。从终端输入一个整数表示要打印的乘法表对应的数,定义一个变量 num,fmt.Println(“请输入九九乘法表的对应数"),拿到 num 这个值,再继续调用,直接传值过去。
3、代码如下:
package main
import (
"fmt"
)
//编写一个函数调用九九乘法表
func printMulti(num int) {
//打印出九九乘法表
//i表示层数
for i :=1; i <= num; i++ {
for j :=1; j =i; j++ {
fmt.Printf("%v* %v = %v \t",j, i, j* i)
}
fmt.Println()
}
}
func main() {
//从终端输入一个整数表示要打印的乘法表对应的数
var num int
fmt.Println(“请输入九九乘法表的对应数")
fmt.scanln(&num)
printMulti(num)
}
通过这个案例可以看到把功能封装到函数里调用更加的方便,在做程序开发的时候,如果能够把功能封装到函数中,尽量把它封装到函数中,这样有利于后面的调用,代码也看起来简洁。
三、编写函数,对给定的一个二维数组(3×3)进行转置,这个题讲数组的时候再完成。
转置就是将“123456789”经过转置变成“147258369”,把行和列进行一个对换。比如说2转置过后就放到4的位置,4和2交换位置。3和7交换就是行和列交换。中间159这条线是对称的,没有变化。因为这个题还没解讲数组,需要预习数组方面的内容才可以完成,这个题是一个课后练习课后作业。