ACM机试模式IO练习 java记录

基于一直训练的是核心代码模式,切换到ACM模式就一脸懵,
所以关于笔试题中的ACM模式,进行输入输出训练
参考的答题链接:https://ac.nowcoder.com/acm/contest/5652
以下仅做自己训练的答题记录

计算A+B

训练无标志的多组输入

题目描述
计算a+b
数据范围:数据组数满足 1 ≤ t ≤ 100 1≤t≤100 1t100,数据大小满足 1 ≤ n ≤ 1000 1≤n≤1000 1n1000
输入描述
输入包括两个正整数a,b ( 1 < = a , b < = 1000 ) (1 <= a, b <= 1000) (1<=a,b<=1000),输入数据包括多组。
输出描述
输出a+b的结果
示例
输入

1 5
10 20

输出

6
30

已通过代码

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int a = sc.nextInt();
            int b = sc.nextInt();
            System.out.println(a + b);
        }
    }
} 

训练有组数的多组输入

题目描述
计算a+b
数据范围:数据组数满足 1 ≤ t ≤ 100 1≤t≤100 1t100,数据大小满足 1 ≤ n ≤ 1000 1≤n≤1000 1n1000
输入描述
输入第一行包括一个数据组数t ( 1 < = t < = 100 ) (1 <= t <= 100) (1<=t<=100)
接下来每行包括两个正整数a,b ( 1 < = a , b < = 1000 ) (1 <= a, b <= 1000) (1<=a,b<=1000)
输出描述
输出a+b的结果
示例
输入

2
1 5
10 20

输出

6
30

已通过代码

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        for (int i = 0; i < num; i++) {
            int a = sc.nextInt();
            int b = sc.nextInt();
            System.out.println(a + b);
        }
    }
}

训练有结束标志的多组输入

题目描述
计算a+b
数据范围:数据组数满足 1 ≤ t ≤ 100 1≤t≤100 1t100,数据大小满足 1 ≤ n ≤ 100 1≤n≤100 1n100
输入描述
输入包括两个正整数a,b ( 1 < = a , b < = 1 0 9 ) (1<= a, b<= 10^9) (1<=a,b<=109),输入数据有多组, 如果输入为0 0则结束输入
输出描述
输出a+b的结果
示例
输入

1 5
10 20
0 0

输出

6
30

已通过代码

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while (true) {
            int a = sc.nextInt();
            int b = sc.nextInt();
            if (a == 0 && b == 0){
                break;
            }
            System.out.println(a + b);
        }
    }
} 

计算一系列数的和

训练有结束标志的多组输入

题目描述
计算一系列数的和
数据范围:数据组数满足 1 ≤ t ≤ 100 1≤t≤100 1t100,数据大小满足 1 ≤ n ≤ 100 1≤n≤100 1n100,每组数据中的值满足 1 ≤ v a l ≤ 100 1≤val≤100 1val100
输入描述
输入数据包括多组。
每组数据一行,每行的第一个整数为整数的个数n ( 1 < = n < = 100 ) (1 <= n <= 100) (1<=n<=100), n为0的时候结束输入。
接下来n个正整数,即需要求和的每个正整数。
输出描述
每组数据输出求和的结果
示例
输入

4 1 2 3 4
5 1 2 3 4 5
0

输出

10
15

已通过代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            int count = sc.nextInt();
            if (count == 0) {
                break;
            }
            int sum = 0;
            for (int i = 0; i < count; i++) {
                sum += sc.nextInt();
            }
            System.out.println(sum);
        }
    }
}

训练有组数的多组输入

题目描述
计算一系列数的和
数据范围:数据组数满足 1 ≤ t ≤ 100 1≤t≤100 1t100,数据大小满足 1 ≤ n ≤ 100 1≤n≤100 1n100,每组数据中的值满足 1 ≤ v a l ≤ 100 1≤val≤100 1val100
输入描述
输入的第一行包括一个正整数t ( 1 < = t < = 100 ) (1 <= t <= 100) (1<=t<=100),表示数据组数。
接下来t行,每行一组数据。
每行的第一个整数为整数的个数n ( 1 < = n < = 100 ) (1 <= n <= 100) (1<=n<=100)
接下来n个正整数,即需要求和的每个正整数。
输出描述
每组数据输出求和的结果
示例
输入

2
4 1 2 3 4
5 1 2 3 4 5

输出

10
15

已通过代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count = sc.nextInt();
        for (int i = 0; i < count; i++) {
            int num = sc.nextInt();
            int sum = 0;
            for (int j = 0; j < num; j++) {
                sum += sc.nextInt();
            }
            System.out.println(sum);
        }
    }
}

训练无标志的多组输入

题目描述
计算一系列数的和
数据范围: 1 ≤ n ≤ 1000 1≤n≤1000 1n1000,所有数都满足 1 ≤ v a l ≤ 1000 1≤val≤1000 1val1000
输入描述
输入数据有多组, 每行表示一组输入数据。
每行的第一个整数为整数的个数n ( 1 < = n < = 100 ) (1 <= n <= 100) (1<=n<=100)
接下来n个正整数, 即需要求和的每个正整数。
输出描述
每组数据输出求和的结果
示例
输入

4 1 2 3 4
5 1 2 3 4 5

输出

10
15

已通过代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int num = sc.nextInt();
            int sum = 0;
            for (int i = 0; i < num; i++) {
                sum += sc.nextInt();
            }
            System.out.println(sum);
        }
    }
}

训练无整数个数的多组输入

题目描述
计算一系列数的和
数据范围: 1 ≤ n ≤ 1000 1≤n≤1000 1n1000,所有数都满足 1 ≤ v a l ≤ 1000 1≤val≤1000 1val1000
输入描述
输入数据有多组, 每行表示一组输入数据。
每行不定有n个整数,空格隔开。 ( 1 < = n < = 100 ) (1 <= n <= 100) (1<=n<=100)
输出描述
每组数据输出求和的结果
示例
输入

1 2 3
4 5
0 0 0 0 0

输出

6
9
0

已通过代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String[] nums = sc.nextLine().split(" ");
            int sum = 0;
            for (String num : nums) {
                sum += Integer.parseInt(num);
            }
            System.out.println(sum);
        }
    }
}

字符串排序

训练有个数的字符串排序

题目描述
对输入的字符串进行排序后输出
输入描述
输入有两行,第一行n
第二行是n个字符串,字符串之间用空格隔开
输出描述
输出一行排序后的字符串,空格隔开,无结尾空格
示例
输入

5
c d a bb e

输出

a bb c d e

已通过代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.nextLine());
        String[] s1 = sc.nextLine().split(" ");
        
        Arrays.sort(s1, (a, b) -> {
            return a.compareTo(b);
        });
        
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            if (i != s1.length - 1) {
                sb.append(s1[i]);
                sb.append(" ");
            } else {
                sb.append(s1[i]);
            }
        }
        System.out.println(sb.toString());
    }
}

训练无个数的以空格分隔的字符串排序

题目描述
对输入的字符串进行排序后输出
输入描述
多个测试用例,每个测试用例一行。
每行通过空格隔开,有n个字符,n<100
输出描述
对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
示例
输入

a c bb
f dddd
nowcoder

输出

a bb c
dddd f
nowcoder

已通过代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
            String[] s1 = sc.nextLine().split(" ");
            Arrays.sort(s1, (a, b) -> {
                return a.compareTo(b);
            });

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < s1.length; i++) {
                if (i != s1.length - 1) {
                    sb.append(s1[i]);
                    sb.append(" ");
                } else {
                    sb.append(s1[i]);
                }
            }
            System.out.println(sb.toString());
        }
    }
}

训练无个数的以逗号分隔的字符串排序

题目描述
对输入的字符串进行排序后输出
输入描述
多个测试用例,每个测试用例一行。
每行通过空格隔开,有n个字符,n<100
输出描述
对于每组用例输出一行排序后的字符串,用’,'隔开,无结尾空格
示例
输入

a c bb
f dddd
nowcoder

输出

a bb c
dddd f
nowcoder

已通过代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
            String[] s1 = sc.nextLine().split(",");
            Arrays.sort(s1, (a, b) -> {
                return a.compareTo(b);
            });

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < s1.length; i++) {
                if (i != s1.length - 1) {
                    sb.append(s1[i]);
                    sb.append(",");
                } else {
                    sb.append(s1[i]);
                }
            }
            System.out.println(sb.toString());
        }
    }
}
  • 49
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值