1.想要实现的功能
定义一个运算器,能够实现两个或以上的数据的加减乘除预算以及整数求余、整数阶乘以及求绝对值
2.已经完成的效果
1.能实现两个数的加减乘除以及计算一个整数的阶乘
2.operation包
package operation
import (
"fmt"
"strconv"
)
func AlgebraOperation(operator string, n1 float64, n2 float64, args ...float64) float64 {
var sum float64
if operator == "+" { //实现任意多个浮点型数据加法
sum = n1 + n2
for i := 0; i < len(args); i++ {
sum += args[i]
}
} else if operator == "-" { //实现任意多个浮点型数据减法
sum = n1 - n2
for i := 0; i < len(args); i++ {
sum -= args[i]
}
sum, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", sum), 64) //精度控制
} else if operator == "*" { //实现任意多个浮点型数据乘法
sum = n1 * n2
for i := 0; i < len(args); i++ {
sum *= args[i]
}
} else if operator == "/" { //实现任意多个浮点型数据除法
sum = n1 / n2
for i := 0; i < len(args); i++ {
sum /= args[i]
}
} else {
fmt.Println("输入的运算符有误") //自动返回float64类型的零值
}
return sum
}
func FacOperation(n int) int {
num := 1
for i := 1; i <= n; i++ {
num = num * i
}
return num
}
3.主函数
package main
import (
"GOProject/src/go_project/project_01/project_01_01/operation"
"fmt"
)
func main() {
var result float64
var judge int
fmt.Println("请选择你是否要打开计算器:")
fmt.Println("1.表示打开加减乘除计算器\t2.打开阶乘计算\t3.表示退出程序")
fmt.Scanln(&judge)
if judge == 1 {
var num [2]float64
var operator string
fmt.Println("请输入两个整数,并输入你想要进行的加减乘除符号")
fmt.Println("如果你想要更多的数参与运算,你可以把其他的数写在运算符号后面")
fmt.Println("比如(+,3,6,,7)表示3+6+7")
fmt.Println("输入运算符")
fmt.Scan(&operator)
fmt.Println("输入第一个被操作数")
fmt.Scan(&num[0])
fmt.Println("输入第二个被操作数")
fmt.Scan(&num[1])
result = operation.AlgebraOperation(operator, num[0], num[1])
fmt.Println(result)
} else if judge == 2 {
var x int
fmt.Println("输入要求阶乘的数")
fmt.Scan(&x)
result2 := operation.FacOperation(x)
fmt.Println(x, "的阶乘是", result2)
}
}
3.发现的问题
1.byte类型使用不熟
2.不会使用链表进行操作