- 练习题
- 判断101-200之间有多个素数,并输出所有素数
- 水仙花问题
- 对于一个数n,求n的阶乘之和,即1!+2!+3!+---n!
- a值和b值交换
- string-切片和反转
- 基本数据类型练习
- 九九乘法表
- rune计算string的字符数
- 数组练习题
- 斐波那契数列(非递归函数)
练习题
判断101-200之间有多个素数,并输出所有素数
package main
import ("fmt""math"
)func isPrimes(n int ) bool {for i:=2;i <= int(math.Sqrt(float64(n))); i++{ //开方if n%i==0 {return false}}return true
}
func main(){var n intvar m int fmt.Scanf("%d%d",&n,&m) //从终端输入字符串,自动转换为int存入变量里面for i := n;i <m; i++{if isPrimes(i) == true{fmt.Printf("%d\n",i)continue}}
}
水仙花问题
打印出100-999中所有的水仙花数,所谓水仙花数是指一个3位数,期个位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方
package main
import "fmt"
func isNumber(n int) bool {var i,j,k inti = n %10j = (n /10) %10k = n / 100//fmt.Printf("%d,%d,%d\n",i,j,k)sum := i*i*i + j*j*j + k*k*kreturn sum == n
}
func main(){var n intvar m intfmt.Scanf("%d,%d",&n,&m)for i :=n;i<=m;i++{if isNumber(i) == true{fmt.Println(i,"is shuixianhua")}}
}
对于一个数n,求n的阶乘之和,即1!+2!+3!+---n!
1!=1
2!=2*1=2 2!=1!*2
3!=3*2*1=6 3!=2!*3
4!=4*3*2*1=24 4!=3!*4
5!=5*4*3*2*1=120 5!=4!*5package main
import "fmt"func sum(n int) uint64{var s uint64 = 1var sum uint64 = 0for i :=1;i<=n;i++{s1 := s * uint64(i)fmt.Printf("%d!=%v*%d,,,%d\n",i,s,i,s1)sum+=s1s=s1}return sum
}
func main(){var n intfmt.Scanf("%d",&n)s := sum(n)fmt.Println(s)
}
a值和b值交换
package main//3种方式,实现a,b值的交换
//第一种是,交换指针,赋值内存地址的形式
//第二种是,函数的形式,返回值去交换值
//第三种是,直接交换赋值
import ("fmt"
)
func swap(a *int ,b *int ){ // *指针的意思,tmp:= *a //*a,tmp指向a的指针*a=*b //a的指针等于b的指针*b=tmp //b的指针等于tmpreturn
}func swap1(a int,b int)(int,int ){return b,a
}func test(){var a=100 //a 的作用域是在函数内部fmt.Println(a)for i := 0 ;i <100 ;i++{var b = i * 2 //b的作用域在这个语句块里面fmt.Println(b)}// fmt.println(b) //在这一层就不能出现b的变量if(a >0){var c int = 100 //这个c的作用域也在这个if语句块里面fmt.Println(c)}
}func main(){first := 100second := 200//1/ swap(&first,&second) //传入内存地址,传入的是一个副本//2/ first,second = swap1(first,second) //利用函数返回值的形式first,second=second,first //3/第三种方式交换first,second的值fmt.Println("first=",first)fmt.Println("second=",second)test()
}
string-切片和反转
package main
import "fmt"//string类型字符串反转----方式1
func reverse1(str string) string {var result stringstrlen:= len(str)for i :=0;i < strlen;i++ {result=result + fmt.Sprintf("%c",str[strlen-i-1])}return result
}
func reverse1_main(str3 string){//str反转,方法1result := reverse1(str3)fmt.Println(result)fmt.Printf("%v",result)
}//string类型字符串反转----方式2
func reverse2(str string) string {var result []byte //数组tmp := []byte(str)lenth := len(str)for i :=0 ;i < lenth;i++{result = append(result,tmp[lenth-i-1])}return string(result)
}
func reverse2_main(str3 string){//str反转,方法2result := reverse2(str3)fmt.Println(result)
}//string类型----切片,拼接
func slices(){var str1="hello"str2 := "world"// str3 := str1 +" "+ str2 //字符串拼接 方式1str3 := fmt.Sprintf("%s %s",str1,str2) //字符串拼接 方式2n := len(str3) //字符串长度fmt.Println(str3)fmt.Printf("len(str3)=%d\n",n)substr := str3[0:5] //切片fmt.Println(substr)substr = str3[6:] //切片fmt.Println(substr)
}func main(){slices()reverse1_main("helloworld_12345")reverse2_main("helloworld_12345")
}
基本数据类型练习
九九乘法表
//1. 九九乘法表
func jj9() {for i := 1; i <= 9; i++ {for j := 1; j <= i; j++ {product := i * jfmt.Printf("%d*%d=%d\t", i, j, product)}fmt.Printf("\n")}
}
rune计算string的字符数
runne 会把string转化成int32切片,并且存储的是字符对应的acsii码
var s = "helloworld,温暖"runeStr := []rune(s) //runne 会把string转化成int32切片,并且存储的是字符对应的acsii码fmt.Printf("%T,%d\n", runeStr, runeStr) //[]int32,[104 101 108 108 111 119 111 114 108 100 44 28201 26262]fmt.Printf("%c\n", runeStr) //使用%c,获取acsii码对应的字符lenRuneStr := len(runeStr)fmt.Printf("s字符串里面有%d字符\n", lenRuneStr) //s字符串里面有13字符
数组练习题
斐波那契数列(非递归函数)
// 1 1 2 3 5 8 13 21 34
package mainimport "fmt"func fab(n int) {var a []uint64a = make([]uint64, n)a[0] = 1a[1] = 1for i := 2; i < n; i++ {a[i] = a[i-1] + a[i-2]}for _, v := range a {fmt.Println(v)}
}
func main() {fab(10)
}
中英文符号字符统计
// 7. 字符统计 ---> 编写一个函数接收一个字符串参数,输出该字符串中包含的中文字符数,英文字符数,数字字符数还有其他字符数。
func example7() {var s1 = "刘,,,lqx1679,&&*() 123祥^%$编 写一5332个函数 ##@@$%^祺 085"ss1 := []rune(s1)fmt.Println(ss1)var chinaStrNum intvar englishStrNum intvar mathStrNum intvar orthStrNum intfor i := 0; i < len(ss1); i++ {switch {case len(fmt.Sprintf("%c", ss1[i])) >= 3:chinaStrNum++fmt.Printf("%c 是一个中文字符 %d\n", ss1[i], chinaStrNum)case ('a' <= ss1[i] && ss1[i] <= 'z') || ('A' <= ss1[i] && ss1[i] <= 'Z'):englishStrNum++fmt.Printf("%c 是一个英文字符 %d\n", ss1[i], englishStrNum)case '0' <= ss1[i] && ss1[i] <= '9':mathStrNum++fmt.Printf("%c 是一个数字字符 %d\n", ss1[i], mathStrNum)default:orthStrNum++fmt.Printf("%c 是一个其他字符 %d\n", ss1[i], orthStrNum)}}fmt.Printf("中文字符有 %d 个,英文字符有 %d 个,数字字符有 %d 个,其他字符有 %d 个\n", chinaStrNum, englishStrNum, mathStrNum, orthStrNum)
}