数组

一、交换最小值和最大值

本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。

注意:题目保证最大和最小值都是唯一的。

输入格式:

输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。

输出格式:

在一行中顺序输出交换后的序列,每个整数后跟一个空格。

输入样例:

5
8 2 5 1 4

输出样例:

1 2 5 4 8 
 1 import java.util.Scanner;
 2 public class Main{
 3     public static void main(String args[]){
 4         Scanner sc=new Scanner(System.in);
 5         int n=sc.nextInt();
 6         int []arr=new int [n];
 7         for(int i=0;i<n;i++)
 8         {
 9             arr[i]=sc.nextInt();
10             
11         }
12        int max=arr[0],x=0;
13         int min=arr[0],m=0;
14         for(int i=0;i<n;i++)
15         {
16            
17             if(arr[i]<=min)
18             {min=arr[i];
19              m=i;}
20         }
21         int s=0;
22         s=arr[0];
23         arr[0]=arr[m];
24         arr[m]=s; 
25         max=arr[0];
26         for(int i=0;i<n;i++)
27         if(arr[i]>=max)
28             {max=arr[i];
29              x=i;}
30         
31         
32         s=arr[n-1];
33         arr[n-1]=arr[x];
34         arr[x]=s;
35 
36         
37         for(int i=0;i<n;i++)
38         {
39             System.out.print(arr[i]+" ");
40             
41         }
42     sc.close();
43     }
44 }

二、两个一维数组相加求和

1.本题目要求得的两个向量的和,每一个向量通过一个一维数组表示,具体要求为:
1在Main类中.创建一个方法,方法功能为求两个一维数组之和得到求和数组并返回。方法声明为:
public static int[] add(int arr[],int []arr2)
2.在main方法中创建两个一维数组,一维数组的长度通过键盘得到,数组的元素通过键盘输入。
3.调用add方法得到两个一维数组之和,并输出这个一维数组的值。

输入格式:

第一行输入数组的元素个数 第二行输入第一个数组的各个元素 中间以空格隔开 第三行输入第二个数组的各个元素 中间以空格隔开

输出格式:

输出求和数组的各个元素,每行输出一个元素。

输入样例:

在这里给出一组输入。例如:

4
1 2 3 4
5 6 7 8

输出样例:

在这里给出相应的输出。例如:

6
8
10
12
 1 import java.util.Scanner;
 2 public class Main{
 3         public static void add(int []arr,int []arr2)
 4         {
 5         int []a=arr;
 6         for(int i=0;i<a.length;i++)
 7         {
 8             a[i]=arr[i]+arr2[i];
 9         }
10         for(int i=0;i<a.length;i++)
11         System.out.println(a[i]);
12 
13     }
14     
15     public static void main(String args[]){
16         
17         Scanner sc=new Scanner(System.in);
18             
19     int a=sc.nextInt();
20         int []arr1=new int [a];
21         int []arr2=new int [a];
22         for(int i=0;i<a;i++)
23         {
24             arr1[i]=sc.nextInt();
25         }
26         for(int i=0;i<a;i++)
27         {
28             arr2[i]=sc.nextInt();
29         }
30         add(arr1,arr2);
31 
32     
33 
34     sc.close();
35     }
36 }

三、求整数序列中出现次数最多的数

本题要求统计一个整型序列中出现次数最多的整数及其出现次数。

输入格式:

输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。

输出格式:

在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。

输入样例:

10 3 2 -1 5 3 4 3 0 3 2

输出样例:

3 4
 1 import java.util.Scanner;
 2 public class Main{
 3     public static void main(String args[]){
 4         Scanner sc=new Scanner(System.in);
 5         int n=sc.nextInt();
 6         int []arr=new int [n];
 7         int []a=new int [n];
 8         for(int i=0;i<n;i++)
 9         {
10             arr[i]=sc.nextInt();
11         }
12         for(int i=0;i<n;i++)
13         {
14             for(int j=i;j<n;j++)
15             {
16                 if(arr[i]==arr[j])
17                 {
18                     a[i]++;
19                 }
20             }
21         }
22         int max=0;
23         int c=0;
24         for(int i=0;i<n;i++)
25         {
26             if(a[i]>max)
27             {
28                 max=a[i];
29                 c=i;
30             }
31         }
32         System.out.print(arr[c]+" "+a[c]);
33         sc.close();
34     }
35     
36     
37 }

四、结伴同行去秋游

可以去秋游啦!同学们别提多高兴了!老师说,单独行动有点危险,那么我们还是结伴同行吧。结伴的规则是这样的:排在最前的一个人和排在最后的那个人结成同伴,排在第2个的与排在倒数第2个的结成同伴......依次类推,2个一组成同伴。好,请马上排出来吧!老师语音一落,同学们“唰唰唰”很快结伴好了,准备出发喽!

输入格式:

第一行是一个整数n,表明n个同学。(2<=n<=50,n为偶数) 。 第二行n个整数表明n个同学的学号,学号之间有一个空格。

输出格式:

共n/2行,每行二个整数,表明结伴同学的学号,两个学号之间有一个空格。

输入样例:

6
5 6 4 12 3 2

输出样例:

5 2
6 3
4 12
 1 import java.util.Scanner;
 2 public class Main{
 3     public static void main (String args[]){
 4         Scanner sc=new Scanner (System.in);
 5             int n=sc.nextInt();
 6         int []arr=new int [n];
 7         for(int i=0;i<n;i++)
 8         {
 9             arr[i]=sc.nextInt();
10             
11             
12         }
13         for(int i=0;i<n/2;i++)
14         {
15             System.out.print(arr[i]+" "+arr[n-i-1]);
16             System.out.println();
17             
18         }
19         sc.close();
20     }
21     
22     
23 }

五、 摘苹果

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出很多苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知每个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

输入格式:

包括三行数据。 第一行是一个整数n,表示有n个苹果。苹果至少有一个,不超过1000个。 第二行包含n个100到200之间(包括100和200)的整数(以厘米为单位)分别表示这n个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。 第三行是一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出格式:

一个整数,表示陶陶能够摘到的苹果的数目。

输入样例:

10
100 200 150 140 129 134 167 198 200 111
110

输出样例:

5
 1 import java.util.Scanner;
 2 public class Main{
 3     public static void main(String args[])
 4     {
 5         Scanner sc=new Scanner(System.in);
 6         int s=sc.nextInt();
 7         int [] arr=new int [s];
 8         for(int i=0;i<s;i++)
 9         {
10            arr[i]=sc.nextInt();
11         }
12         int h=sc.nextInt();
13         int a=0;
14         for(int i=0;i<s;i++)
15         {
16             if(arr[i]<=(h+30))
17             a++;
18             
19         }
20         System.out.print(a);
21         
22         
23         
24         sc.close();
25         
26     }
27     
28     
29     
30 }

六、求次大值

找出给定n个整数中的次大值(第二大)。

输入格式:

输入分为两行,第一行一个整数n,表示数据的个数,第二行是由空格分隔的n个整数。

输出格式:

n个数据中的次大值。

输入样例:

6
23 34 8 26 17 9

输出样例:

26
 1 import java.util.Scanner;
 2 public class Main{
 3     public static void main(String args[])
 4     {
 5         Scanner sc=new Scanner(System.in);
 6         int s=sc.nextInt();
 7         int []arr=new int [s];
 8         for(int i=0;i<s;i++)
 9         {
10             arr[i]=sc.nextInt();
11         }
12       
13         for(int i=0;i<s;i++)
14         {
15             for(int j=0;j<s-i-1;j++)
16             {
17                 if(arr[j]>arr[j+1])
18                 {
19                     int a=arr[j];
20                     arr[j]=arr[j+1];
21                     arr[j+1]=a;
22                 }
23                 
24                 
25             }
26             
27             
28         }
29         System.out.print(arr[s-2]);
30         
31         
32         
33         sc.close();
34     }
35 }

七、求一批整数中出现最多的个位数字

给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。

输入格式:

输入在第1行中给出正整数N(≤),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。

输出格式:

在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。

输入样例:

3
1234 2345 3456

输出样例:

3: 3 4
 1 import java.util.Scanner;
 2 public class Main{
 3     public static void main (String args[]){
 4         Scanner sc=new Scanner(System.in);
 5         int []arr={0,0,0,0,0,0,0,0,0,0};
 6         int s=sc.nextInt();
 7         int a=0;
 8         for(int i=0;i<s;i++)
 9         {
10            a=sc.nextInt();
11         if(a==0)
12         {
13             arr[0]++;
14         }
15         while (a > 0)
16         {
17             arr[a%10]++;  
18             a/= 10;  
19         }
20         }
21         int f=-1;
22         for(int i=0;i<10;i++)
23         {
24           if(f<arr[i])
25               f=arr[i];
26           
27         }
28         System.out.print(f+":");
29 
30         for(int i=0;i<10;i++)
31         {    if(f==arr[i])
32                 System.out.print(" "+i);
33 
34         }
35               
36         sc.close();
37     }
38     
39 }

八、点赞 

微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本题就要求你写个程序,通过统计一个人点赞的纪录,分析这个人的特性。

输入格式:

输入在第一行给出一个正整数N(≤),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为“F1​​FK​​”,其中1,Fi​​(,)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。

输出格式:

统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。

输入样例:

4
3 889 233 2
5 100 3 233 2 73
4 3 73 889 2
2 233 123

输出样例:

233 3
 1 import java.util.Scanner;
 2 public class Main {
 3   public static void main(String args[]) {
 4        Scanner sc = new Scanner(System.in);
 5       int m=sc.nextInt();
 6       int n,t=0;
 7       int []s=new int [1001];
 8       for(int i=0;i<m;i++)
 9       {
10          n=sc.nextInt();
11           for(int j=0;j<n;j++)
12                   {
13                       t=sc.nextInt();
14             s[t]++;
15           }
16           
17       }
18       int max=0;
19       int c=0;
20       for(int i=0;i<1001;i++)
21       {
22           if(max<=s[i])
23           {
24               max=s[i];
25               c=i;
26                   }
27       }
28       System.out.println(c+" "+s[c]);
29 sc.close();
30 }
31 
32 
33 }

 九、矩阵相加

求矩阵A+B的结果,程序给出部分代码,请在原来代码基础上填写完整,完成整个程序。

 1 import java.util.Scanner;
 2 //矩阵相加 C = A + B //写出方法调用
 3 public class Main {
 4    public static Scanner scan = new Scanner(System.in);
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7             int m = scan.nextInt();//矩阵的行
 8         int n = scan.nextInt();//矩阵的列
 9         //创建二维数组a  行m,列n 
10 
11 
12     //调用方法 为a输入数据
13 
14     //创建二维数组b 行m,列n 
15 
16    //调用方法,为b输入数据
17 
18     //调用方法 求 a+b
19 
20 
21     //输出结果
22 
23 }
24 public static void inputData(int[][] arr){
25     for(int i =0;i<arr.length;i++)
26         for(int j=0;j<arr[i].length;j++)
27             arr[i][j] =scan.nextInt();
28 }
29 public static int[][] addMatrix(int[][]arr1,int[][]arr2){
30     int [][] c = new int[arr1.length][arr1[0].length];
31     for(int i =0;i<arr1.length;i++)
32         for(int j =0;j<arr1[i].length;j++)
33             c[i][j] = arr1[i][j] + arr2[i][j];
34     return c;
35 }
36 public static void showResult(int[][] arr){
37     for(int i =0;i<arr.length;i++){
38         for(int j =0;j<arr[i].length;j++)
39             System.out.print(" "+arr[i][j]);
40         System.out.println();
41     }
42 }

输入格式:

第一行通过键盘输入矩阵的行数和列数 第二行通过键盘输入矩阵A的元素,中间用空格隔开 第三行通过键盘输入矩阵B的元素 ,中间用空格隔开

输出格式:

输出矩阵相加的结果,每一行输出矩阵一行,每一个元素前面有一个空格

输入样例:

在这里给出一组输入。例如:

2 3
1 2 3 4 5 6
2 3 4 5 6 7

输出样例:

在这里给出相应的输出。例如:

 3 5 7
 9 11 13
 1 import java.util.Scanner;
 2 //矩阵相加 C = A + B //写出方法调用
 3 
 4 public class Main {
 5  public static Scanner scan = new Scanner(System.in);
 6   public static void main(String[] args) {
 7       // TODO Auto-generated method stub
 8           int m = scan.nextInt();//矩阵的行
 9       int n = scan.nextInt();//矩阵的列
10        int[][] c=new int [m][n];
11       //创建二维数组a  行m,列n 
12      int [][]arr1=new int [m][n];
13   //调用方法 为a输入数据
14       inputData(arr1);
15   //创建二维数组b 行m,列n 
16       int [][]arr2=new int [m][n];
17 
18  //调用方法,为b输入数据
19       inputData(arr2);
20 
21   //调用方法 求 a+b
22     c =  addMatrix(arr1,arr2);
23 
24   //输出
25       showResult(c);
26   
27   }
28 public static void inputData(int[][] arr){
29   for(int i =0;i<arr.length;i++)
30       for(int j=0;j<arr[i].length;j++)
31           arr[i][j] =scan.nextInt();
32 }
33 public static int[][] addMatrix(int[][]arr1,int[][]arr2){
34   int [][] c = new int[arr1.length][arr1[0].length];
35   for(int i =0;i<arr1.length;i++)
36       for(int j =0;j<arr1[i].length;j++)
37           c[i][j] = arr1[i][j] + arr2[i][j];
38   return c;
39 }
40 public static void showResult(int[][] arr){
41   for(int i =0;i<arr.length;i++){
42       for(int j =0;j<arr[i].length;j++)
43           System.out.print(" "+arr[i][j]);
44       System.out.println();
45   }
46 scan.close();
47 }
48 
49 
50 }

十、矩阵运算

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式:

输入第一行给出正整数n(1);随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例:

4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1

输出样例:

35
 1 import java.util.Scanner;
 2 public class Main {
 3 
 4     public static void main(String[] args) {
 5         Scanner sc=new Scanner(System.in);
 6         int [][]arr;
 7         int n;
 8         int s=0;
 9          n=sc.nextInt();
10         arr=new int[n][n];
11          for(int i=0;i<n;i++)
12          {
13              for(int j=0;j<n;j++)
14              {
15                  arr[i][j]=sc.nextInt();
16              }
17          }
18          for(int i=0;i<n;i++)
19          {
20              for(int j=0;j<n;j++)
21              {
22                  s=s+arr[i][j];
23                  
24              }
25              
26              
27          }
28          
29          for(int i=0;i<n;i++)
30          {
31              
32                  s=s-arr[i][n-1];     
33                  s=s-arr[i][n-i-1];    
34                  s=s-arr[n-1][i];    
35          }
36          s=s+arr[0][n-1];
37          s=s+arr[n-1][0];
38          s=s+arr[n-1][n-1];
39          System.out.print(s);
40          
41         
42         
43         // TODO Auto-generated method stub
44         sc.close();
45 
46     }
47 
48 }

 

posted @ 2021-07-01 10:22  咖啡布丁  阅读(220)  评论(0)    收藏  举报
levels of contents