第三次过程性考核

码云地址:https://gitee.com/iseekun99

7-4 交换最小值和最大值 (9 分)

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

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

输入格式:

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

输出格式:

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

程序设计思路:定义一个数组,通过下标的交换来实现最大值与最小值的交换。

知识点:数组、循环

(这一版始终得不到满分,找不到点)

import java.util.*;
public class Main{
    public static void main(String[] args) {
    Scanner reader =new Scanner(System.in);
    int N = reader.nextInt();
    int n=5,max,min,c,d,i,j=0;
    int a[]=new int[n];
    for(i=0;i<n;i++){
        a[i]=reader.nextInt();
    }
    min=max=a[0];
    for(i=0;i<n;i++){
        if(a[i]<min)
          {
              min=a[i];
              j=i;
          }    
    }
    c=a[0];
    a[0]=min;
    a[j]=c;
    for(i=0;i<n;i++)
    {
        if(a[i]>max)
          {
              max=a[i];
              j=i;
          }
    }
    d=max;
    a[j]=a[n-1];
    a[n-1]=d;
    for(i=0;i<n;i++)
        System.out.print(a[i]+" ");
    
    }
}
import java.util.*;
public class Exchange {
  public static void main(String[] args) {
    Scanner reader=new Scanner(System.in);
    int N=reader.nextInt();
    int a[]=new int[N];
    int b=0,c=0;
    for(int i=0;i<a.length;i++){
      a[i]=reader.nextInt();
    }
    for(int i=0;i<a.length;i++){
      if(a[i]<a[b]){
        b=i;          //找到最小值
      }
    }
    int x=a[b];
    a[b]=a[0];        //交换数值
    a[0]=x;
    for(int i=0;i<a.length;i++){
      if(a[i]>a[c]){
        c=i;           //找到最大值
      }
    }
    int y=a[c];
    a[c]=a[N-1];
    a[N-1]=y;         //交换数值
    for (int i=0;i<a.length;i++){
      System.out.print(a[i]+" ");    //实现输出
    }
  }
}

运行结果:

7-1 简化的插入排序 (8 分)

本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。

输入格式:

输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。

输出格式:

在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。

程序设计思路:给数组长度增加,插入输入的数字,从小到大排序,按顺序输出。

知识点:数组排序,插入

import java.util.*;
public class Arr{
  public static void main(String[] args){
    Scanner read=new Scanner(System.in );
    int n=read.nextInt();
    int a[]=new int[n+1];    //将数组长度加1
    int i;
    for(i=0;i<n;i++){
      a[i]=read.nextInt();
      
    }
    a[n]=read.nextInt();
    Arrays.sort(a);     //将数组进行排序
    for(i=0;i<=n;i++){
    System.out.print(a[i]+" ");
    }
  }
}

运行结果:

7-2 IP地址转换 (12 分)

一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。

输入格式:

输入在一行中给出32位二进制字符串。

输出格式:

在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。

程序设计思路:输入数字进行数制转换

知识点:输入输出、数制转换

import java.util.*;
public class Zhuanhuan{
  public static void main(String[] args){
    Scanner read=new Scanner(System.in );
    String n=read.nextLine();       //输入十进制ip地址
    String a=n.substring(0,8);      //截取子串 索引
    String b=n.substring(8,16);
    String c=n.substring(16,24);
    String d=n.substring(24,32);
    int a1=Integer.parseInt(a,2);   //进行数值转换
    int b1=Integer.parseInt(b,2);
    int c1=Integer.parseInt(c,2);
    int d1=Integer.parseInt(d,2);
    System.out.print(a1+"."+b1+"."+c1+"."+d1);
    
  }
}
7-5 说反话-加强版 (20 分)

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。

程序设计思路:输入字符串,再倒序输出。难到自闭,使人头秃。

知识点:输入输出

import java.io.IOException;  
import java.text.ParseException;  
import java.util.Scanner;  
  public class Main {  
  public static void main(String[] args) 
  throws ParseException, IOException {  
    Scanner scanner = new Scanner(System.in);  
    String str = scanner.nextLine().trim();  
    String[] strs = str.split(" +");  
    for(int i=strs.length-1;i>=0;--i)  
    {  
        System.out.print(strs[i]);  
        if(i!=0)  
          System.out.print(" ");  
    }  
  }
}

运行结果:

总结:入门java,还不够真正明白java作为一种算法,许多知识需要自己去在课堂下探索。希望下次自己能多做出两道题(T T)。

学习内容 代码(行) 博客(字)
第一次考核 40 150
第二次考核 50 150
数组 70 150

猜你喜欢

转载自www.cnblogs.com/iseekun/p/9901621.html