funcmain() { var a, b int for { _, err := fmt.Scan(&a, &b) if err == io.EOF { break } fmt.Println(a + b) } }
场景2:多行数据,第一行只有一个数字n,表示后面的行数,其他每行固定个数
1 2 3 4 5 6 7 8 9 10 11 12
package main
import"fmt"
funcmain() { var n, a, b int fmt.Scan(&n) for i := 0; i < n; i++ { fmt.Scan(&a, &b) fmt.Println(a + b) } }
场景3:输入数据有多行,每行固定个数,读取到特殊数据(如0,0)时停止
1 2 3 4 5 6 7 8 9 10 11 12 13 14
package main
import"fmt"
funcmain() { var a, b int for { fmt.Scan(&a, &b) if a == 0 && b == 0 { break } fmt.Println(a + b) } }
场景4:输入数据有多行,每行第一个数字指定当前行数据个数,读取到特殊数据时停止
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
package main
import"fmt"
funcmain() { var n, a int for { fmt.Scan(&n) if n == 0 { break } sum := 0 for i := 0; i < n; i++ { fmt.Scan(&a) sum += a } fmt.Println(sum) } }
场景5:
输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。 接下来t行, 每行一组数据。 每行的第一个整数为整数的个数n(1 <= n <= 100)。 接下来是n个正整数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package main
import"fmt"
funcmain() { var t, n, a int fmt.Scan(&t) for i := 0; i < t; i++ { fmt.Scan(&n) sum := 0 for i := 0; i < n; i++ { fmt.Scan(&a) sum += a } fmt.Println(sum) } }
场景6:
输入数据有多组, 每行表示一组输入数据。 每行的第一个整数为整数的个数n(1 <= n <= 100)。 接下来n个正整数。 不知道总共有多少行数据。
funcmain() { var n, a int for { _, err := fmt.Scan(&n) if err == io.EOF { break } sum := 0 for i := 0; i < n; i++ { fmt.Scan(&a) sum += a } fmt.Println(sum) } }
funcmain() { inputs := bufio.NewScanner(os.Stdin) for inputs.Scan() { //每次读入一行 data := strings.Split(inputs.Text(), " ") //通过空格将他们分割,并存入一个字符串切片 var sum int for i := range data { val, _ := strconv.Atoi(data[i]) //将字符串转换为int sum += val } fmt.Println(sum) } }