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
会好一些,写法简单,也能不用操心一些小问题,吃一亏长一智了。
评论(0)