写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在
package main import ( "bufio" "fmt" "math" "os" ) func main() { num := 0 mappings := make(map[byte]int) mappings['A'] = 10 mappings['B'] = 11 mappings['C'] = 12 mappings['D'] = 13 mappings['E'] = 14 mappings['F'] = 15 scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { s := scanner.Text() // 检测输入参数 if len(s) <= 2 { continue } for i := range s[2:] { // 逆序遍历 c := s[len(s)-i-1] // 进制转化:16^i * c if c >= '0' && c <= '9' { num += int(math.Pow(16, float64(i))) * (int(c) - int('0')) } else if c >= 'A' && c <= 'F' { num += int(math.Pow(16, float64(i))) * mappings[byte(c)] } else { // 非法字符处理 continue } } fmt.Println(num) } }
package main import ( "fmt" "bufio" "os" "math" ) func main() { str := "" scanner := bufio.NewScanner(os.Stdin) scanner.Scan() str = scanner.Text() str = str[2:] res := 0 n := 0 for i:=len(str)-1; i>=0; i--{ val := str[i] val1 := int(math.Pow(16, float64(n))) res = res + change[rune(val)]*val1 n ++ } fmt.Println(res) } var change = map[rune]int{'1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, 'A':10, 'B':11, 'C':12, 'D':13, 'E':14, 'F':15}ff关键在于字符串、字符、数组、转换,其实用go刷题还是很费事的。
package main import ( "fmt" "bufio" "os" "strconv" ) func main() { input := bufio.NewScanner(os.Stdin) input.Scan() s := input.Text() val := s[2:] n, err := strconv.ParseUint(val, 16, 32) if err != nil { panic(err) } fmt.Println(n) }
package main import ( "fmt" ) func main() { a := 0 b := 0 for { n, _ := fmt.Scan(&a,&b) if n == 0 { break } else { fmt.Printf("%d\n", a) fmt.Printf("%d\n", b) } } }惊呆了,这样子也能通过。
package main import ( "fmt" "os" "bufio" "strconv" ) func main(){ input := bufio.NewScanner(os.Stdin) for input.Scan(){ v, _ := strconv.ParseInt(input.Text(), 0, 64) fmt.Println(v) } }