码云地址: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 |
所有评论(0)