【程序31】 题目:将一个数组逆序输出。
程序分析:用第一个与最后一个交换。
用逆序循环控制变量输出:
public class Demo31 {
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
for (int i = a.length - 1; i >= 0; i--) {
System.out.print(a[i] + " ");
}
}
}
【程序32】 题目:取一个整数a从右端开始的第4~7位数字。
import java.util.*;
public class Demo32 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入一个7位以上的正整数:");
long l = in.nextLong();
String str = Long.toString(l);
char[] ch = str.toCharArray();
int j=ch.length;
if (j<7){System.out.println("输入错误!");
} else {
System.out.println("截取从右端开始的4~7位是:"+ch[j-7]+ch[j-6]+ch[j-5]+ch[j-4]);
}
}
}
或
import java.util.Scanner;
public class Demo32{
public static void main(String[] args) {
int a = 0;
Scanner s = new Scanner(System.in);
long b = s.nextLong();
a = (int) (b % 10000000 / 1000);
System.out.println(a);
}
}
1.程序分析:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
public class Demo33 {
public static void main(String args[]) {
int i, j;
int a[][];
int n = 10;
a = new int[n][n];
for (i = 0; i < n; i++) {
a[i][i] = 1;
a[i][0] = 1;
}
for (i = 2; i < n; i++) {
for (j = 1; j <= i - 1; j++) {
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
for (i = 0; i < n; i++) {
for (j = 0; j <= i; j++) {
System.out.printf(a[i][j] + "\t");
}
System.out.println();
}
}
}
【程序34】 题目:输入3个数a,b,c,按大小顺序输出。
(也可互相比较交换排序)
import java.util.Arrays;
public class Demo34 {
public static void main(String[] args) {
int[] arrays = { 800, 56, 500 };
Arrays.sort(arrays);
for (int n = 0; n < arrays.length; n++)
System.out.println(arrays[n]);
}
}
或
if(x > y) { int t = x; x = y; y = t; } if(x > z) { int t = x; x = z; z = t; } if(y > z) { int t = y; y = z; z = t; }
【程序35】 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
import java.util.*;
public class Demo35 {
public static void main(String[] args) {
int i, min=0, max=0, n, temp1, temp2;
int a[];
System.out.println("定义数组的长度:");
Scanner in = new Scanner(System.in);
n = in.nextInt();
a = new int[n];
for (i = 0; i < n; i++) {
System.out.print("输入第" + (i + 1) + "个数据:");
a[i] = in.nextInt();
}
for (i = 1; i < n; i++) {
if (a[i] > a[max])
max = i;
if (a[i] < a[min])
min = i;
}
temp1 = a[0];
a[0] = a[max];
a[max] = temp1;
temp2 = a[min];
if (min != 0) { // 如果最小值不是a[0],执行下面
a[min] = a[n - 1];
a[n - 1] = temp2;
} else { //如果最小值是a[0],执行下面
a[max] = a[n - 1];
a[n - 1] = temp1;
}
for (i = 0; i < n; i++) {
System.out.print(a[i] + " " );
}
}
}
【程序36】 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Demo36 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("输入数字个数n:");
int n = in.nextInt();
System.out.println("输入后移位数m:");
int m = in.nextInt();
LinkedList<Integer> list = new LinkedList<Integer>();
for (int i = 0; i < n; i++) {
System.out.println("请输入第"+(i+1)+"个数:");
list.add(in.nextInt());
}
System.out.println("原数据排序为:");
for (int t : list) {
System.out.print(t + " " );
}
System.out.println();
List<Integer> temp1 = list.subList(list.size() - m, list.size());
List<Integer> temp2 = list.subList(0, list.size() - m);
temp2.addAll(0, temp1);
System.out.println("移动后排序为;");
for (int t : temp2) {
System.out.print(t + " " );
}
}
}
或
import java.util.*;
public class Demo36{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请定义数组的长度:");
int n=in.nextInt();
System.out.println("请输入移动的位数:");
int m=in.nextInt();
int [] arr=new int [n];
int [] brr=new int [n];
for(int i=0;i<n;i++){
System.out.println("请输入第"+(i+1)+"个数:");
arr[i]=in.nextInt();
}
System.out.println("排序前:");
for(int i=0;i<n;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
for(int i=0;i<m;i++){
brr[i]=arr[n-m+i];
}
for(int i=0;i<n-m;i++){
arr[m+i]=arr[i];
}
for(int i=0;i<m;i++){
arr[i]=brr[i];
}
System.out.println("排序后:");
for(int i=0;i<n;i++){
System.out.print(arr[i]+" ");
}
}
}
【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
(约瑟夫环问题,百度百科有时间复杂度最简单的数学方法)
原例代码:
import java.util.Scanner;
public class Demo37 {
public static void main(String[] args) {
System.out.println("请输人数n:");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
boolean[] arr = new boolean[n];
for (int i = 0; i < arr.length; i++) {
arr[i] = true; //下标为TRUE时说明还在圈里
}
int leftCount = n;
int countNum = 0;
int index = 0;
while (leftCount > 1) {
if (arr[index] == true) { //当在圈里时
countNum++; //报数递加
if (countNum == 3) { //报数为3时
countNum = 0; //从零开始继续报数
arr[index] = false; //此人退出圈子
leftCount--; //剩余人数减一
}
}
index++; //每报一次数,下标加一
if (index == n) { //是循环数数,当下标大于n时,说明已经数了一圈,
index = 0; //将下标设为零重新开始。
}
}
for (int i = 0; i < n; i++) {
if (arr[i] == true) {
System.out.println(i);
}
}
}
}
个人代码1:
import java.util.Scanner;
public class Demo37 {
public static void main(String[] args) {
System.out.println("请输入人数:");
Scanner in = new Scanner(System.in);
int[] a = new int[in.nextInt()];
for (int i = 0; i < a.length; i++) {
a[i] = 1;
}
int left = a.length;
int j = 0;
int num = 0;
while (left > 1) {
if (a[j] == 1) {
num++;
}
if (num == 3) {
a[j] = 0;
num = 0;
left--;
}
j++;
if (j == a.length) {
j = 0;
}
}
for (int i = 0; i < a.length; i++) {
if (a[i] == 1) {
System.out.println("最后留下的人是"+ (i + 1) + "号");
break;
}
}
}
}
个人代码2:
import java.util.LinkedList;
import java.util.Scanner;
public class Demo37 {
public static void main(String[] args) {
LinkedList<Integer> l = new LinkedList<Integer>();
System.out.println("请输入人数:");
Scanner in = new Scanner(System.in);
int len = in.nextInt();
for (int i = 0; i < len; i++) {
l.add(i + 1);
}
int sum = 0;
int temp = 0;
for (int i = 0; sum != len - 1;) {
if (l.get(i) != 0) {
temp++;
}
if (temp == 3) {
l.remove(i);
l.add(i, 0);
temp = 0;
sum++;
}
i++;
if (i == l.size()) {
i = 0;
}
}
for (int t : l) {
if (t != 0) {
System.out.println("最后留下的人是" + t + "号");
}
}
}
}
【程序38】 题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
import java.util.Scanner;
public class Demo38 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String mys = in.next();
System.out.println(str_len(mys));
}
public static int str_len(String x) {
return x.length();
}
}
或
import java.util.Scanner;
public class Demo38 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String mys = in.next();
System.out.println(mys.length());
}
}
【程序39】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
import java.util.Scanner;
public class Demo39 {
public static double ouShu(int n) {
double result = 0;
for (int i = 2; i <= n; i = i + 2) {
result += 1 / (double) i;
}
return result;
}
public static double jiShu(int n) {
double result = 0;
for (int i = 1; i <= n; i = i + 2) {
result += 1 / (double) i;
}
return result;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("输入n的值:");
int n = in.nextInt();
if (n % 2 == 0) { //偶数,1/2+1/4+...+1/n
System.out.println(ouShu(n));
} else { //奇数,1/1+1/3+...+1/n
System.out.println(jiShu(n));
}
}
}
【程序40】 题目:字符串排序。
(利用容器类中的sort方法)
import java.util.*;
public class Demo40 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("010102");
list.add("010003");
list.add("010201");
Collections.sort(list);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
或
import java.util.*;
public class Demo40 {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请定义字符串的个数:");
int n=in.nextInt();
String[] str=new String[n];
for(int i=0;i<str.length;i++){
System.out.println("请输入第"+(i+1)+"字符串:");
str[i]=in.next();
}
strSort(n,str);
System.out.println("字符串排序后:");
for(int i=0;i<str.length;i++){
System.out.print(str[i]+" ");
}
}
public static void strSort(int n,String[] arr){
for(int i=0; i<n; i++) {
for(int j=i+1; j<n; j++) {
if(compare(arr[i], arr[j]) == false) {
String temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;
}
}
}
}
static boolean compare(String s1, String s2) {
boolean result = true;
for(int i=0; i<s1.length() && i<s2.length(); i++) {
if(s1.charAt(i) > s2.charAt(i)) {
result = false;
break;
} else if(s1.charAt(i) <s2.charAt(i)) {
result = true;
break;
} else {
if(s1.length() < s2.length()) {
result = true;
} else {
result = false;
}
}
}
return result;
}
}
联系客服