golang经典编程题30题(带答案)golang基础算法30题

1.打印出九九乘法表并统计耗时

package main

import (
	"fmt"
	"time"
)

func main() {
   
	start := time.Now()
	var i, j int
	for i = 1; i <= 9; i++ {
   
		for j = 1; j <= i; j++ {
   
			fmt.Printf("%d*%d=%d\t", i, j, i*j)
		}
		fmt.Println()
	}
	tc := time.Since(start)
	fmt.Printf("耗时是%v", tc)
}

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

package main

import "fmt"

func getMaximumCommonDivisor(a, b int) int {
   
	//获取最大公约数

	for a != b {
   
		if a > b {
   
			a = a - b
		} else if a < b {
   
			b = b - a
		}
	}

	return a

}
func main() {
   
	var a, b = 24, 10
	num := getMaximumCommonDivisor(a, b)
	fmt.Println("a,b的最大公约数是:", num)
	//求最小公倍数相对来说就比较简单了。只需要先求出最大公约数。用两个数的乘积除以最大公约数即可
	fmt.Println("a,b的最小公倍数是:", a*b/num)
}
//结果:
//a,b的最大公约数是: 2
//a,b的最小公倍数是: 120


3.回文数的判断
回文数的概念:即是给定一个数,这个数顺读和逆读都是一样的。例如:121,1221是回文数,123,1231不是回文数。


package main

import (
	"fmt"
)

func isHuiwen(a string) bool {
   
	var i, j int
	var b bool
	for i = 0; i <= len(a)/2-1; i++ {
   
		j = len(a) - 1
		if a[i] != a[j] {
   
			b = false
		}
		b = true
		j--
	}
	return b
}
func main() {
   
	a := "1002332001"
	isHuiwen(a)
	fmt.Println(isHuiwen(a))
}

4.求水仙花数
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)

package main

import (
	"fmt"
)

func isNarcissisticNum(num int) bool {
   
	a := num / 100       //分离出百位a
	b := (num / 10) % 10 //分离处十位b
	c := num % 10        //分离出个位c
	result := a*a*a + b*b*b + c*c*c
	if num == result {
   
		return true
	}
	return false
}
func main() {
   
	for i := 100; i < 1000; i++ {
   
		if isNarcissisticNum(i) {
   
			fmt.Println("水仙花数有:", i)
		}
	}
}
//结果:
//水仙花数有: 153
//水仙花数有: 370
//水仙花数有: 371
//水仙花数有: 407

5.求1-10000之间的同构数
正整数n若是它平方数的尾部,则称n为同构数。
例如:5的平方数是25,且5出现在25的右侧,那么5就是一个同构数。

package main

import "fmt"

func main() {
   
	var i, j, k int
	k = 10
	for i = 1; i <= 10000; i++ {
   
		if i == k {
   
			k *= 10
		}
		j = i * i
		if j%k == i {
   
			fmt.Printf("%d是同构数, %d的平方是%d\n", i, i, j)
		}
	}
}

//结果:
//1是同构数, 1的平方是1
//5是同构数, 5的平方是25
//6是同构数, 6的平方是36
//25是同构数, 25的平方是625
//76是同构数, 76的平方是5776
//376是同构数, 376的平方是141376
//625是同构数, 625的平方是390625
//9376是同构数, 9376的平方是87909376

6.编写一个函数,求100以内的质数
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数

package main

import (
	"fmt"
	"math"
)

func isPrime(i int) bool {
   
	for j := 2; float64(j) <= math.Sqrt(float64(i)); j++ {
   
		if i%j == 0 {
   
			return false

		}
	}
	return true
}
func main() {
   
	var str []int//存放质数
	j := 0
	for i := 2; i < 100; i++ {
   
		if isPrime(i) {
   
			str = append(str, i)
			j++
		}
	}
	fmt.Println(str)
}
//结果
//[2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97]

7.分析以下需求,并用代码实现:
(1)根据工龄(整数)给员工涨工资(整数),工龄和基本工资通过键盘录入
(2)涨工资的条件如下:
[10-15) +5000
[5-10) +2500
[3~5) +1000
[1~3) +500
[0~1) +200
(3)如果用户输入的工龄为10,基本工资为3000,程序运行后打印格式"您目前工作了10年,基本工资为 3000元,
应涨工资 5000元,涨后工资 8000元"


package main

import "fmt"

func main() {
   
	var n, salary, sum, a int
	var err error

	fmt.Println("请输入您的工龄")
	_, err = fmt.Scanln(&n)
	if err != nil {
   
		fmt.Println(err)
	}
	fmt.Println("请输入您的基本工资")
	_, err = fmt.Scanln(&salary)
	if err != nil {
   
		fmt.Println(err)
	}
	if n >= 0 && n < 1 {
   
		a = 200
	} else if n >= 1 && n < 3 {
   
		a = 500
	} else if n >= 3 && n < 5 {
   
		a = 1000
	} else if n >= 5 && n < 10 {
   
		a = 2500
	} else if n >= 10 && n < 15 {
   
		a = 5000
	}
	sum = salary + a
	fmt.Printf("您目前工作了%d年,基本工资为%d元,应涨工资%d元,涨后工资%d元", 
  • 23
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值