【编程题】Java编程题六(10道)

ENTER TITLE


【程序41】   
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

public class lianxi41 { 
 public static void main (String[] args) { 
 int i,m,j=0,k,count; 
 for(i=4;i<10000;i+=4) 
    { count=0; 
      m=i; 
      for(k=0;k<5;k++) 
         { 
          j=i/4*5+1; 
          i=j; 
          if(j%4==0) 
             count++; 
             else break; 
        } 
     i=m; 
 if(count==4) 
 {System.out.println("原有桃子 "+j+" 个"); 
 break;} 
 } 
 } 
 } 【程序42】   
题目:809*??=800*??+9*??+1     其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
 //题目错了!809x=800x+9x+1 这样的方程无解。去掉那个1就有解了。
 public class lianxi42 { 
 public static void main (String[] args) { 
 int a=809,b,i;
 for(i=10;i<13;i++)
 {b=i*a ;
 if(8*i<100&&9*i>=100)
 System.out.println ("809*"+i+"="+"800*"+i+"+"+"9*"+i+"="+b);}
 }
 } 【程序43】   
题目:求0—7所能组成的奇数个数。 
 //组成1位数是4个。
 //组成2位数是7*4个。
 //组成3位数是7*8*4个。
 //组成4位数是7*8*8*4个。
 //......
 public class lianxi43 { 
 public static void main (String[] args) { 
 int sum=4;
 int j;
 System.out.println("组成1位数是 "+sum+" 个");
 sum=sum*7;
 System.out.println("组成2位数是 "+sum+" 个");
 for(j=3;j<=9;j++){
 sum=sum*8; 
 System.out.println("组成"+j+"位数是 "+sum+" 个");
 }
 }
 } 【程序44】   
题目:一个偶数总能表示为两个素数之和。
 //由于用除sqrt(n)的方法求出的素数不包括2和3,
 //因此在判断是否是素数程序中人为添加了一个3。
 import java.util.*;
 public class lianxi44 {
 public static void main(String[] args) {
 Scanner s = new Scanner(System.in);
 int n,i;
 do{
      System.out.print("请输入一个大于等于6的偶数:");
      n = s.nextInt();
     } while(n<6||n%2!=0);   //判断输入是否是>=6偶数,不是,重新输入
 fun fc = new fun();
     for(i=2;i<=n/2;i++){
     if((fc.fun(i))==1&&(fc.fun(n-i)==1)) 
     {int j=n-i;
      System.out.println(n+" = "+i+" + "+j);
      } //输出所有可能的素数对
    }
 }
 }
 class fun{
 public int fun (int a)    //判断是否是素数的函数
 {
 int i,flag=0;
 if(a==3){flag=1;return(flag);}
 for(i=2;i<=Math.sqrt(a);i++){
    if(a%i==0) {flag=0;break;}
       else flag=1;}
 return (flag) ;//不是素数,返回0,是素数,返回1
 }
 }
 //解法二
 import java.util.*;
 public class lianxi44 {
 public static void main(String[] args) {
 Scanner s = new Scanner(System.in);
 int n;
 do{
      System.out.print("请输入一个大于等于6的偶数:");
      n = s.nextInt();
     } while(n<6||n%2!=0);   //判断输入是否是>=6偶数,不是,重新输入    for(int i=3;i<=n/2;i+=2){
     if(fun(i)&&fun(n-i)) {
       System.out.println(n+" = "+i+" + "+(n-i));
       } //输出所有可能的素数对
    }
 }
 static boolean fun (int a){    //判断是否是素数的函数
 boolean flag=false;
 if(a==3){flag=true;return(flag);}
 for(int i=2;i<=Math.sqrt(a);i++){
    if(a%i==0) {flag=false;break;}
       else flag=true;}
 return (flag) ;
 }
 }【程序45】   
题目:判断一个素数能被几个9整除
 //题目错了吧?能被9整除的就不是素数了!所以改成整数了。
 import java.util.*;
 public class lianxi45 { 
 public static void main (String[] args) { 
    Scanner s = new Scanner(System.in);
    System.out.print("请输入一个整数:");
     int num = s.nextInt();
     int   tmp = num;
     int count = 0; 
        for(int i = 0 ; tmp%9 == 0 ;){
            tmp = tmp/9;
             count ++;
           }
      System.out.println(num+" 能够被 "+count+" 个9整除。");
      }
 } 【程序46】   
题目:两个字符串连接程序
 import java.util.*;
 public class lianxi46 {
 public static void main(String[] args) {
     Scanner s = new Scanner(System.in);
     System.out.print("请输入一个字符串:");
     String str1 = s.nextLine();
     System.out.print("请再输入一个字符串:");
     String str2 = s.nextLine();
     String str = str1+str2;
     System.out.println("连接后的字符串是:"+str);
     }
     } 【程序47】   
题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
 import java.util.*;
 public class lianxi47 {
 public static void main(String[] args) {
 Scanner s = new Scanner(System.in);
 int n=1,num;
 while(n<=7){
          do{
           System.out.print("请输入一个1--50之间的整数:");
              num= s.nextInt();
            }while(num<1||num>50);
       for(int i=1;i<=num;i++)
       {System.out.print("*");
       }
 System.out.println();
 n ++;
 }
 }
 } 【程序48】   
题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
 import java.util.*;
 public class lianxi48   { 
 public static void main(String args[]) { 
 Scanner s = new Scanner(System.in);
 int num=0,temp;
 do{
    System.out.print("请输入一个4位正整数:");
       num = s.nextInt();
      }while (num<1000||num>9999); 
 int a[]=new int[4]; 
 a[0] = num/1000; //取千位的数字 
 a[1] = (num/100)%10; //取百位的数字 
 a[2] = (num/10)%10; //取十位的数字 
 a[3] = num%10; //取个位的数字 
 for(int j=0;j<4;j++) 
 { 
 a[j]+=5; 
 a[j]%=10; 
 } 
 for(int j=0;j<=1;j++) 
     { 
     temp = a[j]; 
     a[j] = a[3-j]; 
     a[3-j] =temp; 
     } 
 System.out.print("加密后的数字为:"); 
 for(int j=0;j<4;j++) 
 System.out.print(a[j]); 
 } 
 } 【程序49】   
题目:计算字符串中子串出现的次数
 import java.util.*;
 public class lianxi49 { 
 public static void main(String args[]){
 Scanner s = new Scanner(System.in);
     System.out.print("请输入字符串:");
     String str1 = s.nextLine();
     System.out.print("请输入子串:");
     String str2 = s.nextLine();
 int count=0; 
 if(str1.equals("")||str2.equals("")) 
    { 
    System.out.println("你没有输入字符串或子串,无法比较!"); 
    System.exit(0); 
    } 
 else 
    { 
     for(int i=0;i<=str1.length()-str2.length();i++) 
      { 
      if(str2.equals(str1.substring(i, str2.length()+i))) 
       //这种比法有问题,会把"aaa"看成有2个"aa"子串。 
        count++; 
        } 
 System.out.println("子串在字符串中出现: "+count+" 次"); 
 } 
 }
 } 【程序50】   
题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,把原有的数据和计算出的平均分数存放在磁盘文件 "stud "中。
 import java.io.*; 
 import java.util.*;
 public class lianxi50 { 
 public static void main(String[] args){ 
    Scanner ss = new Scanner(System.in);
    String [][] a = new String[5][6];
    for(int i=1; i<6; i++) {
     System.out.print("请输入第"+i+"个学生的学号:");
     a[i-1][0] = ss.nextLine();
     System.out.print("请输入第"+i+"个学生的姓名:");
     a[i-1][1] = ss.nextLine();
     for(int j=1; j<4; j++) {
        System.out.print("请输入该学生的第"+j+"个成绩:");
        a[i-1][j+1] = ss.nextLine();
        }
 System.out.println("\n");
    }
 //以下计算平均分
 float avg;
 int sum;
 for(int i=0; i<5; i++) {
 sum=0;
    for(int j=2; j<5; j++) {
    sum=sum+ Integer.parseInt(a[i][j]);
       }
    avg= (float)sum/3;
    a[i][5]=String.valueOf(avg);
 }
 //以下写磁盘文件 
 String s1; 
 try { 
     File f = new File("C:\\stud"); 
     if(f.exists()){ 
       System.out.println("文件存在"); 
       }else{ 
          System.out.println("文件不存在,正在创建文件"); 
           f.createNewFile();//不存在则创建 
         } 
 BufferedWriter output = new BufferedWriter(new FileWriter(f)); 
 for(int i=0; i<5; i++) {
 for(int j=0; j<6; j++) {
    s1=a[i][j]+"\r\n";
    output.write(s1);    
     }
 }
 output.close(); 
 System.out.println("数据已写入c盘文件stud中!");
    } catch (Exception e) { 
      e.printStackTrace(); 
      } 
 }
 }