oj 的 go语言运行环境感觉有些问题

error输出是入参违法时的输出,这里输入了一次入参,但是代码执行了两次且到了不同的分支,起初以为是代码换行符的原因,但是删除换行符后输入了一次入参,代码执行了三次,产生了三个结果,之前没有遇到过这个问题,本地 centos go1.9.2 linux/386 没有遇到这个问题。
代码:
package main

import(  "fmt"  "math"
)

func zeroToNineteen(num int64){
        exps := []string{"one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fivteen","sixteen","seventeen","eighteen","nineteen"}  fmt.Print(exps[num-1])
}

func twentyToNinetyNine(num int64){  if num<20 {  zeroToNineteen(num)  return  }  a,b := num/10,num%10  exps := []string{"twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"}  fmt.Print(exps[a-2])  if b!=0 {  fmt.Print(" ")  zeroToNineteen(b)  }
}

func oneHundredTo999(num int64){  if num<100 {  twentyToNinetyNine(num)  return  }  exps := " hundred"  a,b := num/100,num%100  zeroToNineteen(a)  fmt.Print(exps)  if b!=0 {  fmt.Print(" and ")  twentyToNinetyNine(b)  }
}

func oneThousandTo999999(num int64){  if num<1000 {  oneHundredTo999(num)  return  }  exps := " thousand "  a,b := num/1000,num%1000  oneHundredTo999(a)  fmt.Print(exps)  if b!=0 {  oneHundredTo999(b)  }
}

func oneMillionTo999999999(num int64){  if num<1000000 {  oneThousandTo999999(num)  return  }  exps := " million "  a,b := num/1000000,num%1000000  oneHundredTo999(a)  fmt.Print(exps)  if b!=0 {  oneThousandTo999999(b)  }
}


func oneBillionToInt32Max(num int64){  if num<1000000000 {  oneMillionTo999999999(num)  return  }  exps := " billion "  a,b := num/1000000000,num%1000000000  oneHundredTo999(a)  fmt.Print(exps)  if b!=0 {  oneMillionTo999999999(b)  }
}

func numToEng(num int64){  if num==0 {  fmt.Println("zero")  return  }  if num<0 {  fmt.Print("negative ")  }  //注:int64最小值在取绝对值后会发生越界,数字太大这里不单独处理了  num = int64(math.Abs(float64(num)))   if num>1000 && num%1000<100{  num_2 := num%1000  num_1 := num - num_2  oneBillionToInt32Max(num_1)  fmt.Print("and ")  twentyToNinetyNine(num_2)  fmt.Println()  return  }  oneBillionToInt32Max(num)  fmt.Println()   }

func main(){  for{  var num int64  _,err := fmt.Scan(&num);  if err != nil{  fmt.Println("error")  return  }  numToEng(num)  }
}

全部评论
代码格式乱掉了,可以看提交历史
点赞 回复 分享
发布于 2017-11-20 19:06

相关推荐

小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务