JAVA编程习题及答案_完美版

JAVA编程习题及答案_完美版

1.test10001显示短句



//程序填空.

//在屏幕上显示一个短句“Programming in Java is fun!”





import java.io.;

public class Test10001{

     public static void main(String args[]){

     /
------------------------/

    System.out.println(“Programming in Java is fun!”);

   }

}





2.test10002显示网格



/程序填空。

在屏幕上显示如下网格。

±–±--+

|   |   |

|   |   |

±–±--+

/



import java.io.
;

public class Test10002{

     public static void main(String args[]){

     /
------------------------
/

    System.out.println(“±–±--+”);

    System.out.println("|   |   |");

    System.out.println("|   |   |");

    System.out.println(“±–±--+”);

     

   }

}





3.test10095显示hello world!



import java.io.;

public class Test10095{

     public static void main(String args[]){

     /
---------------------------/

    System.out.println(“Hello world!”);

   }

}





4.test10097求两个数的和



/输入n表示做n次下面的操作:

输入两个正整数,输出它们的和.



例:

输入:

2    //表示n=2,做两次操作

10 11

20 30



输出:

sum=21

sum=50

/



import java.util.Scanner;

public class Test10097{

  public static void main(String args[]){
 int n,a,b,i,sum;
 Scanner in=new Scanner(System.in);
 n=in.nextInt();   //输入n
 for(i=1; i<=n; i++){
 /
------------
/
 a=in.nextInt();
 b=in.nextInt();
 sum=a+b;
 System.out.println(“sum=”+sum);
}

  }

}





5.test20001求两个数的和与差



/程序填空,不要改变与输入输出有关的语句。

输入整数a和b,计算并输出a、b的和与差。

例:

输入

2  -8

输出

The sum is -6

The difference is 10
/





import java.io.
;

import java.util.Scanner;

public class Test20001{

     public static void main(String args[]){

        int a, b, sum, diff;

        Scanner in=new Scanner(System.in);

        a=in.nextInt();

        b=in.nextInt();

        /------------------

        sum=a+b;

        diff=a-b;

        System.out.println("The sum is "+sum);

        System.out.println("The difference is "+diff);

   }

}





6.test20002求平方根



//程序填空,不要改变与输入输出有关的语句。

输入1个实数x,计算并输出其平方根。

例:

输入

1.21

输出

The square root of 1.21 is 1.1







import java.io.;

import java.util.Scanner;

public class Test20002{

     public static void main(String args[]){

        double x, root;

        Scanner in=new Scanner(System.in);

        x=in.nextDouble();

        /
------------------

        root=Math.sqrt(x);

        System.out.println("The square root of “+x+” is "+root);

   }

}





7.test20003华氏温度转换成摄氏温度



/程序填空,不要改变与输入输出有关的语句。

输入华氏温度f,计算并输出相应的摄氏温度c。c = 5/9(f-32).

例:括号内是说明

输入

17.2 (华氏温度)

输出

The temprature is -8.222222222222223
/





import java.util.Scanner;

public class Test20003 {

   public static void main(String[] args) {

      Scanner in=new Scanner(System.in);

      double f, c;

      f=in.nextDouble();

      /
------------------

      c=5
(f-50)/9+10;

      System.out.println("The temprature is “+c);    

   }

}





8.test20004计算旅途时间



程序填空,不要改变与输入输出有关的语句。

输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。

有效的时间范围是0000到2359,不需要考虑出发时间晚于到达时间的情况。

例:括号内是说明

输入

712 1411(出发时间是7:10,到达时间是14:11)

输出

The train journey time is 6 hrs 59 mins.







import java.util.Scanner;

public class Test20004 {

       public static void main(String[] args) {

       Scanner in=new Scanner(System.in);

       int time1, time2, hours, mins;

       time1=in.nextInt();

       time2=in.nextInt();

       /------------------

       time1=(time1/100)60+time1%100;

       time2=(time2/100)60+time2%100;

       hours=(time2-time1)/60;

       mins=(time2-time1)-hours
60;

       System.out.println(“The train journey time is “+hours+” hrs “+ mins+” mins.”);    

   }

}





9.test20005数字加密



程序填空,不要改变与输入输出有关的语句。

输入1个四位数,将其加密后输出。

方法是将该数每一位上的数字加9,

然后除以10取余,做为该位上的新数字,

最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。

例:括号内是说明

输入

1257

输出

The encrypted number is 4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)









import java.util.Scanner;

public class Test20005 {

   public static void main(String[] args) {

      Scanner in=new Scanner(System.in);

      int number, digit1, digit2, digit3, digit4, newnum;

      int temp;   //我自己定义了一个变量

      number=in.nextInt();

      /
------------------

      digit1=number/1000;

      digit2=(number%1000)/100;

      digit3=((number%1000)%100)/10;

      digit4=number%10;

      //以下是测试语句,看看我们的想法是不是正确.但是作业在提交时一定要把它注释掉

      //System.out.print(" “+digit1+” “+digit2+” “+digit3+” "+digit4);    

      //-----------------------------------

      digit1=(digit1+9)%10;

      digit2=(digit2+9)%10;

      digit3=(digit3+9)%10;

      digit4=(digit4+9)%10;

      //---------------------------

      temp=digit1;

      digit1=digit3;

      digit3=temp;

      //----------------------------

      temp=digit2;

      digit2=digit4;

      digit4=temp;

      //----------------------------------

      newnum=digit1
1000+digit2100+digit310+digit4;

      System.out.println(“The encrypted number is “+newnum);    

   }

}







10.test20006大小写字母转换



程序填空,不要改变与输入输出有关的语句。

输入一个大写英文字母,输出相应的小写字母。

例:

输入

G

输出

g



import java.io.;

public class T20006 {
 public static void main(String[] args) throws IOException

          {
    char ch;
    ch=(char)System.in.read();   
     /
------------------
     ch=(char)(ch+32);       // 以ASCII码计算
     System.out.println(ch);    
 }



}





11.Test20007计算三门课程的平均成绩



程序填空,不要改变与输入输出有关的语句。

已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。

本题无输入。

输出示例:

math = 87, eng = 72, comp = 93

average = 84







public class test20007 {

   public static void main(String[] args)  {

      int math, eng, comp, average;

      /
/

      math=87;

      eng=72;

      comp=93;

      average=(math+eng+comp)/3;

      System.out.println("math = “+math+”, eng = “+eng+”, comp = "+comp);

      System.out.println("average = "+ average);

   }

}





12.test20008计算存款利息



程序填空,不要改变与输入输出有关的语句。

输入存款金额 money、存期 year 和年利率 rate,

根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。

interest = money(1+rate)^year - money

输入输出示例:括号内为说明

输入

1000 3 0.025 (money = 1000, year = 3, rate = 0.025)

输出

interest = 76.89



import java.util.Scanner;

public class test20008 {

   public static void main(String[] args)  {

      int money, year;

      double interest, rate;

      Scanner in=new Scanner(System.in);  

      /使用in.nextDouble()和in.nextInt()输入double和int型数据/

      /
/

      money=in.nextInt();

      year=in.nextInt();

      rate=in.nextDouble();

      interest=money
Math.pow((1+rate),year)-money;

      System.out.println(“interest = “+ (int)(interest100+0.5)/100.0);

   }

}





13.test30001显示两级成绩



程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。

输出使用System.out.println(“Pass”);及System.out.println(“Fail”);

例:括号内是说明

输入

2  (repeat=2) 

60  59

输出

Pass

Fail



import java.util.Scanner;

public class Test30001{

   public static void main(String[] args){
 int ri, repeat;
 int mark;
 Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

          mark=in.nextInt();

          if (mark>=60)

         System.out.println(“Pass”);

          else

         System.out.println(“Fail”);

         

      /
------------------

     }

   }

}







14.test30002找最小值



程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入四个整数,输出其中的最小值。

例:括号内是说明

输入

3  (repeat=3) 

12 6 1 90

10 40 30 20

-1 -3 -4 -5

输出

min is 1 (12 6 1 90 中的最小值是1)

min is 10 (10 40 30 20 中的最小值是10)

min is -5 (-1 -3 -4 -5中的最小值是-5)



import java.util.Scanner;

public class Test30002 {

   public static void main(String[] args){

      int ri, repeat;

      int a, b, c, d, min;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

          a=in.nextInt();

          b=in.nextInt();

          c=in.nextInt();

          d=in.nextInt();

           /
------------------/

          min=a;

          if(min>b)min=b;

          if(min>c)min=c;

          if(min>d)min=d;

          System.out.println("min is "+min);

      }

   }

}





15.test30003求三角形的面积和周长



程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入三角形的三条边a, b, c,如果能构成一个三角形,输出面积area和周长perimeter;

否则,输出“These sides do not correspond to a valid triangle”。

在一个三角形中,任意两边之和大于第三边。

三角形的面积计算公式:

aere
area = s(s-a)(s-b)(s-c)

其中:s = (a+b+c)/2

输出代码:

System.out.println(“area=”+area+”;perimeter=”+perimeter);

System.out.println(“These sides do not correspond to a valid triangle”); 



例:括号内是说明

输入

2  (repeat=2) 

5 5 3

1 1 4

输出

area=7.154544;perimeter=13.0

These sides do not correspond to a valid triangle



import java.util.Scanner;

public class Test30003 {

   public static void main(String[] args){

      int ri, repeat;

      float a, b, c, area, perimeter, s;
 Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

          a=in.nextFloat();

          b=in.nextFloat();

          c=in.nextFloat();

           /------------------/

          if (a+b>c&&a+c>b&&b+c>a)

          {

         perimeter=a+b+c;

         s = (a+b+c)/2.0f;

         area =(float)Math.sqrt(s*(s-a)(s-b)(s-c)) ;

         System.out.println(“area=”+area+”;perimeter=”+perimeter);

          }

          else

         System.out.println(“These sides do not correspond to a valid triangle”);  

      }

   }

}





16.test30004判断数的符号



/输入一个正整数repeat (0
输入整数x,若x大于0,y=1;若x等于0,y=0;否则,y=-1,最后输出y。

例:括号内是说明

输入

3  (repeat=3) 

2  -8  0

输出

1     (x=2时y=1)

-1    (x=-8时y=-1)

0     (x=0时y=0)

/



import java.util.Scanner;

public class Test30004{

   public static void main(String[] args){

      int ri, repeat;

      int x, y=0;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

          x=in.nextInt();

           /
------------------
/

          if (x>0)

         y=1;

          else if (x0)

         y=0;

          else if (x<0)

         y=-1;

          System.out.println(y); 

      }

   }

}





17.test30005计算个人所得税

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入一个职工的月薪salary,输出应交的个人所得税tax。

tax = rate * (salary-850)

当 salary <= 850 时,rate = 0%;

当 850 < salary <= 1350 时,rate = 5%;

当 1350 < salary <= 2850 时,rate = 10%;

当 2850 < salary <= 5850 时,rate = 15%;

当 5850 < salary 时,rate = 20%;

例:括号内是说明

输入

5   (repeat=5)

1010.87

32098.76

800

4010

2850

输出

tax=8.04

tax=6249.75

tax=0.0

tax=474.0

tax=200.0





import java.util.Scanner;

public class Test30005 {

   public static void main(String[] args){

      int ri, repeat;

      float rate, salary, tax;
 Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

          salary=in.nextFloat();

            /------------------/

          if(salary<=850)

        tax =0;

          else if(salary<=1350)

          {  rate=0.05f;

             tax=rate*(salary-850);  

          }

          else if(salary<=2850)

          {

         rate=0.10f;

              tax=rate*(salary-850);

          }

         else if(salary<=5850)

          {

         rate=0.15f;

              tax=rate*(salary-850);

          }

          else

          {

         rate=0.20f;

              tax=rate*(salary-850);

          }

          System.out.println(“tax=”+(int)(tax*100+0.5)/100.0); 

      }

   }

}





18.test30006显示水果的价格



/以下4种水果的单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤,10.20元/公斤。



[1] apples

[2] pears

[3] oranges

[4] grapes

输入水果的编号,输出该水果的单价。如果输入不正确的编号,显示单价为0。

例:括号内是说明

输入

1   (repeat=1) 

3   (oranges的编号) 

输出

[1] apples

[2] pears

[3] oranges

[4] grapes

price=4.1

/



import java.util.Scanner;

public class Test30006{

   public static void main(String[] args){

      int ri, repeat;

      int choice;

      float price;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

     System.out.println("[1] apples");

     System.out.println("[2] pears");

     System.out.println("[3] oranges");

     System.out.println("[4] grapes");

           choice=in.nextInt();

            /
------------------
/

           if (choice
1)

          price=3f;

           else if(choice2)

          price=2.5f;

           else if (choice
3)

          price=4.1f;

           else if (choice4)

          price=10.2f;

           else

          price=0;

           

           System.out.println(“price=”+price); 

      }

   }

}





19.test30007字母转换

程序填空,不要改变与输入输出有关的语句。

输入一批以问号“?”结束的字符,对“?”以前的每一个字符,如果它是大写字母,输出相应的小写字母;如果它是小写字母,输出相应的大写字母;否则,原样输出。

例:

输入

F=y?

输出

f=Y





import java.io.;

public class Test30007 {

   public static void main(String[] args)throws IOException{

      char ch;

      ch=(char)System.in.read();

      while(ch!=’?’)

      {

          /
---------------------/

          if(ch>=‘A’&&ch<=‘Z’)

          ch=(char)(ch+32);   

          else if((ch>=‘a’&&ch<=‘z’))

            ch=(char)(ch-32);   

     System.out.print(ch);

          ch=(char)System.in.read();

      }

   }

}





20.test40001求1+1/2+1/3+……1/n



/程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
读入1 个正整数 n(n<=100),计算并输出1+1/2+1/3+……+1/n 。

例:括号内是说明

输入

2   (repeat=1)

2

10

输出

1.5

2.9289684
/





import java.util.Scanner;

public class Test40001 {
public static void main(String[] args) {
  int ri, repeat;
  int i, n;
  float sum;
  Scanner in=new Scanner(System.in);
  repeat=in.nextInt();
  for(ri=1; ri<=repeat; ri++){
  n=in.nextInt();
  /
--------------------/
  sum=0;
  for(i=1;i<=n;i++)
  {
  sum=sum+(float)1/i;
  }
  System.out.println(sum);
  }
}

}





21.test40002求n!

/程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
读入1 个正整数 n(n<=50),计算并输出n! 。

例:括号内是说明

输入

3   (repeat=2)



10

5

输出

1.0

3628800.0

120.0
/





import java.util.Scanner;

public class Test40002 {
public static void main(String[] args) {
  int ri, repeat;
  int i, n;
  double fact;
  Scanner in=new Scanner(System.in);
  repeat=in.nextInt();
  for(ri=1; ri<=repeat; ri++){
  n=in.nextInt();
   /
--------------------/
  fact=1;
  for(i=1;i<=n;i++)
 fact=fact
i; 
  System.out.println(fact);
  }
}

}

 



22.test40003求x的n次幂

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
读入1 个正实数x和1个正整数 n(n<=50),计算并输出x的n次幂。

例:括号内是说明

输入

2   (repeat=2)

1.5 2

2.0 10

输出

2.25

1024.0



import java.util.Scanner;

public class Test40003 {
public static void main(String[] args) {
  int ri, repeat;
  int i, n;
  double x, mypow;
  Scanner in=new Scanner(System.in);
  repeat=in.nextInt();
  for(ri=1; ri<=repeat; ri++){
  x=in.nextDouble();
  n=in.nextInt();
   /--------------------/

           mypow=1.0;

           for(i=1;i<=n;i++)

           {

         mypow=mypowx; 

           }
  System.out.println(mypow);
  }
}

}







23.test40004求1-1/2+1/3-1/4+……

/读入1 个正整数 n(n<=100),

计算并输出1-1/2+1/3-1/4+……的前n项和(四舍五入保留小数4位)。



例:括号内是说明

输入

2   (repeat=2)

10

3

输出

0.6456

0.8333
/

import java.util.Scanner;

public class Test40004 {

   public static void main(String[] args) {
int ri, repeat;
int i, n, flag;
float sum;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
  n=in.nextInt();
   /
--------------------/
  sum=0;
  flag=1;
  for(i=1;i<=n;i++)
 {sum=sum+(float)flag/i;
      flag=-flag;}
  System.out.println((long)(sum
10000+0.5)/10000.);
}

   }

}

 



24.求1+1/3+1/5+1/7+……



程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
读入1 个正整数 n(n<=100),计算并输出1+1/3+1/5+1/7+……的前n项和。

例:括号内是说明

输入

2   (repeat=2)

10

3

输出

2.133256

1.5333334



import java.util.Scanner;

public class Test40005 {

   public static void main(String[] args) {
int ri, repeat;
int i, n, temp;
float sum;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
  n=in.nextInt();
   /--------------------/
 sum=0;
 for(i=1;i<=n;i++)
 {
 sum=sum+1.0f/(2i-1);
 }
 System.out.println(sum);
}

   }

}





25.求1-1/3+1/5-1/7+……

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
读入1 个正实数eps,计算并输出1-1/3+1/5-1/7+……,

直到最后一项的绝对值小于eps为止(要求每一项的绝对值均大于等于eps,并以float类型输出数据)。

例:括号内是说明

输入

2   (repeat=2)

1E-4

0.1

输出

0.7853482

0.83492064



import java.util.Scanner;

public class Test40006 {
public static void main(String[] args) {
  int ri, repeat;
  int temp, flag;  //temp变量干什么用?
  int i;  //自己加上的变量
  double eps, item, sum;
  Scanner in=new Scanner(System.in);
  repeat=in.nextInt();
  for(ri=1; ri<=repeat; ri++){
  eps=in.nextDouble();
   /
--------------------/
  sum=0;
  item=1.0;
  flag=-1;
  i=1;
  while(Math.abs(item)>=eps)
  {
  sum=sum+item;
  item=(double)flag/(2
i+1);
  flag=-flag;
  i++;
  }
  System.out.println((float)sum);
  }
}

}





26.摄氏温度和华氏温度转换表



/程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入2个整数begin和end,分别代表摄氏温度的起止值,

输出该范围内摄氏温度C和华氏温度F的转换表。

F = 32 + C * 9 / 5

输出语句:System.out.println(c+"\t"+f);

例:括号内是说明

输入

1   (repeat=1)

5 7

输出

Celsius Fahrenheit

5 41

6 42

7 44
/





import java.util.Scanner;

public class Test40007 {

   public static void main(String[] args){

      int ri, repeat;

      int begin, c, end, f;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){
  begin=in.nextInt();
  end=in.nextInt();
  System.out.println(“Celsius Fahrenheit”);
   /--------------------/
  for(int i=begin;i<=end;i++)
  {
  c=i;
  f= 32 + i * 9 / 5;
  System.out.println(c+"\t"+f);
  }

      }

   }

}





27.求奇数和

/程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
读入一批正整数(以零或负数为结束标志),求其中的奇数和。

例:括号内是说明

输入2

2   (repeat=2)

1 3 90 7 0

8 7 4 3 70 5 6 101 -1

输出

11

116

/



import java.util.Scanner;

public class Test40008 {

   public static void main(String[] args){

      int ri, repeat;

      int x, sum;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

          x=in.nextInt();

           /
--------------------
/

          sum=0;

          while(x>0)

          {

         if (x%2!=0)

         sum=sum+x;

         x=in.nextInt();

          }

          
System.out.println(sum);

      }

   }

}







28.求最大值

/程序填空,不要改变与输入输出有关的语句。 

输入一个正整数repeat (0
输入一个正整数n, 再输入n个整数,输出最大值。

例:括号内是说明

输入

3   (repeat=3) 

4 2 123 -100 0 

4 9 1 -1 8 

3 1 3 5 

输出

123

9

5
/



import java.util.Scanner;

public class Test40009 {

   public static void main(String[] args){

      int ri, repeat;

      int i , max, n, x;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

         n=in.nextInt();

          /--------------------/

         max=in.nextInt();

         for(i=1;i
         {    

        x=in.nextInt();

        if(max<=x)

        max=x;

          }

         System.out.println(max);

      }

   }

}





29.求整数的位数以及各位数之和

/程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入一个整数,输出它的位数以及各位数之和。

例:括号内是说明

输入

4   (repeat=4) 

123456  -100  -1   99

输出

number=6, sum=21 (123456的位数是6, 各位数之和是21)

number=3, sum=1 (-100的位数是3, 各位数之和是1)

number=1, sum=1 (-1的位数是1, 各位数之和是1)

number=2, sum=18 (99的位数是2, 各位数之和是18)
/

import java.util.Scanner;

public class Test40010 {

   public static void main(String[] args){

      int ri, repeat;

      int number, sum,n;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

         n=in.nextInt();

          if(n<0)

            n=-n;

          number=(String.valueOf(n)).length();

          int i;

          sum=0;

          for(i=0;i
         sum=sum+n%10;

         n=n/10;

          }

         System.out.println(“number=”+number+", sum="+sum);

      }

   }

}





30.求2/1+3/2+5/3+8/5+……

/输入一个正整数repeat (0
输入一个正整数n,输出 2/1+3/2+5/3+8/5 +…的前n项之和,

保留4位小数(不足4位时,不必用0填满4位)。

(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)

例:括号内是说明

输入

3  (repeat=3) 

1  5  20

输出

2.0      (第1项是2.0)

8.3917   (前5项的和是8.3917)

32.6603  (前20项的和是32.6603)
/





import java.util.Scanner;

public class Test40011 {

   public static void main(String[] args) {

      int ri, repeat;

      int i,n;

      float a,b,s,t;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){
  n=in.nextInt();
   /--------------------/
  s=2;
  a=2;
  b=1;
  for(i=2;i<=n;i++)
  {
  t=a+b;
  b=a;
  a=t;
  s=s+a/b;
  }
  


            System.out.println((int)(s10000+.5)/10000.);

      }

   }

}





31.求a+aa+aaa+aa…a



程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入2个正整数a和n, 求a+aa+aaa+aa…a(n个a)之和。

例:括号内是说明

输入

2  (repeat=2)

2 3 (a=2, n=3)

8 5 (a=8, n=5)

输出

246   (2+22+222)

98760 (8+88+888+8888+88888)



import java.util.Scanner;

public class T40012

{

  public static void main(String[] args) 

  {
int ri, repeat;
int i, n, a, sn, tn;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++)
{
   a=in.nextInt();
   n=in.nextInt();
   /
--------------------/

            tn=0;

            sn=0;
   for(i=1;i<=n;i++)

             {

          tn=tn
10+a;

          sn=sn+tn;

             }
    System.out.println(sn);
}

   }

}





32.判断素数

/程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入一个正整数m,如果它是素数,输出"YES",否则,输出"NO"

(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。

例:括号内是说明

输入

4  (repeat=4) 

1  2  9  17

输出

NO    (1不是素数)

YES   (2是素数) 

NO    (9不是素数) 

YES   (17是素数)
/





import java.util.Scanner;

public class Test40013{

  public static void main(String args[]){

      int ri, repeat;

      int i, m, n;

      boolean flag;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

        m=in.nextInt();

          /--------------------/

        flag=true;

        if (m
1)

        flag=false;

        else

        { i=2;

        flag=true;

        while(i
        {

        if(m%i0)

        flag=false;

        i++;

        }}

        if(flag) System.out.println(“YES”);

        else System.out.println(“NO”);

      }

   }

}





33.求1+1/2!+……+1/n!

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入1 个正整数n,计算 s 的前n项的和。

   s = 1 + 1/2! +…+ 1/n! 

例:括号内是说明

输入:

2    (repeat=2)

2    (n=2)

10    (n=10)

输出:

1.5

1.7182816





import java.util.Scanner;

public class T40021{

  public static void main(String args[]){

      int ri, repeat;

      int i,n;

      float s,t=1;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++)

      {

        n=in.nextInt();

        /--------------------/

        s=0;       

        t=1;   

        for(i=1;i<=n;i++)

        {

          t=t/i;

          s=s+t;

        }

        System.out.println(s);

      }

   }

}







34.求各位数字的立方和等于它本身的数

/程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入2 个正整数m和n(1<=m,n<=1000),

输出m 和n之间所有满足各位数字的立方和等于它本身的数。

输出语句:System.out.println(i);

例:括号内是说明

输入:

2    (repeat=2)

100 400  (m=100, n=400)

1 100    (m=1, n=100)

输出:

153 (1
11+555+333=153)

370 (3
33+777=370)

371 (3
33+777+111=371)

1

/



import java.util.Scanner;

public class Test40022{

  public static void main(String args[]){

      int ri, repeat;

      int i, digit, m, n, number, sum;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

        m=in.nextInt();

        n=in.nextInt();

         /
------------------
/

        for(i=m;i<=n;i++)

        {

        int a=i/100;

        int b=(i-a100)/10;

        int c=i%10;

        sum=a
aa+bbb+cc*c;

        if(sum
i)

        System.out.println(i);

       

        }

      }

   }

}





35.统计素数并求和

/程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数以及这些素数的和。

例:括号内是说明

输入:

3      (repeat=2)

1 10   (m=1, n=10)

20 35  (m=20, n=35)

14 16  (m=14, n=16)

输出:

count=4, sum=17    (1到10之间有4个素数:2,3,5,7)

count=3, sum=83    (20到35之间有3个素数:23, 29, 31)

count=0, sum=0     (14到16之间没有素数)

/



import java.util.Scanner;

public class Test40023 { 
public static void main(String args[])

int ri, repeat;

       int count,i,j,k,m,n,sum;

       Scanner in = new Scanner(System.in);

       repeat = in.nextInt();

       for (ri = 1; ri <= repeat; ri++) {

      m = in.nextInt();

      n = in.nextInt();
  count = 0;
   sum = 0;
boolean f = true; 
if (m == 1) 
{
m = 2; 
 }
for (i = m; i <= n; i++)
{
f = true;
for (j = 2; j <= i / 2; j++)
{ if (i % j == 0) 
{ f = false; break; }
}
if (f == true) 
{ count++;
sum=sum+i;
}
}
System.out.println(“count=” + count+", sum=" + sum); 


  }



}







36.统计单词

/输入一行字符,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。 

例:括号内是说明

输入

2   (repeat=2)

Reold building  room   123

  Programming is fun

输出

4

3 /

import java.util.Scanner;

public class Test40031{

  public static void main(String []args ){

     int ri, repeat,count, word,i;

     String line;

     char c;

     Scanner in=new Scanner(System.in);

     repeat=in.nextInt();in.nextLine();

     for(ri=1; ri<=repeat; ri++){

        line=in.nextLine();

        /
---------


        word=count=0;

        for(i=0;i
        {c=line.charAt(i);

        if(c!=’ ‘)

        {

          if (word0)

          {

          count++;

          word=1;

          }

        }else word=0;

        }

       System.out.println( count);

     }

  }

}





37.输出一个整数的各位数字

/程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入一个整数,从高位开始逐位输出它的各位数字。

输出语句:System.out.print(digit+" ");

例:括号内是说明

输入

3   (repeat=3) 

123456

-600

8

输出

1 2 3 4 5 6

6 0 0

8

/



import java.util.Scanner;

public class Test40032{

    public static void main(String []args ){

        int ri, repeat;

        int digit;

        long n, temp, pow;

        Scanner in=new Scanner(System.in);

        repeat=in.nextInt();

        for(ri=1; ri<=repeat; ri++){

             n=in.nextLong();

             /
---------
/

             if(n<0)

            n=-n;

             String s=String.valueOf(n);

             for(digit=0;digit
             {

            System.out.print(s.charAt(digit)+" “);

             }

             System.out.println();

        }

    }

}







38.简单计算器

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
程序模拟简单运算器的工作:输入一个算式(没有空格),

遇等号”="说明输入结束,输出结果。

假设计算器只能进行加减乘除运算,运算数和结果都是整数,

4种运算符的优先级相同,按从左到右的顺序计算。

例:括号内是说明

输入

2   (repeat=2)

15 + 2 / 3 =    (数字与运算符之间有一空格)

1 + 2 * 10 - 10 / 2 =    (数字与运算符之间有一空格)

输出

5

10 

*/

/补充知识:in.next()与in.nextline()的区别

 in.next只接受一个字,不能接受一个带有空格的字符串,如下:

 例如输入:  Show me --(回车)

用next()只能得到Show,因为遇到空格表示结束,但是nextline()则要遇到回车才知道结束.

可以看一个例子,演示给大家看,如下:

-----------------------------------------

import java.util.Scanner;

public class Test60011{

   public static void main(String []args)

   {
  String s1_1,s1_2,s2;
  Scanner in=new Scanner(System.in);

       s1_1=in.next();

       System.out.println(s1_1);

       System.out.println("----------");

       in.nextLine(); // 把剩余的吃掉

       s2=in.nextLine();

       System.out.println(s2);

       System.out.println("----------");

       s1_1=in.next();

       s1_2=in.next();

       System.out.println(s1_1+"       "+s1_2);

   }

}

-------------------------------------------

 
/

import java.util.Scanner;

public class Test40033{

  public static void main(String args[]) {
  int ri, repeat;
  int op1, op2, res;
  char operator;
  Scanner in=new Scanner(System.in);
  repeat=in.nextInt();
  for(ri=1; ri<=repeat; ri++){
    op1=in.nextInt();
    operator =(in.next()).charAt(0);  //
    res=op1;  //res看作最后的结果
    while(operator!=’=’)
    {
    op2=in.nextInt();
    if(operator
’+’) res+=op2;
    else if(operator==’-’) res-=op2;
    else if(operator==’
’) res=op2;
    else res/=op2;
    operator =(in.next()).charAt(0);
    }
/---------/
    System.out.println(res);
  }

  }

}





39.求1+1/2!+……1/N!

//求1+1/2!+1/3!+…(用方法求n!)

import java.util.Scanner;    //引入

public class T50001 {
public static void main(String[] args)
{
int ri,repeat;
int i,n;
double s;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1;ri<=repeat;ri++)

                {
n=in.nextInt();
/---------------/
s=0;
for(i=1;i<=n;i++)
{
 s=s+1/fact(i);

}

                        System.out.println((long)(s10000+0.5)/10000.0);
}
}
/
---------------/
public static double fact(int n)
{
double t=1;
int i;
if(n==1)
 return 1;
else
{  for(i=1;i<=n;i++)
 {
t=t
i;
 }

   return t;
}
}

}





40.求a+aa+aaa+……(用方法)

//求a+aa+aaa+aa…a

import java.util.Scanner;

public class T50002{

     public static void main(String args[])

     {
 int ri, repeat;
 int i, n,a;
 long sn;
 Scanner in=new Scanner(System.in);
 repeat=in.nextInt();
 for(ri=1; ri<=repeat; ri++) 

          {
 a=in.nextInt();
 n=in.nextInt();
 /------------/

                  sn=0;
 for(i=1;i<=n;i++)

                   {

                     sn=sn+fn(a,i);        
 

                   }
 System.out.println(sn);
 }

     }

     /------------/

     public static long fn(int a,int m)

     {   int i;

         long t=0;

         for(i=0;i<=m-1;i++)   //i仅起到次数作用

         {

           t=t10+a;    

         }

         return t;

     }

}







41.统计一个整数中数字的个数

/程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
读入1 个整数,统计并输出该数中2的个数。

要求定义并调用函数countdigit(number,digit),

它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0)的返回值是3。

例:括号内是说明

输入:

3       (repeat=3)

-21902

2

345543

输出:

count=2       (-21902中有2个2)

count=1       (有1个2)

count=0       (345543中没有2)
/





import java.util.Scanner;

public class Test50003{

  public static void main(String args[]){
 int ri, repeat;
 int count;
 long n;
 Scanner in=new Scanner(System.in);
 repeat=in.nextInt();
 for(ri=1; ri<=repeat; ri++){
 n=in.nextInt();
 /
---------/
 count=countdigit(n,2);
 System.out.println(“count=”+count);
 }

  }

  /
------------/

  static int countdigit(long n,int digit)

  {   int count=0;
 digit=2;
 String a=String.valueOf(n);
 int b=a.length();
 for(int i=0;i {
    char c=a.charAt(i);
    if (c==‘2’)
    count++;
 }
 return (count);

  }

}







42.判断素数(用方法)

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"

(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。

要求定义并调用函数prime(m)判断m是否为素数。

例:括号内是说明

输入

4  (repeat=4) 

1  2  9  17

输出

NO    (1不是素数)

YES   (2是素数) 

NO    (9不是素数) 

YES   (17是素数)



import java.util.Scanner;

public class Test50004

 {
public static void main(String[] args)

        {
   int ri, repeat,n;
   boolean flag;
   Scanner in=new Scanner(System.in);
   repeat=in.nextInt();
   for(ri=1; ri<=repeat; ri++)
   {
     n=in.nextInt();
     /
---------/
     flag=prime(n);
     if(flag)
      System.out.println(“YES”);
     else 
      System.out.println(“NO”);
   }
}
/
------------/
public static boolean prime(int m)
{
 boolean t=false;
 int i;
 for(i=2;i {
 if(m%i0)
 {  break; }
 
 }
if(i
m)
   t=true;
return t;
 }   

}





43.统计素数并求和

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入2 个正整数m和n(1<=m,n<=500),

统计并输出m 和n之间的素数的个数以及这些素数的和

(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。

要求定义并调用函数prime(m)判断m是否为素数。

例:括号内是说明

输入:

3      (repeat=3)

1 10   (m=1, n=10)

20 35  (m=20, n=35)

14 16  (m=14, n=16)

输出:

count=4, sum=17    (1到10之间有4个素数:2,3,5,7)

count=3, sum=83    (20到35之间有3个素数:23, 29, 31)

count=0, sum=0     (14到16之间没有素数)





import java.util.Scanner;

public class Test50005{

  public static void main(String args[]){
 int ri, repeat;
 int count, i, m, n, sum;
 Scanner in=new Scanner(System.in);
 repeat=in.nextInt();
 for(ri=1; ri<=repeat; ri++){
     m=in.nextInt();
     n=in.nextInt();
 /
---------/
     System.out.println(“count=”+count+", sum="+sum);
}

  }

  /
------------/

}





44.输出Fibonacci序列

/程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入2 个正整数m和n(1<=m,n<=10000),输出m 和n之间所有的Fibonacci数。

Fibonacci 序列(第1项起):1  1  2  3  5  8  13  21 …

要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。

例如,fib(7)的返回值是13。

输出语句:System.out.print(f+" ");



例:括号内是说明

输入:

3      (repeat=3)

1 10   (m=1, n=10)

20 100  (m=20, n=100)

1000 6000  (m=1000, n=6000)

输出:

1 1 2 3 5 8        (1到10之间的Fibonacci数)

21 34 55 89     (20到100之间的Fibonacci数)

1597 2584 4181   (1000到6000之间的Fibonacci数)

/



import java.util.Scanner;

public class Test50006{

  public static void main(String args[]){
 int ri,repeat;
 int i, m, n;
 long f;
 Scanner in=new Scanner(System.in);
 repeat=in.nextInt();
 for(ri=1; ri<=repeat; ri++){
     m=in.nextInt();
     n=in.nextInt();
 /
---------
/
     for(i=1;i<=n;i++)
     {
     f=fib(i);
     if(f>=m&&f<=n)
     System.out.print(f+" ");
     }
     System.out.println();
}

  }

  /
------------/

  static int fib(int i)

  {   int a=1,b=1,t,f=1;

      for(int j=3;j<=i;j++)

      {   

     f=a+b;

     t=a+b;

     a=b;

     b=t;

     }
 return f;

  }

}







45.求完数

/输入2 个正整数m和n(1<=m,n<=1000),输出m 到n之间的所有完数

(完数就是因子和与它本身相等的数)。

要求定义并调用函数factorsum(number),它的功能是返回number的因子和。

例如,factorsum(12)的返回值是16(1+2+3+4+6)。

输出语句:System.out.print(i+" ");

例:括号内是说明

输入:

2    (repeat=2)

20 500  (m=100, n=400)

1 100    (m=1, n=100)

输出:

28 496

1 6 288
/

import java.util.Scanner;

public class Test50007{

  public static void main(String args[]){
 int ri,repeat;
 int i, m, n;
 Scanner in=new Scanner(System.in);
 repeat=in.nextInt();
 for(ri=1;ri<=repeat;ri++){
 m=in.nextInt();
 n=in.nextInt();
 /
---------/
 for(i=m;i<=n;i++)
 {
 factorsum(i);
 if (factorsum(i)==i)
 System.out.print(i+" "); 
 }
 System.out.println();
 }

  }

  /
---------/

  static int factorsum(int n)

  {   int s=0;

      for(int i=2;i
     if (n%i==0)

     s=s+i;

      s=s+1;
 return s;

  }

}





46.求各位数字的立方和等于它本身的数

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入2 个正整数m和n(1<=m,n<=1000),

输出m 到n之间的所有满足各位数字的立方和等于它本身的数。

要求定义并调用函数is(number)判断number的各位数字之立方和是否等于它本身。

输出语句:System.out.print(i+" ");

例:括号内是说明

输入:

2    (repeat=2)

100 400  (m=100, n=400)

1 100    (m=1, n=100)

输出:

153 370 371 (1
11+555+333=153; 333+777=370; 333+777+111=371)

1





import java.util.Scanner;

public class Test50008{

  public static void main(String args[]){
 int ri,repeat;
 int i, m, n;
 Scanner in=new Scanner(System.in);
 repeat=in.nextInt();
 for(ri=1;ri<=repeat;ri++){
   m=in.nextInt();
   n=in.nextInt();
/
---------/
   System.out.println();
 }

  }

  /
---------/

}







47.将一个整数逆序输出

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入一个整数,将它逆序输出。

要求定义并调用函数reverse(number),它的功能是返回number的逆序数。

例如reverse(12345)的返回值是54321。

例:括号内是说明

输入

4   (repeat=4) 

123456 -100 -2 99

输出

654321

-1

-2

99







import java.util.Scanner;

public class Test50009{

  public static void main(String args[]){
 int ri,repeat;
 long n, res;
 Scanner in=new Scanner(System.in);
 repeat=in.nextInt();
 for(ri=1;ri<=repeat;ri++)
 {
 n=in.nextInt();
 /
---------/
 res=reverse(n);
 System.out.println(res);
 }

  }

  /
---------/

  public static long reverse(long number)

  {

      long temp;

      String s,s1="";

      if(number>=0)      //可以试以下负数会出问题

     temp=number;

      else

          temp=-number;

      s=String.valueOf(temp);  

      for(int i=0;i
      {

     s1+=s.charAt(s.length()-i-1);//这里有一个结论可以记住,什么结论?

      }                                //一个整数和一个空字符串运算呢?
 //System.out.println(s1);

      temp=Long.parseLong(s1);

      if(number>=0) 

          return temp;

      else

     return -temp;

  }

}







48。十进制转换二进制

程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0
输入1 个正整数n,将其转换为二进制后输出。

要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。

例如,调用dectobin(10),输出1010。

输出语句:System.out.print(t);   //t为某位二进制数

例:括号内是说明

输入:

3    (repeat=3)

15

100

0

输出:

1111

1100100

0



import java.util.Scanner;

public class Test50010{
static void dectobin(int n)

    {
String s="";
do{
s=Integer.toString(n%2)+s;  //如果直接用n%2+s呢?思考!
n=n/2;
}while(n>0);
System.out.println(s);  //输出的要求和题目不一样,是吗?
}

  public static void main(String args[]){
 int ri,repeat;
 int i,n;
 Scanner in=new Scanner(System.in);
 repeat=in.nextInt();
 for(ri=1;ri<=repeat;ri++){
   n=in.nextInt();

            /
---------/   

        dectobin(n);
   System.out.println();
 }
}

  /
---------/

}









49。求平均值

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入一个正整数n (1
例:括号内是说明

输入

2   (repeat=2) 

3 1 2 -6

5 12 2 5 4 0 

输出

aver=-1.0

aver=4.6



import java.util.Scanner;

public class Test60001{
public static void main(String []args){
int ri, repeat;
int i, n, sum,a[];
float aver;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
   n=in.nextInt();
   a=new int[n];
   for(i=0; i       a[i]=in.nextInt();
   /
---------/
   System.out.println(“aver=”+aver);
}
}

}





50。求最大值及其下标

/输入一个正整数n (1
(设最大值惟一,下标从0开始)。

例:括号内是说明

输入

3   (repeat=3) 

3 1 6 4

3 10 8 1

5 1 2 5 4 0 

输出

max=6,index=1    (最大值6的下标是1)

max=10,index=0   (最大值10的下标是0)

max=5,index=2    (最大值5的下标是2)
/



import java.util.Scanner;

public class Test60002{

    public static void main(String []args){

        int ri, repeat;

        int i, index, n, a[];

        Scanner in=new Scanner(System.in);

        repeat=in.nextInt();

        for(ri=1; ri<=repeat; ri++){

             n=in.nextInt();

             a=new int[n] ;

             for(i=0; i
                  a[i]=in.nextInt();

                   /
---------/

                index=0;

                for(int j=1;j
                {

                if(a[index]
                index=j;

                }

             System.out.println(“max=”+a[index]+",index="+index);

        }

   }

}



51。逆序输出

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入一个正整数n (1
例:括号内是说明

输入

2   (repeat=2) 

4 10 8 1 2

5 1 2 5 4 0 

输出

2 1 8 10

0 4 5 2 1



import java.util.Scanner;

public class Test60003{

   public static void main(String []args)

   {

      int ri, repeat;

      int i, n, temp,a[];

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

         n=in.nextInt();

         a=new int[n];

         for(i=0; i
            a[i]=in.nextInt();

         for(i=0;i
        {

              temp=a[i];

              a[i]=a[n-1-i];

              a[n-1-i]=temp;

          }

         for(i=0; i
            System.out.print(a[i]+" ");

         System.out.println();

      }

   }

}





52。交换最小值和最大值

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入一个正整数n,再输入n个整数,将最小值与第一个数交换,

最大值与最后一个数交换,然后输出交换后的n个数。

例:括号内是说明

输入

3   (repeat=3) 

5 4 3 5 1 2

4 1 5 6 7

5 5 4 3 2 1 

输出

1 3 2 4 5

1 5 6 7

1 4 3 2 5





import java.util.Scanner;

public class Test60004{

   public static void main(String []args){

      int ri, repeat;

      int i, index, n, t,a[];
 Scanner in=new Scanner(System.in);
 repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++)

      {

     n=in.nextInt();

          a=new int[n];

          for(i=0; i
              a[i]=in.nextInt();

          index=0;

          for(i=1; i
             if(a[i]>a[index]) index=i;

          t=a[n-1];a[n-1]=a[index];a[index]=t;

          index=0;

          for(i=1; i
             if(a[i]
          t=a[0];a[0]=a[index];a[index]=t;

          /
---------*/

          for(i=0; i
             System.out.print(a[i]+” “);

          System.out.println();

        }  

  }

}



53。排序

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入一个正整数n,再输入n个整数,将它们从大到小排序后输出。

例:括号内是说明

输入

3   (repeat=3) 

4 5 1 7 6

3 1 2 3

5 5 4 3 2 1 

输出

7 6 5 1 

3 2 1

5 4 3 2 1



import java.util.Scanner;

public class Test60005{

   public static void main(String []args){

      int ri, repeat;

      int i, index, k, n, temp;

      int a[]=new int[10];

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

         n=in.nextInt();

         for(i=0; i
            a[i]=in.nextInt();

         for(i=0;i
        index=i;

        for(k=i+1;k
        if(a[k]>a[index]) index=k;

        if(index!=i){

        temp=a[i];a[i]=a[index];a[index]=temp;

        }

         }

         for(i=0; i
            System.out.print(a[i]+” ");

         System.out.println();

      }

   }

}



54。矩阵运算

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
读入 1 个正整数 n(1≤n≤6), 再读入 n 阶方阵 a , 

计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和.

(副对角线为从矩阵的右上角至左下角的连线)

例:括号内是说明

输入:

1  (repeat=1)

4  (n=4)

2 3 4 1

5 6 1 1

7 1 8 1

1 1 1 1

sum=35   (2+3+4+5+6+7+8=35)





import java.util.Scanner;

public class Test60011{

   public static void main(String []args){

      int ri, repeat;

      int a[][],i,j,n,sum;

      Scanner in=new Scanner(System.in);

      repeat=in.nextInt();

      for(ri=1; ri<=repeat; ri++){

         n=in.nextInt();

         a=new int[n][n];

         sum=0;

         for(i=0; i
            for(j=0;j
            a[i][j]=in.nextInt();

         for(i=0; i
             for(j=0;j
            if(i+j!=n-1) sum+=a[i][j];

         System.out.println(“sum=”+sum);

      }

   }

}



55。加法口诀表

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0
输入 1 个正整数 n(1≤n≤10), 输出一张 20 以内的加法口诀表. 

加数与被加数都不大于 n, 分列第一行和第一列.

(将加数、被加数、和放入一个二维数组中, 再输出该数组)

例:括号内是说明

输入:

1       (repeat=1)

3       (n=3)

输出:

  •   1   2   3   

    1   2   

    2   3   4   

    3   4   5   6   



    import java.util.Scanner;

    public class Test60012{

       public static void main(String []args){

          int ri, repeat;

          int i,j,n,a[][]=new int[10][10];

          Scanner in=new Scanner(System.in);

          repeat=in.nextInt();

          for(ri=1; ri<=repeat; ri++){

             n=in.nextInt();

             for( j=1; j<=n; j++ ){//生成第一行

            a[0][j]=j;

             }

             for( i=1; i<=n; i++ ){//生成第一列

            a[i][0]=i;

             }

             for( i=1; i<=n; i++ )//生成和列表

            for(j=1;j<=i;j++)

            a[i][j]=a[i][0]+a[0][j];

             

             for( i=0; i<=n; i++ ){

                 for( j=0; j<=n; j++ )

                     if(i0&&j0) System.out.print( “+   “);

                     else if(i0||j<=i) System.out.printf( “%-4d”, a[i][j]);  //输出占4位,不足4位右边填空格

                 System.out.println();

             }

          }

       }

    }





    56。判断上三角函数

    程序填空,不要改变与输入输出有关的语句。

    输入一个正整数repeat (0
    输入1 个正整数 n (1≤n≤6)和n 阶方阵a中的元素,

    如果a是上三角矩阵, 输出"YES", 否则, 输出"NO"。

    (上三角矩阵,即主对角线以下的元素都为0, 主对角线为从矩阵的左上角至右下角的连线)

    例:括号内是说明

    输入:

    2       (repeat=2)

    3  1  2  3   0  4  5  0  0  6 (n=3)

    2  1  0  -8  2   (n=2)

    输出:

    YES 

    NO





    import java.util.Scanner;

    public class T60013{

       public static void main(String []args)

       {

          int ri, repeat;

          int a[][]=new int[6][6],i,j,n;

          boolean flag;

          Scanner in=new Scanner(System.in);

          repeat=in.nextInt();

          for(ri=1; ri<=repeat; ri++)

          {

             n=in.nextInt();

             for (i=0;i
                 for (j=0;j
                      a[i][j]=in.nextInt();

          flag=true;

             for (i=0;i
             { for (j=0;j
                  {

                 if(i>j&&a[i][j]!=0)

               
     flag=false;

                  }

             }

             if(flag)

            System.out.println(“YES”);

             else

            System.out.println(“NO”);

         }

       }

     }





    57。求矩阵每行元素之和

    程序填空,不要改变与输入输出有关的语句。

    输入一个正整数repeat (0
    输入2 个正整数 m 和 n (1≤m, n),然后输入该m 行 n 列矩阵a中的元素,

    分别求出各行元素之和, 并存入一维数组row中, 再输出row.

    例:括号内是说明

    输入:

    1    (repeat=1)

    3 2  (m=3, n=2)

    6  3

    1  -8

    3 12

    输出:

    sum of row 0 is 9

    sum of row 1 is -7

    sum of row 2 is 15



    import java.util.Scanner;

    public class Test60014{

       public static void main(String []args){

          int ri, repeat;

          int i,j,m,n,a[][],row[];

          Scanner in=new Scanner(System.in);

          repeat=in.nextInt();

          for(ri=1; ri<=repeat; ri++){

             m=in.nextInt();

             n=in.nextInt();

             a=new int[m][n];

             row=new int[m];

             for (i=0;i
                 for (j=0;j
                      a[i][j]=in.nextInt();

             for(i=0;i
            for(j=0;j
            row[i]=row[i]+a[i][j];

             for(i=0;i
                  System.out.println("sum of row “+i+” is “+row[i]);

          }

       }

    }





    58。找鞍点

    程序填空,不要改变与输入输出有关的语句。

    输入一个正整数repeat (0
    输入 1 个正整数 n和n 阶方阵a中的元素,如果找到a 的鞍点

    (鞍点的元素值在该行上最大, 在该列上最小), 

    就输出它的下标, 否则,输出"NO”(设a最多有1个鞍点)。

    例:括号内是说明

    输入:

    2        (repeat=2)

    4  1  7  4  1 4  8  3  6 1  6  1  2 0  7  8  9  (n=4)

    2  1 7 4 1   (n=2)

    输出:

    a[2][1]=6

    NO 



    import java.util.Scanner;

    public class Test60019{

       public static void main(String []args){

          int ri, repeat;

          int i,j,k,row,col,n,a[][];

          boolean flag;

          Scanner in=new Scanner(System.in);

          repeat=in.nextInt();

          for(ri=1; ri<=repeat; ri++){

             n=in.nextInt();

             flag=false;

             a=new int[n][n];

             for (i=0;i
                 for (j=0;j
                      a[i][j]=in.nextInt();

             

             row=0;col=0;

             for(i=0;i
             {

            col=0;

            for(j=0;j
            if(a[i][j]>a[i][col]) col=j;

            row=i;

            for(k=0;k
            if(a[k][col]
            if(row
    i) {

            flag=true;

            break;

            }

             }

             /---------/



             if(flag)

            System.out.println(“a[”+row+”][”+col+"]="+a[row][col]);

             else 

            System.out.println(“NO”);

          }

       }

    }





    59。求字符串长度

    程序填空,不要改变与输入输出有关的语句。

    连续输入一批以 # 结束的多串字符。

    统计并输出每串字符的长度。

    输出使用:System.out.println(len);

    例:括号内是说明

    输入:

    hello 12#abc+0#   (连续输入2串字符“hello 12”和“abc+0”)

    输出:

    8     (“hello 12”的长度是8)

    5    (“abc+0”的长度是5) 



    import java.util.Scanner;

    public class Test60021{

       public static void main(String []args){

          int len,count,i,k;

          char ch;

          String str;

          Scanner in=new Scanner(System.in);

          str=in.nextLine();

           /---------/

          count=0;len=str.length();

          for(i=0;i
          {

         ch=str.charAt(i);

         if(ch!=’#’)

         count++;

         else 

         {

         System.out.println(count);

         count=0;

         }

          }

       }

    }









    60。统计大写辅音字母

    程序填空,不要改变与输入输出有关的语句。

    输入一个正整数n (0
    输入一行字符串,统计并输出字符串中大写辅音字母的个数

    (大写辅音字母:除“A”,“E”,“I”,“O”,“U”以外的大写字母)。

    例:括号内是说明

    输入:

    3   (输入3个字符串)

    HELLO

    IT12

    uieiaba

    输出:

    3     (“HELLO"中有3个大写辅音字母)

    1    (“IT12"中有1个大写辅音字母) 

    0    (“uieiaba"中没有大写辅音字母) 





    import java.util.Scanner;

    public class Test60022{

        public static void main(String []args){

             int count,i,j,n;

             char ch;

             String str;

             Scanner in=new Scanner(System.in);

             n=in.nextInt();

             in.nextLine();

             for(i=1;i<=n;i++){

                 str=in.nextLine();

                 count=0;

                 for(j=0;j
                ch=str.charAt(j);

                if(ch>‘A’ && ch<=‘Z’ && ch!=‘E’ && ch!=‘I’ && ch!=‘O’ && ch!=‘U’) 

                count++;

                 }

                 /---------/

                 System.out.println(count);

             }

       }

    }



    61。查找字符

    程序填空,不要改变与输入输出有关的语句。

    先输入一个字符ch。然后输入一个正整数n (0
    输入一行字符串,在字符串中查找该字符(ch),如果找到,则输出

    该字符在字符串中最后出现的位置(从0开始);否则输出“Not Found”。

    例:括号内是说明

    输入:

    m                         (输入一个字符)

    3                          (要输入3行字符串)

    moon

    programming

    1234   

    输出:

    0     (m在"moon"中最后出现位置是0)

    7     (m在"programming"中最后出现位置是7)

    Not Found    (“1234"中没有m)



    import java.util.Scanner;

    public class Test60023{

        public static void main(String []args){

             int index,i,n,j;

             char ch;

             String str;

             Scanner in=new Scanner(System.in);

             ch=(in.nextLine()).charAt(0);

             n=in.nextInt();

            in.nextLine();

             for(i=1;i<=n;i++)

             {

                 str=in.nextLine();

                 /---------/

                 index=-1;   //目的是做一个标记

                 for(j=0;j< str.length();j++)

                 {

                if(ch==str.charAt(j))

                        index=j;

                 }

                 if(index>=0)

                System.out.println(index);

                 else

                System.out.println(“Not Found”);

             }

       }

    }



    62。字符串替换

    程序填空,不要改变与输入输出有关的语句。

    输入一个正整数repeat (0
    输入一行字符串,生成一个新的字符串,

    将原字符串中的大写字母用下面列出的对应大写字母替换, 其余字符不变, 输出新字符串. 

    原字母   对应字母

        A ──→ Z

        B ──→ Y

        C ──→ X

        D ──→ W

           ……

        X ──→ C

        Y ──→ B

        Z ──→ A

    例:括号内是说明

    输入:

    3     (输入3行字符串)

    A flag of USA

    IT12

    oueiaba

    输出:

    Z flag of FHZ

    RG12

    oueiaba



    import java.util.Scanner;

    public class Test60024{

        public static void main(String []args){

            int ri, repeat, i;

            char ch;

            String str1,str2;

            Scanner in=new Scanner(System.in);

            repeat=Integer.parseInt(in.nextLine());

            for(ri=1; ri<=repeat; ri++){

                 str1=in.nextLine();

                 str2=””;

                 for(i=0;i
                 {

                ch=str1.charAt(i);

                if(ch>=‘A’ & ch<= ‘Z’)

                {

                ch=(char)(26-(ch-‘A’)+‘A’-1);

                str2+=ch;

                }

                 

                else str2+=ch;

                 }

                 /---------/

                 System.out.println(str2);

            }

       }

    }



    63。十六进制转换十进制

    程序填空,不要改变与输入输出有关的语句。

    输入一个正整数repeat (0
    输入一行字符串,对字符串做如下处理:滤去所有的非十六进制字符后,组成一



    个新字符串(十六进制形式),然后将其转换为十进制数后输出。

    例:括号内是说明

    输入:

    3     (输入3行字符串)

    10

    Pf4+1

    -+A  

    输出:

    16

    3905

    10





    import java.util.Scanner;

    public class Test60025{

        public static void main(String []args)

        {

           int ri, repeat, i,number,n;

           char ch;

           String str,str2=””;   //注意,str2是自己加的,可见自己可以加变量

           Scanner in=new Scanner(System.in);

           repeat=Integer.parseInt(in.nextLine()); //不能直接数整数?为什么?

           //答:直接输有一个小问题,因为数值输入和字符串输入不能写在一起,上课演示给大家看

           for(ri=1; ri<=repeat; ri++){

                 str=in.nextLine();                     

                 str2="";

                 for(i=0;i
                 {

                   ch=str.charAt(i);

                   if(ch>=‘0’ & ch <=‘9’ | ch >=‘A’ & ch<=‘F’|ch>=‘a’& ch<=‘f’)

                str2+=ch;

                  }

                  number=0;  //每一次开始,number必须设置为0,为什么?

                  //答:在此,number作为一个累加和的变量

                  for(i=0;i
                  {

                ch=str2.charAt(i);
                n=0;  //这个赋值是说不通的,有人认为这是java的编译器有点问题
           
    if(ch>=‘0’ & ch <=‘9’)
           
    n=ch-‘0’;   //我们说过两个字符加减是一个数字数据 
                else if(ch >=‘A’ & ch<=‘F’)
               
    n=ch-‘A’+10; 
           
    else if( ch>=‘a’& ch<=‘f’)
           
    n=ch-‘a’+10;
           
    for(int j=1;j       
    n*=16;
           
    number=number+n;

                 } 

                 /---------/

                 System.out.println(number);

            }

       }

    }







    -------------------------------------------------------------------------------------



     



                        
    • 点赞 3
    • 收藏
    • 分享
    发布了92 篇原创文章 · 获赞 31 · 访问量 10万+
                        
    展开阅读全文

    你可能感兴趣的:(JAVA编程习题及答案_完美版)