引言
fmt.Scan()fmt.Scanln()bufio.NewScanner(os.Stdin)
计算a+b
1.
输入: 包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。
输出: a+b的结果
func main() {
var a, b int
for {
n, _ := fmt.Scanln(&a, &b) //也可以用 fmt.Scan
if n == 0 {
break
} else {
fmt.Printf("%d\n", a+b)
}
}
}
复制代码
2.
输入:
第一行包括一个数据组数t(1 <= t <= 100)
接下来每行包括两个正整数a,b(1 <= a, b <= 10^9)
输出: a+b的结果
func main(){
var t,a,b int
fmt.Scanln(&t)
for i:=0;i<t;i++{
fmt.Scanln(&a,&b)
fmt.Println(a+b)
}
}
复制代码
3.
输入: 包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入
输出: a+b的结果
func main() {
var a, b int
for {
fmt.Scanln(&a, &b) //也可以用 fmt.Scan
if a == 0 && b == 0 {
break
} else {
fmt.Printf("%d\n", a+b)
}
}
}
复制代码
4.大数求和
输入:
输入数据包括多组。
每组数据一行,包含两个字符串形式的非负整数
输出: 对于每组测试数据,计算它们的和,输出字符串。
package main
import (
"fmt"
"strconv"
)
func main() {
var s1, s2 string
for {
n, _ := fmt.Scanln(&s1, &s2) //也可以用 fmt.Scan
if n == 0 {
break
} else {
fmt.Printf("%s\n", bigNumberAdd(s1, s2))
}
}
}
func bigNumberAdd(s1, s2 string) string {
i, j := len(s1) - 1, len(s2) - 1
num1, num2 := 0, 0
carry := 0 //进位
s := ""
for (i >= 0 || j >= 0) {
if (i >= 0) {
num1,_ =strconv.Atoi(string(s1[i]))
} else {
num1 = 0
}
if (j >= 0) {
num2,_ =strconv.Atoi(string(s2[j]))
} else {
num2 = 0
}
sum := (num1+num2+carry)%10//取余
s += strconv.Itoa(sum)
carry = (num1+num2+carry)/10
i--
j--
}
if (carry != 0) {
s += "1"
}
return reverseString(s)
}
func reverseString(s string) string {
res := []byte(s)
for left, right := 0, len(s)-1; left < right; left++ {
res[left], res[right] = res[right], res[left]
right--
}
return string(res)
}
复制代码
一行多个数字求和
1.
输入:
输入数据包括多组。
每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。
接下来n个正整数,即需要求和的每个正整数。
输出: 每组数据输出求和的结果
func main() {
var t int
for {
var sum int
fmt.Scan(&t)
if t == 0 {
break
} else {
a := make([]int, t)
for i := 0; i < t; i++ {
fmt.Scan(&a[i])
sum += a[i]
}
}
fmt.Println(sum)
}
}
复制代码
2.
输入:
第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。
接下来t行, 每行一组数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。
输出: 每组数据输出求和的结果
func main() {
var t int
fmt.Scan(&t)
for i := 0; i < t; i++ {
var num, sum, a int
fmt.Scan(&num)
for i := 0; i < num; i++ {
fmt.Scan(&a)
sum += a
}
fmt.Println(sum)
}
}
复制代码
3.
输入:
输入数据有多组, 每行表示一组输入数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。
输出:每组数据输出求和的结果
func main() {
var t int
for {
var sum int
n,_ := fmt.Scan(&t)
if n == 0 {
break
} else {
a := make([]int, t)
for i := 0; i < t; i++ {
fmt.Scan(&a[i])
sum += a[i]
}
}
fmt.Println(sum)
}
}
复制代码
4.
输入:
输入数据有多组, 每行表示一组输入数据。
每行不定有n个整数,空格隔开。(1 <= n <= 100)。
输出: 每组数据输出求和的结果
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
sc := bufio.NewScanner(os.Stdin)
for sc.Scan() { //每次读入一行
strs := strings.Split(sc.Text(), " ") //通过空格将他们分割,并存入一个字符串切片
var sum int
for i := range strs {
val, _ := strconv.Atoi(strs[i]) //将字符串转换为int
sum += val
}
fmt.Println(sum)
}
}
复制代码
字符串排序
1.
输入:
输入有两行,第一行n
第二行是n个空格隔开的字符串
输出:
输出一行排序后的字符串,空格隔开,无结尾空格
func main(){
sc := bufio.NewScanner(os.Stdin)
sc.Scan()
for sc.Scan(){
strs := strings.Split(sc.Text(), " ")
sort.Strings(strs) //排序
fmt.Println(strings.Join(strs," ")) //将切片连接成字符串
}
}
复制代码
2.
输入:
多个测试用例,每个测试用例一行。
每行通过空格隔开,有n个字符串,n<100
输出:
对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
func main(){
sc := bufio.NewScanner(os.Stdin)
for sc.Scan(){
strs := strings.Split(sc.Text()," ")
sort.Strings(strs)
fmt.Println(strings.Join(strs, " "))
}
}
复制代码
3.
输入:
多个测试用例,每个测试用例一行。
每行通过,隔开,有n个字符串,n<100
输出:
对于每组用例输出一行排序后的字符串,用','隔开,无结尾空格
func main(){
sc := bufio.NewScanner(os.Stdin)
for sc.Scan(){
strs := strings.Split(sc.Text(),",")
sort.Strings(strs)
fmt.Println(strings.Join(strs, ","))
}
}
复制代码