牛客網OJ終端輸入輸出
牛客網OJ終端輸入輸出,自己踩過的坑,有的筆試會限制程式語言。
常見輸入輸出練習場連結:https://ac.nowcoder.com/acm/contest/5657#question
總結
1、輸入輸出常用的模組如:os,io,bufio,strings,strconv等。
2、有的的oj平臺不會給出模組提示,只有在測試提交的才會給出錯誤資訊,如num, _ := sticonv.Atoi(nums[i])
字元轉整型,同時要返回整型和錯誤型別(用匿名變數接受)
3、golang不支援while關鍵字,但是支援num++
自加自減操作
一、Q1
描述
計算多組a+b
用例
輸入複製
1 5
10 20
輸出複製
6
30
程式碼
package main
import (
"fmt"
"io"
)
func main(){
var a, b int
for{
if _, err := fmt.Scan(&a, &b); err != io.EOF{
fmt.Println(a + b)
} else {
break
}
}
}
二、Q2
描述
先輸入用例數n,再計算n組a+b
用例
輸入
2
1 5
10 20
輸出
6
30
程式碼
package main
import (
"fmt"
"io"
)
func main(){
var num int
fmt.Scan(&num)
for ; num > 0; num --{
var a, b int
if _, err := fmt.Scan(&a, &b); err != io.EOF{
fmt.Println(a + b)
} else {
break
}
}
}
三、Q3
描述
輸入包括兩個正整數a,b(1 <= a, b <= 10^9),輸入資料有多組, 如果輸入為0 0則結束輸入
用例
輸入
1 5
10 20
0 0
輸出
6
30
程式碼
package main
import (
"fmt"
"io"
)
func main() {
for {
var a, b int
if _, err := fmt.Scan(&a, &b); err != io.EOF{
if a == 0 && b == 0{
break
}
fmt.Println(a + b)
}
}
}
四、Q4
描述
輸入資料包括多組。
每組資料一行,每行的第一個整數為整數的個數n(1 <= n <= 100), n為0的時候結束輸入。接下來n個正整數,即需要求和的每個正整數。
輸出:
每組資料輸出求和的結果
用例
輸入
2
1 5
10 20
輸出
6
30
程式碼
package main
import (
"fmt"
"os"
"strings"
"bufio"
"strconv"
)
func main(){
input := bufio.NewScanner(os.Stdin)
for input.Scan(){
nums := strings.Split(input.Text(), " ")
if nums[0] == "0"{
break
}
nums = nums[1:]
res := 0
for i:=0; i<len(nums); i++{
num, _ := strconv.Atoi(nums[i])
res += num
}
fmt.Println(res)
}
}
五、Q5
描述
輸入:
輸入的第一行包括一個正整數t(1 <= t <= 100), 表示資料組數。接下來t行, 每行一組資料。每行的第一個整數為整數的個數n(1 <= n <= 100)。接下來n個正整數, 即需要求和的每個正整數。
輸出:
每組資料輸出求和的結果
用例
輸入
2
4 1 2 3 4
5 1 2 3 4 5
輸出
10
15
程式碼
package main
import (
"fmt"
"os"
"bufio"
"strings"
"strconv"
)
func main(){
input := bufio.NewScanner(os.Stdin)
input.Scan()
t, _ := strconv.Atoi(input.Text())
for ; t>0; t--{
input.Scan()
nums := strings.Split(input.Text(), " ")
res := 0
for i:=1; i<len(nums); i++{
num, _ := strconv.Atoi(nums[i])
res += num
}
fmt.Println(res)
}
}
六、Q6
描述
輸入:
輸入資料有多組, 每行表示一組輸入資料。每行的第一個整數為整數的個數n(1 <= n <= 100)。接下來n個正整數, 即需要求和的每個正整數。
輸出:
每組資料輸出求和的結果
用例
輸入
4 1 2 3 4
5 1 2 3 4 5
輸出
10
15
程式碼
package main
import (
"fmt"
"os"
"strings"
"bufio"
"strconv"
)
func main(){
input := bufio.NewScanner(os.Stdin)
for input.Scan(){
nums := strings.Split(input.Text(), " ")
res := 0
for i:=1; i<len(nums); i++{
num, _ := strconv.Atoi(nums[i])
res += num
}
fmt.Println(res)
}
}
七、Q7
描述
輸入:
輸入資料有多組, 每行表示一組輸入資料。每行不定有n個整數,空格隔開。(1 <= n <= 100)。
輸出:
每組資料輸出求和的結果
用例
輸入
1 2 3
4 5
0 0 0 0 0
輸出
6
9
0
程式碼
package main
import (
"fmt"
"os"
"strconv"
"strings"
"bufio"
)
func main(){
input := bufio.NewScanner(os.Stdin)
for input.Scan(){
nums := strings.Split(input.Text(), " ")
res := 0
for i:=0; i<len(nums); i++{
num, _ := strconv.Atoi(nums[i])
res += num
}
fmt.Println(res)
}
}
八、Q8
描述
輸入:
輸入有兩行,第一行n第二行是n個字串,字串之間用空格隔開。
輸出:
輸出一行排序後的字串,空格隔開,無結尾空格
用例
輸入
5
c d a bb e
輸出
a bb c d e
程式碼
package main
import (
"fmt"
"os"
"bufio"
"strings"
"sort"
)
func main(){
input := bufio.NewScanner(os.Stdin)
input.Scan()
input.Scan()
str := strings.Split(input.Text(), " ")
sort.StringSlice.Sort(str)
fmt.Println(strings.Join(str, " "))
}
九、Q9
描述
輸入:
多個測試用例,每個測試用例一行。每行通過空格隔開,有n個字元,n<100
輸出:
對於每組測試用例,輸出一行排序過的字串,每個字串通過空格隔開
用例
輸入
a c bb
f dddd
nowcoder
輸出
a bb c
dddd f
nowcoder
程式碼
package main
import (
"fmt"
"strings"
"bufio"
"sort"
"os"
)
func main(){
input := bufio.NewScanner(os.Stdin)
for input.Scan(){
str := strings.Split(input.Text(), " ")
sort.Strings(str)
fmt.Println(strings.Join(str, " "))
}
}
十、Q10
描述
輸入:
多個測試用例,每個測試用例一行。每行通過,隔開,有n個字元,n<100
輸出:
對於每組用例輸出一行排序後的字串,用','隔開,無結尾空格
用例
輸入
a,c,bb
f,dddd
nowcoder
輸出
a,bb,c
dddd,f
nowcoder
程式碼
package main
import (
"fmt"
"os"
"bufio"
"strings"
"sort"
)
func main(){
input := bufio.NewScanner(os.Stdin)
for input.Scan(){
str := strings.Split(input.Text(), ",")
sort.Strings(str)
fmt.Println(strings.Join(str, ","))
}
}