牛客网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, ","))
}
}
posted on 2022-04-11 10:47 weilanhanf 阅读(414) 评论(0) 编辑 收藏 举报