50个java编程程序之四

【程序 31
题目:将一个数组逆序输出。    
import java.util.*;
public class lianxi31 {
public static void main(String[] args) {
   Scanner s = new Scanner(System.in);
   int a[] = new int[20];
System.out.println("
请输入多个正整数(输入 -1 表示结束): ");
   int i=0,j;
   do{
      a[i]=s.nextInt();
      i++;
   }while (a[i-1]!=-1);
   System.out.println("
你输入的数组为: ");
   for( j=0; j<i-1; j++) {
    System.out.print(a[j]+"   ");
}
   System.out.println("\n
数组逆序输出为: ");
   for( j=i-2; j>=0; j=j-1) {
    System.out.print(a[j]+"   ");
}
    }
   }
【程序 32    
题目:取一个整数 a 从右端开始的 4 7 位。    
import java.util.*;
public class lianxi32 {
public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.print("
请输入一个 7 位以上的正整数: ");
    long a = s.nextLong();
    String ss = Long.toString(a);
    char[] ch = ss.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]);
     }
    }
    }
【程序 33   
题目:打印出杨辉三角形(要求打印出 10 行如下图)       
           1   
          1   1   
        1   2    1   
      1    3   3    1   
    1    4    6   4    1   
1    5    10   10    5    1   
…………
public class lianxi33 {
public static void main(String[] args) {
    int[][] a = new int[10][10];
   for(int i=0; i<10; i++) {
    a[i][i] = 1;
    a[i][0] = 1;
   }
   for(int i=2; i<10; i++) {
    for(int j=1; j<i; j++) {
     a[i][j] = a[i-1][j-1] + a[i-1][j];
    }
   }
     for(int i=0; i<10; i++) {
    for(int k=0; k<2*(10-i)-1; k++) {
     System.out.print(" ");
    }
    for(int j=0; j<=i; j++) {
     System.out.print(a[i][j] + "   ");
    }
    System.out.println();
   }
}
}
【程序 34    
题目:输入 3 个数 a,b,c ,按大小顺序输出。    
import java.util.Scanner;
public class lianxi34 {
public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.println("
请输入 3 个整数: ");
    int a = s.nextInt();
    int b = s.nextInt();
    int c = s.nextInt();
      if(a < b) {
     int t = a;
     a = b;
     b = t;
    }
      if(a < c) {
     int t = a;
     a = c;
     c = t;
    }
     if(b < c) {
     int t = b;
     b = c;
     c = t;
    }
    System.out.println("
从大到小的顺序输出 :");
    System.out.println(a + " " + b + " " +c);
}
}
【程序 35    
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。    
import java.util.*;
public class lianxi35 {
public static void main(String[] args) {
   int N = 8;
   int[] a = new int [N];
   Scanner s = new Scanner(System.in);
   int idx1 = 0, idx2 = 0;
   System.out.println("
请输入 8 个整数: ");
   for(int i=0; i<N; i++) {
    a[i] = s.nextInt();
}
   System.out.println("
你输入的数组为: ");
   for(int i=0; i<N; i++) {
     System.out.print(a[i] + " ");
   }
   int max =a[0], min = a[0];
   for(int i=0; i<N; i++) {
    if(a[i] > max) {
     max = a[i];
     idx1 = i;
    }
    if(a[i] < min) {
     min = a[i];
     idx2 = i;
    }
   }
   if(idx1 != 0) {
    int temp = a[0];
    a[0] = a[idx1];
    a[idx1] = temp;
   }
    if(idx2 != N-1) {
    int temp = a[N-1];
    a[N-1] = a[idx2];
    a[idx2] = temp;
   }
   System.out.println("\n
交换后的数组为: ");
   for(int i=0; i<N; i++) {
    System.out.print(a[i] + " ");
   }
}
}
【程序 36    
题目:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数    
import java.util.Scanner;
public class lianxi36 {
public static void main(String[] args) {
   int N =10;
   int[] a = new int[N];
   Scanner s = new Scanner(System.in);
   System.out.println("
请输入 10 个整数: ");
   for(int i=0; i<N; i++) {
    a[i] = s.nextInt();
   }
   System.out.print("
你输入的数组为: ");
   for(int i=0; i<N; i++) {
     System.out.print(a[i] + " ");
   }
   System.out.print("\n
请输入向后移动的位数: ");
   int m = s.nextInt();
   int[] b = new int[m];
   for(int i=0; i<m; i++) {
    b[i] = a[N-m+i];
   }
   for(int i=N-1; i>=m; i--) {
   a[i] = a[i-m];
   }
   for(int i=0; i<m; i++) {
    a[i] = b[i];
   }
System.out.print("
位移后的数组是: ");
   for(int i=0; i<N; i++) {
    System.out.print(a[i] + " ");
   }
}
}
【程序 37    
题目:有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 3 报数),凡报到 3 的人退出圈子,问最后留下的是原来第几号的那位。    
import java.util.Scanner;
public class lianxi37 {
public static void main(String[] args) {
   Scanner s = new Scanner(System.in);
   System.out.print("
请输入排成一圈的人数: ");
   int n = s.nextInt();
   boolean[] arr = new boolean[n];
   for(int i=0; i<arr.length; i++) {
    arr[i] = true;
   }
   int leftCount = n;
   int countNum = 0;
   int index = 0;
   while(leftCount > 1) {
    if(arr[index] == true) {
     countNum ++;
     if(countNum == 3) {
      countNum =0;
      arr[index] = false;
      leftCount --;
     }
    }
     index ++;
     if(index == n) {
     index = 0;
    }
   }
    for(int i=0; i<n; i++) {
    if(arr[i] == true) {
     System.out.println("
原排在第 "+(i+1)+" 位的人留下了。 ");
    }
   }
}
}
【程序 38    
题目:写一个函数,求一个字符串的长度,在 main 函数中输入字符串,并输出其长度。    
/*………………
*……
题目意思似乎不能用 length() 函数      */
import java.util.*;
public class lianxi38 {
public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.println("
请输入一个字符串: ");
    String str = s.nextLine();
     System.out.println("
字符串的长度是: "+str.length());
    }
    }
【程序 39    
题目:编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+...+1/n, 当输入 n 为奇数时,调用函数 1/1+1/3+...+1/n( 利用指针函数 )   
//
没有利用指针函数
import java.util.*;
public class lianxi39 {
public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.print("
请输入一个正整数 n= ");
    int n = s.nextInt();
    System.out.println("
相应数列的和为: " + sum(n));
   }
public static double sum(int n) {
    double res = 0;
    if(n % 2 == 0) {
     for(int i=2; i<=n; i+=2) {
      res += (double)1 / i;
     }
    } else {
     for(int i=1; i<=n; i+=2) {
      res += (double)1 / i ;
     }
    }
    return res;
}
}
【程序 40    
题目:字符串排序。    
public class lianxi40 {
public static void main(String[] args) {
   int N=5;
   String temp = null;
   String[] s = new String[N];
   s[0] = "matter";
   s[1] = "state";
   s[2] = "solid";
   s[3] = "liquid";
   s[4] = "gas";
   for(int i=0; i<N; i++) {
    for(int j=i+1; j<N; j++) {
     if(compare(s[i], s[j]) == false) {
      temp = s[i];
      s[i] = s[j];
      s[j] = temp;
     }
    }
   }
    for(int i=0; i<N; i++) {
    System.out.println(s[i]);
   }
}
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;
}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值