1. 程式人生 > 其它 >牛客網OJ終端輸入輸出

牛客網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, ","))
    }
}