Golang自学日志——OJ输入练习

1、用fmt包读取已知数量的

/*
输入:
1 5
10 20
输出:
6
30
*/
package main

import (
    "fmt"
)

func main() {
    var a.b int
    for {//循环扫描每一行
        n, _ := fmt.Scan(&a, &b)
        if n == 0 {//如果没有扫描的了,就结束,用于不知道一共有多少行的
            break
        } else {
            fmt.Printf("%d\n", a + b)
        }
    }
}
/*已知行数
输入:
2
1 5
10 20
输出:
6
30
*/
package main

import "fmt"

func main(){
    var t int//第一行数是个数
    fmt.Scan(&t)
    for i:=0;i<t;i++ {//循环t次
        var a,b int
        fmt.Scan(&a,&b)
        
        fmt.Println(a+b)
        
        
    }
    
/*有结束标志
输入:
1 5
10 20
0 0
输出:
6
30
*/
func main(){
    var a,b int
    for{
        fmt.Scan(&a,&b)
        if a==0 && b==0{//如果扫描到(0,0)就结束
            break
        }else{
            fmt.Println(a+b)
        }
        
    }
}
/*有结束标志,知道每行个数,每行变成数组
输入:
4 1 2 3 4
5 1 2 3 4 5
0
输出:
10
15
*/

//在读取 n 后初始化 arr 数组,然后读取 n 个数字,计算它们的和,并输出结果。当输入 n 为 0 时,程序会退出循环。
package main
import "fmt"

func main(){
    var n int
    for{//for里的操作就是读一行
        fmt.Scan(&n)
        if n==0{//循环到第一个数为0就停止
            break
        }
        /*对比
        t,_:=fmt.Scan(&n)
        if t==0{//循环到扫描不到数据停止
            break
        }
        */
        arr := make([]int,n)
        for j:=0;j<n;j++{
            fmt.Scan(&arr[j])
        }
        
        fmt.Println(ArraySum(arr))
        
    }
}

func ArraySum(nums []int)int{
    var sum int
    for i:=0;i<len(nums);i++{
        sum +=nums [i]
    }
    return sum
}
/*固定行数,知道每行个数,每行变成数组
输入:
2
4 1 2 3 4
5 1 2 3 4 5
输出:
10
15
*/

package main
import "fmt"
func main(){
    var t int
    fmt.Scan(&t)
     
    for i:=0;i<t;i++{
        var n int
        fmt.Scan(&n)
        arr := make([]int ,n)
        for j:=0;j<n;j++{
            fmt.Scan(&arr[j])
        }
        fmt.Println(ArraySum(arr))
    }
}

func ArraySum(nums []int)int{
    sum := 0
    for _,num := range nums{
        sum +=num
    }
    return sum
}
/*不知道行数,知道每行个数,每行变成数组
输入:
4 1 2 3 4
5 1 2 3 4 5
输出:
10
15
*/
package main
import "fmt"

func main(){
    var n int
    for{//for里的操作就是读一行
        t,_:=fmt.Scan(&n)
        if t==0{//循环到扫描不到数据停止
            break
        }
        arr := make([]int,n)
        for j:=0;j<n;j++{
            fmt.Scan(&arr[j])
        }
        
        fmt.Println(ArraySum(arr))
        
    }
}

func ArraySum(nums []int)int{
    var sum int
    for i:=0;i<len(nums);i++{
        sum +=nums [i]
    }
    return sum
}

用bufio读取一整行

/*整行读取
输入:
1 2 3
4 5
0 0 0 0 0
输出:
6
9
0
*/

package main

import (
    "bufio"
    "fmt"
    "os"
    "strconv"
    "strings"
)

func main() {
    inputs := bufio.NewScanner(os.Stdin)//inputs是个扫描器
    for inputs.Scan() {  //每次读入一行 
        //str := inputs.Text()  //将读入的行存入字符串
        data := strings.Split(inputs.Text(), " ")  //通过空格将他们分割,并存入一个字符串切片
        var arr []int
        for i := range data {
            val, _ := strconv.Atoi(data[i])   //将字符串转换为int
            arr=append(arr,val)//最终存放在数组中
        }
        fmt.Println(ArraySum(arr))
    }
}

func ArraySum(nums []int)int{
    var sum int
    for i:=0;i<len(nums);i++{
        sum +=nums [i]
    }
    return sum
}

字符串操作

/*知道每行个数
输入:
5
c d a bb e
输出:
a bb c d e
*/
package main
import(
    "fmt"
    "sort"
    "strings"

)
func main(){
    var n int
    fmt.Scan(&n)//读第一行数
    str := make([]string,n)
    for i:=0;i<n;i++{//读第二行,将第二行的字符放进字符串切片中
        fmt.Scan(&str[i])
        
    }
    sort.Strings(str)
    fmt.Println(strings.Join(str," "))  //将切片连接成字符串
}

/*不知道每行个数,需整行输入用bufio包
输入:
a c bb
f dddd
nowcoder
输出:
a bb c
dddd f
nowcoder
*/

package main
import(
    "fmt"
    "sort"
    "strings"
    "bufio"
     "os"

)
func main(){
    inputs := bufio.NewScanner(os.Stdin)//inputs是个扫描器
    for inputs.Scan() {  //每次读入一行
        data := strings.Split(inputs.Text(), " ")  //通过空格将他们分割,并存入一个字符串切片
        sort.Strings(data)
        fmt.Println(strings.Join(data," "))  //将切片连接成字符串
        
    }
}

/*用逗号隔开
输入:
a,c,bb
f,dddd
nowcoder
输出:
a,bb,c
dddd,f
nowcoder
*/
func main(){
    inputs := bufio.NewScanner(os.Stdin)//inputs是个扫描器
    for inputs.Scan() {  //每次读入一行
        data := strings.Split(inputs.Text(), ",")  //通过空格将他们分割,并存入一个字符串切片
        sort.Strings(data)
        fmt.Println(strings.Join(data,","))  //将切片连接成字符串
        
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值