方法课堂练习题(2)|学习笔记

简介: 快速学习方法课堂练习题(2)

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:方法课堂练习题(2)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/626/detail/9681


方法课堂练习题(2)

 

内容介绍:

一、习题4

二、习题5

三、习题6

四、课后练习

 

一、习题4

编写方法:判断一个数是奇数还是偶数

此题最好绑定结构体的指针类型,这样 mu 就不会进行值的拷贝。判断一个数是奇数还是偶数,需要利用 judgenumber。而判断一个数是奇数还是偶数应该值返还回来,因此输入判断 if num % 2==0{},如果 nummber%2=0,说明此数刚好能够被二整除,那么此时此刻我们认为它就是一个偶数,则输出为“是偶数”(fmt.Println("是偶数"))。如果该数不能够被二整除,我们就输出一个方法 fmt.Println("是奇数"),输出结果为“是奇数”。调用时因为此题是指针类型,所以严格来说应该输入 (&mu) . JudgeNum(10)完成调用,但是实际上底层做了优化,因此输入 mu.judgeNum(10)即可完成调用。运行发现,输出结果为:10是偶数;调用时将括号数值更改,即可完成判断。

核心代码:

func (mu *MethodUti1s) JudgeNum(num int){

if num %2 = 0{

fmt.Print1n("是偶数..")

}else{

fmt.Print1n("是奇数..")

}

}

func main(){

mu.judgeNum(10)

 

二、习题5

根据行、列、字符打印对应行数和列数的字符,比如:行:3,列:2,字符自定义

此题应该接收三个参数对吧,一个是行,一个是列,还有自定义打印字符,输入func (mu *MethodUtils) Print3(n int,m int,key string),进行两次for循环,for i:=1;i=n;i++{for j :=1;j<=m;j++{,然后输出代码为:fmt.Print(key),并换行 fmt.Println()。调用时,输入 mu.Print3(7,20,”#”),即可打印出7行20列#的矩形,达到想要的效果。可以通过改变括号内容,更改矩形的形式。

核心代码:

func (mu *Methodutils) Print3(n int, m int, key string){

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

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

fmt.print(key)

}

fmt.Print1n()

}

}

mu.Print3(7,20,”#”)

 

三、习题6

定义小小计算器结构体 (Calcuator),实现加减乘除四个功能

实现形式1:分四个方法完成:分别计算加减乘除

定义一个结构体,type Calcuator struct{。该结构体需要两个参数,参数的定义方式有两种,第一种是把参数直接写到Calcuator中去,用字段形式(Num1 float64 Num2float64 )体现;第二种方式则通过直接接收。如果写成四个方法,分别完成加减乘除。首先是加法,输入代码:func (calcuator *calcuator) getsum() float64{},其中*calcuator代表指针,int{}表示返回值,计算方法则是分别在变量里取出num1和num2,并进行求和计算,代码是:return calcuator.Num1 +calcuator.Num2;再完成减法运算,原理类似,代码为:func (calcuator *calcuator) getsub() float64{} return calcuator.Num1 -calcuator.Num2;乘法与除法的运行规则与加减法的运算规则类似,可以依据上述进行类推,不进行赘述。

测试时,首先创建一个Calcuator变量(var calcuator Calcuator),再对Num1和Num2赋值,例如对Num1赋值为1.2(calcuator.Num1=1.2),Num2赋值为2.2(calcuator.Num2 =2.2),输入代码:fmt.Println( "sum=",calcuator.getsum())

fmt.Printin("sub=", calcuator.getsub())

}

,运算结果输出为和(sum=)、差(sub=),此时的运算结果精度较高,是由于未进行格式化处理,可以通过fmt.Printf("sum=%v\n",fmt.sprintf("%.2f",calcuator.getsum()))

fmt.Printf("sub=%v\n",fmt.sprintf("%.2f",calcuator.getsub()))

进行格式化处理以降低精度

核心代码:

type Calcuator struct{

Num1 float64

Num2 f1oat64

}

func (calcuator *Calcuator) getsum() float64 {

return calcuator. Num1 +calcuator.Num2

}

func (calcuator *calcuator) getsub()float64 {

return calcuator. Num1 +calcuator.Num2

}

var calcuator Calcuator

calcuator.Num1=1.2

calcuator.Num2 =2.2fmt.Printf("sum=%v\n",fmt.sprintf("%.2f",calcuator.getsum()))fmt.Printf("sub=%v\n",fmt.sprintf("%.2f",calcuator.getsub()))

实现形式2:用一个方法搞定,需要接收两个数以及一个运算符

首先为指针绑定方法,并传入运算符 operator,并返回 float64 的结果,代码为:fune (calcuator *calcuator) getRes(operator byte) float64{}。接下来要完成判断,判断出运算符的类型,再去执行对应的操作,代码为:

res := 0.0

switch operator {

Case‘+’:

res =calcuator .Num1 +calcuator. Num2

Case‘-’:

res = calcuator.Num1 - calcuator.Num2

case‘*’:

res = calcuator .Num1*calcuator.Num2

case‘/’:

res = calcuator.Num1 /calcuator.Num2

,即首先要定义一个结果0.0,利用 switch 语句做判断,若输入了除+—*/以外的运算符,则输出“运算符输入有误”提示并返回原始res值0。上述流程全部完成后,输入return res 结束。通过 res :=calcuator.getRes(‘+’)

fmt.Print1n("res=", res)完成调用,输出结果与理论值一致(由于在实现形式1中已经定义了 Num1 和 Num2 的值,故此时仍以上述 Num1=1,Num2=2 进行运算),由于没有进行格式化故结果精度很高

核心代码:

fune (calcuator *calcuator) getRes(operator byte)float64 {

res :=0.0

switch operator{

case'+':

res = calcuator.Num1 + calcuator. Num2

case'-':

res = calcuator.Num1 - calcuator. Num2

case'*':

res = calcuator.Num1 * calcuator. Num2

case'/':

res = calcuator.Num1 / calcuator. Num2

default:

fmt.Print1n(”运算符输入有误...")

}

return res

}

var calcuator Calcuator

calcuator.Num1=1.2

calcuator.Num2 =2.2

res :=calcuator.getRes(‘+’)

fmt.Print1n("res=", res)

 

四、课后练习

1.在 MethodUtils 结构体编个方法,从键盘接收整数(1-9),打印对应乘法表:

image.png

2.编写方法,使给定的一个二维数组(3×3)转置:

image.png

相关文章
|
SQL 关系型数据库 MySQL
|
移动开发 C++
学习C++笔记428
C++ Web 编程
63 0
|
Shell Apache C++
学习C++笔记406
C++ Web 编程
61 0
|
C++
学习C++笔记346
C++ 异常处理
66 0
|
C++
学习C++笔记339
C++ 异常处理
66 0
|
iOS开发 C++
学习C++笔记336
C++ 文件和流
63 0
|
C++
学习C++笔记327
C++ 文件和流
49 0
|
编译器 C++
学习C++笔记305
C++ 多态
63 0
|
编译器
函数略讲(课堂笔记)
函数略讲(课堂笔记)
函数略讲(课堂笔记)
|
C++
学习C++笔记255
C++ 日期 & 时间
67 0

热门文章

最新文章