U

UCloud笔试 编程第一题(以及输入的讨论)

RoLingG 算法 2025-05-16

UCloud笔试 编程第一题(以及输入的讨论)

大意就是,给你两个数 n, k ,n数组里面的元素,两两排列组合,其相乘的结果大于、等于、小于的结果输出出来。

package main

import (
    "fmt"
)

func main() {
    // 定义变量
    var n, m int

    // 输入第一行的两个整数
    fmt.Scan(&n, &m)

    var c = make([]int, n)

    // 输入第二行的四个整数
    for i := 0; i < 4; i++ {
       fmt.Scan(&c[i])
    }
    var res = make([]int, 3)
    for i := 0; i < len(c); i++ {
       for j := i + 1; j < len(c); j++ {
          if c[i]*c[j] > m {
             res[0]++
          }
          if c[i]*c[j] == m {
             res[1]++
          }
          if c[i]*c[j] < m {
             res[2]++
          }
       }
    }
    fmt.Println(res)
}

要注意这里的输出是可以做到有空格也可以,但有时候会触发问题导致不行。而下面这种大多数编辑器因为输入样例没有 enter 的操作,会导致编辑器自动输入出问题。

func main() {
    fmt.Println("请输入一个整数数组 c,用空格分隔:")
    scanner := bufio.NewScanner(os.Stdin)
    scanner.Scan() // 读取整行输入
    input := scanner.Text()

    // 将输入的字符串转换为整数数组
    strs := strings.Split(input, " ")
    fmt.Println(strs)
    c := make([]int, len(strs))
    for i, str := range strs {
        c[i], _ = strconv.Atoi(str)
    }
    fmt.Println(c)
}

这真的很沟槽,之前做电信笔试的时候 bufio 可以,fmt.Scan 会因为空格问题导致输入有误(不排除我用的有问题) ,但现在看来,之后建议还是使用 fmt.Scan 会好一些,写法简单,也能不用操心一些小问题,吃一亏长一智了。

PREV
[Golang/Redis] Redis使用Lua脚本示例三则
NEXT
[Golang基础] 反射

评论(0)

发布评论