OJ(牛客网)输入输出练习 Go实现

这篇博客主要记录了作者在找工作时针对输入输出问题的Go语言练习,特别是牛客网的A+B系列和字符串排序题目。通过分享代码和经验,帮助读者减少解决问题的摸索时间,强调实践的重要性。文中提到了bufio.Scanner的使用,但警告读者需要注意其缓冲区限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个文章主要是我找工作的一些随笔,因为在笔试过程中经常需要自己搞定输入输出,这个如果不会有思路也无法搞定,因此在这里写下这个blog来为后来者一些借鉴,减少走弯路的概率。

此外,这个练习可以基于牛客的一个竞赛进行练习,我都是基于这里的题目来练习,后来者们可参考一下我的代码,并自己敲一遍(实践很重要!)

A+B(1)

package main  // 包名, 必需的,因为这里就是相当于一个go文件

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
        }
    }
}

// 注: Scan从标准输入扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数。
// 换行视为空白。返回成功扫描的条目个数和遇到的任何错误。
// 如果读取的条目比提供的参数少,会返回一个错误报告原因
// 后面如果没有必要,比如说第二题,我不会获取对应的`n,err` , 
// 直接用起来的(就是假定输入都是正确的不会进行特别处理)

A+B(2)

package main

import "fmt"

func main() {
   
    var t, a, b int
    fmt.Scan(&t) // 
    for t > 0 {
   
        fmt.Scan(&a, &b)
        fmt.Println(a + b)
        t--
    }
}
// 如果是正常的业务开发的话,是需要获取err并进行处理的
// 业务处理的形式 后面题目不会写这种形式的,因为笔试有时间限制的
func main() {
   
    var t, a, b int
    if _, err := fmt.Scan(&t); err != nil {
   
        // 处理错误
        return
    } 
    for t > 0 {
   
        if _, err := fmt.Scan(&a, &b); err != nil {
   
        	// 处理错误
        	return
    	} 
        fmt.Println(a + b)
        t--
    }
}

A+B(3)

package main

import "fmt"

func main() {
   
    var a, b int
    for {
   
        fmt.Scan(&a, &b)
        if a == 0 && b == 0 {
   
            break
        }
        fmt.Println
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值