1.使用go实现左右读都一样
func process(str string) bool {
t:=[]rune(str)
length := len(t)
for i,_ :=range t{
if i == length/2{
break
}
last := length-i -1
if t[i] !=t[last]{
return false
}
}
return true
}
func main() {
var str string
fmt.Scanf("%sd",&str)
if process(str){
fmt.Println("yes")
}else {
fmt.Println("no")
}
}
2.使用go语言实现因子之和等于他本身(完数)
func perfect(n int)bool{
var sum int = 0
for i:=1;i<n;i++{
if n%i ==0{
sum+=i
}
}
return n == sum
}
func process(n int) {
for i:=1;i<n+1;i++{
if perfect(i){
fmt.Println(i)
}
}
}
func main() {
var n int
fmt.Scanf("%d",&n)
process(n)
}
3.go语言实现九九乘法表
func multi(){
for i:=0;i<9;i++{
for j:=0;j<=i;j++{
fmt.Printf("%d*%d=%d ",(i+1),j+1,(i+1)*(j+1))
}
fmt.Println()
}
}
func main(){
multi
}
4.输入一行字符,分别统计字母数字空格及其他字符的个数
func count(str string)(worldCount,spaceCount,numberCount,otherCount int) {
c :=[]rune(str)
for _,v := range c{
switch {
case v>='a'&& v<'z':
fallthrough
case v>='A' && v<='Z':
worldCount++
case v == ' ':
spaceCount++
case v>=0 && v<=9:
numberCount++
default:
otherCount++
}
}
return
}
func main() {
reader := bufio.NewReader(os.Stdin)
result,_,err := reader.ReadLine()
if err != nil{
fmt.Println("read from console err:",err)
}
wc,sc,nc,oc := count(string(result))
fmt.Printf("world count:%d
space count:%d
number count:%d
other count:%d
",wc,sc,nc,oc)
}
5.利用字符串计算大数值的数字之和
func multi(str1,str2 string) (result string) {
if len(str1) == 0 && len(str2) == 0{
result = "0"
return
}
var index1 = len(str1)-1
var index2 = len(str2)-1
//用left记录进位
var left int
for index1 >=0 && index2 >=0 {
//利用ASCII码来计算实际值,
c1 :=str1[index1] - '0'
c2 :=str2[index2] - '0'
//c1和c2和left类型不一致,需要转成一致
sum := int(c1) + int(c2) + left
if sum >= 10{
left = 1
}else {
left = 0
}
c3 := (sum % 10) +'0'
result = fmt.Sprintf("%c%s",c3,result)
index1--
index2--
}
for index1 >=0 {
c1 := str1[index1]-'0'
sum := int(c1) + left
if sum >= 10{
left = 1
}else {
left = 0
}
c3 :=(sum % 10)+'0'
result = fmt.Sprintf("%c%s",c3,result)
index1--
}
for index2 >=0{
c1 := str2[index2]-'0'
sum := int(c1) +left
if sum >= 10{
left = 1
}else {
left = 0
}
c3 :=(sum % 10)+'0'
result = fmt.Sprintf("%c%s",c3,result)
index2--
}
if left ==1{
result = fmt.Sprintf("1%s",result)
}
return
}
func main() {
reader := bufio.NewReader(os.Stdin)
result ,_,err :=reader.ReadLine()
if err != nil{
fmt.Println("read from console err:",err)
return
}
strSlice := strings.Split(string(result),"+")
if len(strSlice) !=2{
fmt.Println("please input a+b")
return
}
strNumber1 := strings.TrimSpace(strSlice[0])
strNumber2 := strings.TrimSpace(strSlice[1])
fmt.Println(multi(strNumber1,strNumber2))
}