Go语言学习之十道经典数值运算题|Go主题月

383 阅读1分钟

作者:看那个码农

公众号:看那个码农

上期内容介绍了Go语言学习之力扣-删除有序数组中的重复项II|Go主题月

  • 删除有序数组中的重复项II

本篇内容将继续带领大家走进Go语言的世界。

1.本文简介

Go语言学习之十道经典数值运算题

2.求出一个数组的和与平均值

代码如下:

package main

import (
   "fmt"
)

func main() {
   var strint  = [...]float64{1, 2, 3, 4, 5, 6.892}
   sum := 0.0
   for _, val := range strint {
      //累计求和
      sum += val
   }
      //平均值保留到3位小数
   fmt.Printf("数组元素累加和sum=%.4v,\n元素累加平均值=%.4v \n",sum, float64(sum)/float64(len(strint)))
}

输出为:

image.png

3.求出一个数组的最大值,并输出元素对应的下标

代码如下:

package main

import (
   "fmt"
)

func main() {
   var intArr  = [...]int{3,4,9,8,15,20}
   maxVal := intArr[0]
   maxValIndex := 0
   for i := 0; i < len(intArr); i++ {
      //从第二个元素开始循环比较,如果发现有更大的数,则交换
      if maxVal < intArr[i] {
         maxVal = intArr[i]
         maxValIndex = i
      }
   }
   fmt.Printf("数组最大值%v,\n数值最大值的下标为%v", maxVal, maxValIndex)
}

输出为:

image.png

4.用Go语言打印1~100之间,9的整数倍数的个数及总和

代码如下:

package main

import "fmt"

func main() {
   var count int = 0
   var sum   int = 0
   var i     int = 1
   fmt.Print("100以内9的倍数的整数有:")
   for ; i <= 100; i++ {
      if i % 9 == 0 {
         count++
         sum += i
         fmt.Print(" ",i)
      }
   }
   fmt.Printf("\n一共有%v个,总和为%v\n",count,sum)
}

输出为:

image.png

5.打印1~30之间的奇数

代码如下:

package main

import "fmt"

func main() {
   for i:= 1;i<=30;i++{
      if i%2==0 {
         continue
      }
      fmt.Println("30以内的奇数是:",i)
   }
}

输出为:

image.png

6.打印1~30之间的偶数

代码如下:

package main

import "fmt"

func main() {
   for i:= 1;i<=30;i++{
      if i%2==0 {
         fmt.Println("30以内的偶数是:",i)
      }
   }
}

输出为:

image.png

7. 求1+2!+3!+…+20!的和

代码如下:

package main

import "fmt"

func main() {
   var a, b = 1, 0
   for i := 1; i <=20; i++ {
      a = a * i
      b = b + a
      fmt.Printf("%d的阶乘是:%d\n", i, b)
   }
   fmt.Println("1+2!+3!+...+20!的和是:", b)
}

输出为:

image.png

8.求第n个数的斐波那契数

代码如下:

package main

import "fmt"

func Fibonacci(n int) int {
   if (n == 1 || n == 2) {
      return 1
   } else {
      return Fibonacci(n-1)+ Fibonacci(n-2)
   }
}

func main() {
   fmt.Println("您想输出第几个数的斐波那契数:")
   var x int
   fmt.Scan(&x)
   res :=Fibonacci(x)
   fmt.Printf("第%v个数的斐波那契数是%v",x,res)
}

输出为:

image.png

9.求两个数的最大公约数和最小公倍数

代码如下:

package main

import "fmt"

func yueshu(node1 int,node2 int) int {
   var node3 int
   for node2 != 0 {
      node3 = node1 % node2
      node1 = node2
      node2 = node3
   }
   return node1
}

func main() {
   var a,b,c int
   fmt.Scan(&a,&b)
   tempA := a
   tempB := b
   c=yueshu(tempA,tempB)
   fmt.Println("最大公约数为:",c)
   fmt.Println("最小公倍数为:",tempA*tempB/c)
}

输出为:

image.png

10.求1000以内的水仙花数

每个位上数字的立方和,刚好等于该数字本身,那么就叫水仙花数。

比如:153
1*1*1 + 5*5*5 + 3*3*3 = 1+125+27=153

代码如下:

package main

import (
   "fmt"
   "math"
)

func main() {
   for i := 100; i < 1000; i++ {
      x := i / 100     //百位
      y := i / 10 % 10 //十位
      z := i % 10      //个位
      if math.Pow(float64(x), 3)+math.Pow(float64(y), 3)+math.Pow(float64(z), 3) == float64(i) {
         fmt.Println(i)
      }
   }
}

输出如下:

image.png

11.向上取整,向下取整,四舍五入

代码如下:

package main

import (
   "fmt"
   "math"
)

func main() {
   node:=5.4
   fmt.Printf("%v向上取整后的数为:%v\n",node,math.Ceil(node))
   fmt.Printf("%v向下取整后的数为:%v\n",node,math.Floor(node))
   fmt.Printf("%v四舍五入后的数为:%v\n",node,math.Round(node))
}

输出为:

image.png

如果你觉得这篇内容对你有帮助的话:

1、点赞支持下吧,让更多的人也能看到这篇内容

2、关注公众号:看那个码农,我们一起学习一起进步。