栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > Java面试题

应届生初级Java编程题-主要考察基本的Java编码能力及逻辑

Java面试题 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

应届生初级Java编程题-主要考察基本的Java编码能力及逻辑

一、求两个数的和与差。程序填空,不要改变与输入输出有关的语句。输入整数a和b,计算并输出a、b的和与差。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);   }}二、求平方根。程序填空,不要改变与输入输出有关的语句。输入1个实数x,计算并输出其平方根。例:输入1.21输出The square root of 1.21 is 1.1import 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);   }}三、华氏温度转换为摄氏温度。程序填空,不要改变与输入输出有关的语句。输入华氏温度f,计算并输出相应的摄氏温度c。c = 5/9(f-32).例:括号内是说明:输入17.2 (华氏温度)输出The temprature is -8.222222222222223import 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.0/9*(f-32);      System.out.println("The temprature is "+c);       }}四、计算旅途时间。程序填空,不要改变与输入输出有关的语句。输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。有效的时间范围是0000到2359,不需要考虑出发时间晚于到达时间的情况。例:括号内是说明:输入712 1411(出发时间是7:12,到达时间是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();                 hours=time2/100-time1/100;      mins=time2%100-time1%100;            hours=mins>0?hours:hours-1;      mins=mins>0?mins:mins+60;System.out.println("The train journey time is "+hours+" hrs "+ mins+" mins.");       }} 五、数字加密。程序填空,不要改变与输入输出有关的语句。输入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;      number=in.nextInt();                  digit1=number/1000;(是这样来取得位数的)      digit2=number/100%10;  //或 digit2=(number-digit1*1000)/100;      digit3=number/10%10;   //或 digit3=(number-digit1*1000-digit2*100)/10;      digit4=number%10;            digit1=(digit1+9)%10;      digit2=(digit2+9)%10;      digit3=(digit3+9)%10;      digit4=(digit4+9)%10;            newnum=digit3*1000+digit4*100+digit1*10+digit2;(注意这里是这样来实现交换的)      System.out.println("The encrypted number is "+newnum);       }} 六、大写字母转换成小写字母。程序填空,不要改变与输入输出有关的语句。输入一个大写英文字母,输出相应的小写字母。例:输入G输出gimport java.io.*;public class Test20006 {  public static void main(String[] args) throws IOException {     char ch;     ch=(char)System.in.read();     ch=(char)(ch+32);     System.out.println(ch);      }}七、计算三门课程的平均成绩。程序填空,不要改变与输入输出有关的语句。已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。本题无输入。输出示例:math = 87, eng = 72, comp = 93 ,average = 84public 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);   }}八、计算存款利息。程序填空,不要改变与输入输出有关的语句。输入存款金额 money、存期 year 和年利率 rate,根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。interest = money(1+rate)^year - money输入输出示例:括号内为说明输入1000 3 0.025(money = 1000, year = 3, rate = 0.025)输出interest = 76.89import java.util.Scanner;public class test20008 {   public static void main(String[] args)  {      int money, year;      double interest, rate;      Scanner in=new Scanner(System.in);              money=in.nextInt();year=in.nextInt();rate=in.nextDouble();interest=money*Math.pow((1+rate), year )- money;表示的是1+rate的year方幂      System.out.println("interest = "+ (int)(interest*100+0.5)/100.0);    //保留两位小数   }}实验5  分支结构程序的设计一、显示两级成绩,程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。输出使用System.out.println("Pass");及System.out.println("Fail");例:括号内是说明:输入2  (repeat=2) 60  59输出Pass  Failimport 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("Fail");      else       System.out.println("Pass");     }   }}二、找最小值,程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算: 输入四个整数,输出其中的最小值。例:括号内是说明输入3  (repeat=3) 12 6 1 9010 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);      }   }}三、求三角形的面积和周长,程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入三角形的三条边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="+(int)(area*100+0.5)/100.+";perimeter="+(int)(perimeter*100+0.5)/100.);System.out.println("These sides do not correspond to a valid triangle"); 例:括号内是说明输入2  (repeat=2) 5 5 31 1 4输出area=7.15;perimeter=13.0These sides do not correspond to a valid triangleimport 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)          { s=(a+b+c)/2; area=(float)Math.sqrt(s*(s-a)*(s-b)*(s-c)); perimeter=a+b+c; System.out.println("area="+(int)(area*100+0.5)/100.+";perimeter="+(int)(perimeter*100+0.5)/100.);          }          else         System.out.println("These sides do not correspond to a valid triangle");      }   }}四、判断数的符号,程序填空,不要改变与输入输出有关的语句。输入整数x,若x大于0,y=1;若x等于0,y=0;否则,y=-1,最后输出y。import java.util.Scanner;public class Test30004{   public static void main(String[] args){      int ri, repeat;      int x, y;      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(x==0)y=0;else y=-1;   System.out.println(y);       }   }}if(x>0)          y=1;if(x<0)y=-1;else y=0;(这样是错的。。这是为什么?) 五、计算个人所得税,程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个职工的月薪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.8732098.7680040102850输出tax=8.04tax=6249.75tax=0.0tax=474.0tax=200.0import 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)          rate=0;          else if(salary<=1350)          rate=0.05f;  else if(salary<=2850)  rate=0.1f;     else if(salary<=5850)     rate=0.15f;      else     rate=0.2f;         tax=rate*(salary-850);          System.out.println("tax="+(int)(tax*100+0.5)/100.0);       }   }} 六、显示水果的价格,程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:以下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] grapesprice=4.1import 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();           switch(choice){       case 1:price=3.0f;break;       case 2:price=2.5f;break;       case 3:price=4.1f;break;       case 4:price=10.2f;break;         default: price=0; }System.out.println("price="+price);       }   }}七、字母转换,程序填空,不要改变与输入输出有关的语句。输入一批以问号“?”结束的字符,对“?”以前的每一个字符,如果它是大写字母,输出相应的小写字母;如果它是小写字母,输出相应的大写字母;否则,原样输出。import java.io.*;public class Test30007 {   public static void main(String[] args)throws IOException{      char ch;      ch=(char)System.in.read();      while(ch!='?'){       if('A'<=ch&&ch<='Z')      ch+=32;      else if('a'<=ch&&ch<='z') //此处必须使用if结构的嵌套        ch-=32;          System.out.print(ch);          ch=(char)System.in.read();      }   }}循环结构程序的设计(一)1.求1+1/2+1/3+……+1/n  程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入1 个正整数 n(n<=100),计算并输出1+1/2+1/3+……+1/n 。i=1;   i<=n;   sum=0;   do   {   i=i+1;   sum=sum+1/i;      } while(n<=100);   System.out.println((int)(sum*1000+0.5)/1000.);   }}}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();   //以下if语句用于检查输入数据的正确性,可以不写if(n<=0||n>100){ //输入0、负数或大于100的数时结束程序的运行System.out.println("输入数据出错,程序退出");System.exit(0); }sum=0; //注意这条赋初值语句的位置for(i=1;i<=n;i++){sum+=1.0f/i; }      System.out.println((int)(sum*1000+0.5)/1000.);   }}}2.求n!   程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入1 个正整数 n(n<=50),计算并输出n! 。import java.util.Scanner;public class Test40002 {public static void main(String[] args) {   int ri, repeat;   int i, n;   double fact;/// 这里的double在编写中是用不到的吧~~   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*=i;   System.out.println(fact);   }}}3.求x的n次幂    程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入1 个正实数x和1个正整数 n(n<=50),计算并输出x的n次幂。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;   for(i=1;i<=n;i++)   mypow*=x;   System.out.println(mypow);   }   //这个,怎么感觉有些不对??}}4.求1+1/3+1/5+1/7+……    程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入1 个正整数 n(n<=100),计算并输出1+1/3+1/5+1/7+……的前n项和。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();    temp=1;sum=0;for(i=1;i<=n;i++)    //那这里i是什么用的么??循环N次!!{   sum+=1.0f/temp;    temp+=2; }    System.out.println(sum);}   }}解法二:temp=2*n-1;   sum=0;   for(i=1;i<=temp;i+=2)   sum+=1.0f/i;5.摄氏温度和华氏温度转换表。程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入2个整数begin和end,分别代表摄氏温度的起止值,输出该范围内摄氏温度C和华氏温度F的转换表。F = 32 + C * 9 / 5输出语句:System.out.println(c+"t"+f);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(c=begin;c<=end;c++) {   //这样显然也是可以的~~      f=32+c*9/5;       System.out.println(c+"t"+f); //就算是空格也不要忘了加引号!!      }        }   }}6.求奇数和。程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入一批正整数(以零或负数为结束标志),求其中的奇数和。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+=x;          x=in.nextInt();          为什么把他放前面顺序就不一样了呢?          }     System.out.println(sum);      }   }}sum=0;   if(x%2!=0)   sum+=x;   //if  和  while之间的区别要分清楚了!!7.求最大值。程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n, 再输入n个整数,输出最大值。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<=n-1;i++){  x=in.nextInt(); if(x>max)max=x;         }         System.out.println(max);      }   }}8.求整数的位数以及各位数之和。程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个整数,输出它的位数以及各位数之和。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();          n=Math.abs(n);         number=sum=0;         do{sum=sum+(n%10);number++;n=n/10;     //这样一直除的话到后来sum一直是加0.但number不是还是一直在加上去么? }while(n>0);   //这个不是很显然的么?为什么还要写?         System.out.println("number="+number+", sum="+sum);      }   }}import java.util.*;public class grade {  public static void main(String []args){  Scanner in =new Scanner(System.in);    int gcd, lcm, m, n,r;    int repeat, ri;  repeat=in.nextInt();  for(ri = 1; ri <= repeat; ri++){  m=in.nextInt();  n=in.nextInt();  r=m;  if(m <= 0 || n <= 0)  System.out.println("m <= 0 or n <= 0");  else{lcm=m*n;    do{    if(m<n){r=m;m=n;n=r;    }     r=m%n ;   m=n;   n=r;    }while(r!=0);    gcd=m;    lcm=lcm/m;          System.out.println("the least common multiple:"+lcm+", the greatest common divisor:"+gcd);      }}    }}循环结构程序的设计(二)9.求1-1/2+1/3-1/4+……    程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入1 个正整数 n(n<=100),计算并输出1-1/2+1/3-1/4+……的前n项和(四舍五入保留小数4位)。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+=flag*1.0f/i;flag=-flag;}   System.out.println((long)(sum*10000+0.5)/10000.);}   }}10.求1-1/3+1/5-1/7+……    程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入1 个正实数eps,计算并输出1-1/3+1/5-1/7+……,直到最后一项的绝对值小于eps为止(要求每一项的绝对值均大于等于eps,并以float类型输出数据)。import java.util.Scanner;public class Test40006 {public static void main(String[] args) {   int ri, repeat;   int temp, flag;   double eps, item, sum;   Scanner in=new Scanner(System.in);   repeat=in.nextInt();   for(ri=1; ri<=repeat; ri++){   eps=in.nextDouble();       item=1;   sum=0;   temp=flag=1;   while(Math.abs(item)>=eps){   sum+=item;   flag=-flag;   temp+=2;   item=flag*1.0/temp;   }   System.out.println((int)(sum*10000+0.5)/10000.);   }}}11.求2/1+3/2+5/3+8/5+...     程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n,输出 2/1+3/2+5/3+8/5 +...的前n项之和,保留4位小数(不足4位时,不必用0填满4位)。(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)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();    a=1;  //分母   //这样的题目像兔子数列一样,开始时都定好一些值就好了。b=2; //分子s=0;for(i=1;i<=n;i++) {s+=b/a;t=a;a=b;    //分母是前一项的分子b=t+b; //分子是前一项分子与分母的和}s=s+b/a;  a=b;   b=a+b;    //为什么直接这样做他就错了呢? System.out.println((int)(s*10000+.5)/10000.);      }   }}12.求a+aa+aaa+aa…a    程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入2个正整数a和n, 求a+aa+aaa+aa…a(n个a)之和。import java.util.Scanner;public class Test40012{  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=a;sn=0;for(i=1;i<=n;i++){sn+=tn;tn=tn*10+a;  //迭代公式} sn=0;        tn=0;        for(i=1;i<=n;i++){        tn=tn*10+a;        sn=sn+tn;        }        System.out.println(sn);      }   }}13.判断素数。程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数m,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。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;///true和false输进去是会变红的!!        for(i=2;i<=m-1;i++)        if(m%i==0){        flag=false;        break;   //有些时候确实需要你确认一下是不是大括号方面出错了!!        } flag=true;if(m==1)flag=false;        for(i=2;i<=m-1;i++){        if(m%i==0)flag=false;     }        if(flag) System.out.println("YES");        else System.out.println("NO");      }   }}14.求1 + 1/2! +....+ 1/n!     程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入1 个正整数n,计算 s 的前n项的和。   s = 1 + 1/2! +....+ 1/n! import java.util.Scanner;public class Test40021{  public static void main(String args[]){      int ri, repeat;      int i,n;      float s,t;      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*=i;s+=1/t;  //如果这两条语句交换位置,则i=1要改成i=2      }          System.out.println((int)(s*10000+0.5)/10000.);      }   }}15.求各位数字的立方和等于它本身的数。程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入2 个正整数m和n(1<=m,n<=1000),输出m 和n之间所有满足各位数字的立方和等于它本身的数。输出语句:System.out.println(i);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++){    //不能从值上来看i所代表的循环次数啊!!!        number=i;        sum=0;  //为什么总有number大于0这个显然的东西?        while(number>0){        digit=number%10;        number=number/10;        sum+=digit*digit*digit;        }        if(i==sum)        System.out.println(i);         }      }   }}Method的使用16.统计素数并求和。程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入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, digit, 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=sum=0;       for(k=m;k<=n;k++){        for(i=2;i<=k-1;i++)if(k%i==0)break;if(i==k){count++;sum+=k;}       }System.out.println("count="+count+", sum="+sum);        }} }import java.util.Scanner;public class Test40023_2 {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=sum=0;       boolean flag;     for(k=m;k<=n;k++) {       if(k==1)flag=false;  //1不是素数       else flag=true;       for(i=2;i<=k-1;i++) {       if(k%i==0){       flag=false;       break;       }       }       if(flag){       sum+=i;       count++;       }       }       System.out.println("count="+count+", sum="+sum); }} }import java.util.Scanner;public class a{ 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=sum=0;        for(i=m;i<=n;i++)        {         if(isprime(i)) {count++;         sum+=i;}        }       System.out.println("count="+count+", sum="+sum);     }  } public static boolean isprime(int n) {  int i;  if(n<2) return false;  for(i=2;i<n;i++)   if(n%i==0) break;  if(i==n) return true;  else return false; }}顺序结构程序的设计17.求1 + 1/2! +....+ 1/n!输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入1 个正整数n,计算 s 的前n项的和(保留 4 位小数)。   s = 1 + 1/2! +....+ 1/n! 要求定义并调用函数fact(n)计算n的阶乘。import java.util.Scanner;public class Test50001 {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+=1.0/fact(i);        System.out.println((long)(s*10000+0.5)/10000.);}}static double fact(int n) {int i;double f=1;     //把两个变量先定义一下!!for(i=1;i<=n;i++)f*=i;return f;} }18.求a+aa+aaa+aa…a输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入2个正整数a和n, 求a+aa+aaa+aa…a(n个a)之和。要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。例如,fn(3,2)的返回值是33。import java.util.Scanner;public class Test50002{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+=fn(a,i);      System.out.println(sn);  }}static int fn(int a,int n){     int s=0;    for(int i=1;i<=n;i++)    s=s*10+a;    f(a,n)=a+10*f(a,n-1);  错的原因是?return s; }}19.统计一个整数中数字的个数输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入1 个整数,统计并输出该数中2的个数。要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0)的返回值是3。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();    n=Math.abs(n);  count = countdigit(n,2);  System.out.println("count="+count);  }  }    static int countdigit(long number,int digit){int a,c=0;while(number>0){a=(int)(number%10);if(a==digit)c++  //当a不等于digit的情况下?是不是默认就进行下一个的循环了?number=number/10;}return c;  }}20.判断素数输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。要求定义并调用函数prime(m)判断m是否为素数。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");    }  }   static boolean prime(int m){   boolean flag=true;   if(m==1)flag=false;   for(int i=2;i<=m-1;i++)   if(m%i==0)    { flag=false; break; }   return flag;   }}21.统计素数并求和输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。要求定义并调用函数prime(m)判断m是否为素数。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();            count=0;      sum=0;      for(i=m;i<=n;i++)      if(prime(i)){count++; sum+=i;} System.out.println("count="+count+", sum="+sum);}  }    static boolean prime(int m){  boolean flag=true;  if(m==1)flag=false;  for(int i=2;i<=m-1;i++)  if(m%i==0)  { flag=false; break; }  return flag;  }}22.输出 Fibonacci 序列输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入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+" ");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();            i=1;      f=1;      while(f<=n){      if(f>=m) System.out.print(f+" ");      i++;      f=fib(i);   //是要输出的数在mn之间,而不是要循环这么多次啊!      } System.out.println();}  }    static long fib(int n){  int i;  long a=1,b=1,f=1;    for(i=3;i<=n;i++){ //从第3项开始计算  f=a+b;  a=b;  b=f;    }  return f;  }}   23.求完数输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入2 个正整数m和n(1<=m,n<=1000),输出m 到n之间的所有完数(完数就是因子和与它本身相等的数)。要求定义并调用函数factorsum(number),它的功能是返回number的因子和。例如,factorsum(12)的返回值是16(1+2+3+4+6)。输出语句:System.out.print(i+" ");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++)  if(i==factorsum(i))   System.out.print(i+" ");   System.out.println();  }  }  static int factorsum(int number){  int sum=0;  if(number==1)sum=1;  for(int i=1;i<=number-1;i++)  if(number%i==0)sum+=i;  return sum;  }}static int factorsum(int number){  int s=0,a=0;  while(number>0){  a=number%10;  s=s+a;  number=number/10;   }  return s;    }   哎呀!!!你这样定义的不是因子和啊!!24.}求各位数字的立方和等于它本身的数输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入2 个正整数m和n(1<=m,n<=1000),输出m 到n之间的所有满足各位数字的立方和等于它本身的数。要求定义并调用函数is(number)判断number的各位数字之立方和是否等于它本身。输出语句:System.out.print(i+" ");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();        for(i=m;i<=n;i++)  if(is(i))        System.out.print(i+" "); System.out.println();  }  }    static boolean is(int number) {  int sum=0,n,digit;  n=number;  while(n>0){  digit=n%10;  n=n/10;  sum+=digit*digit*digit;  }  if(number==sum)  return true;  else  return false;  }}Method的使用(二)25.将一个整数逆序输出输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个整数,将它逆序输出。要求定义并调用函数reverse(number),它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321。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);  }  }  static long reverse(long number){  int flag=1;  long a=0,digit;  if(number<0){  flag=-1;  number=-number;  }  while(number>0){digit=number%10; //分离出个位数字a=a*10+digit;    //形成当前的逆序数number=number/10;  }  return flag*a;  }  }26.十进制转换二进制输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:输入1 个正整数n,将其转换为二进制后输出。要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。例如,调用dectobin(10),输出1010。输出语句:System.out.print(t);   //t为某位二进制数import java.util.Scanner;public class Test50010{  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();  }}    static void dectobin(int n){    int t;  //保存某位二进制  String s=""; //保存二进制数  do {  t=n%2;  //获得除2后的余数  s=t+s;  //拼接  n=n/2;  //获得除2后的商  }while(n>0);  System.out.print(s); //本方法无返回值,需要在方法体中输出结果  }}一维数组的使用27.求平均值输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n (1<n≤10),再输入n个整数,输出平均值。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<n; i++)        a[i]=in.nextInt();         sum=0;      for(i=0; i<n; i++) //这个循环实现累加    sum+=a[i];    aver=((float)sum)/n; //求平均值,注意要先把sum转换成float,再计算        System.out.println("aver="+aver);}}}28.求最大值及其下标输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n (1<n≤10),再输入n个整数,输出最大值极其下标(设最大值惟一,下标从0开始)。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<n; i++)       a[i]=in.nextInt();          index=0; //用index保存最大数的下标,开始假设a[0]是最大数     for(i=1; i<n; i++)   if(a[index]<a[i]) index=i;    //a[i]与当前最大数a[index]比较,若a[i]更大,index变为i       System.out.println("max="+a[index]+",index="+index);        }   }}29.逆序输出输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n (1<n≤10),再输入n个整数,按逆序输出这些数。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<n; i++) a[i]=in.nextInt();              for(i=0; i<n/2; i++){ //a[i]与a[n+1-i]交换,注意交换次数         temp=a[i];         a[i]=a[n+1-i];         a[n+1-i]=temp;         }         for(i=0; i<n; i++)       System.out.print(a[i]+" ");         System.out.println();      }   }}30.交换最小值和最大值输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n,再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。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<n; i++) a[i]=in.nextInt();                  index=0;  //找最大数         for(i=0; i<n; i++)        if(a[index]<a[i]) index=i;t=a[index]; a[index]=a[n-1];a[n-1]=t;  //交换       index=0;  //找最小数         for(i=0; i<n; i++)        if(a[index]>a[i]) index=i;          t=a[index]; a[index]=a[0];a[0]=t;  //交换  for(i=0; i<n; i++) //输出 System.out.print(a[i]+" ");         System.out.println();      }   }}二维数组的使用31.排序输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n,再输入n个整数,将它们从大到小排序后输出。import java.util.Scanner;public class Test60005{   public static void main(String []args){      int ri, repeat;      int i, index, k, 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<n; i++) a[i]=in.nextInt();                  for(i=0;i<n-1;i++) { //选择法递减排序         index=i;         for(k=i+1;k<n;k++)       if(a[k]>a[index]) index=k;         temp=a[i];         a[i]=a[index];         a[index]=temp;      }for(i=0; i<n; i++) System.out.print(a[i]+" ");         System.out.println();      }   }}32.矩阵运算输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入 1 个正整数 n(1≤n≤6), 再读入 n 阶方阵 a , 计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和.(副对角线为从矩阵的右上角至左下角的连线)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];         for(i=0; i<n; i++) for(j=0;j<n;j++) a[i][j]=in.nextInt();                  sum=0;         for(i=0; i<n-1; i++)    //i<n-1 排除最后一行  for(j=0;j<n-1;j++){ //j<n-1 排除最后一列  if((i+j)!=(n-1)) sum+=a[i][j]; //非副对角线元素才加入  }   System.out.println("sum="+sum);      }   }}33.加法口诀表输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入 1 个正整数 n(1≤n≤10), 输出一张 20 以内的加法口诀表. 加数与被加数都不大于 n, 分列第一行和第一列.(将加数、被加数、和放入一个二维数组中, 再输出该数组)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(i=1;i<=n;i++) { //给第1行和第1列所有元素赋值,a[0][0]不用赋值      a[0][i]=i;  //第1行为被加数,从第2列开始赋值1,2,...,n      a[i][0]=i;  //第1列为加数,从第2行元素开始赋值1,2,...,n      }         for(i=1;i<=n;i++) //计算和,从第2行第2列开始         for(j=1;j<=n;j++){         a[i][j]=i+j;         //或 a[i][j]=a[0][j]+a[i][0]; //所在列第1行元素+所在行第1列元素         }         for( i=0; i<=n; i++ ){  for( j=0; j<=n; j++ )      if(i==0&&j==0) System.out.print( "+   ");//在第1行第1列上输出"+   "      else if(i==0||j<=i) System.out.print(a[i][j]+"   ");  //输出下三角阵和第1行元素  System.out.println();         }      }   }}34.判断上三角矩阵输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入1 个正整数 n (1≤n≤6)和n 阶方阵a中的元素,如果a是上三角矩阵, 输出"YES", 否则, 输出"NO"。(上三角矩阵,即主对角线以下的元素都为0, 主对角线为从矩阵的左上角至右下角的连线)import java.util.Scanner;public class Test60013{   public static void main(String []args){      int ri, repeat;      int a[][],i,j,n;      boolean flag;      Scanner in=new Scanner(System.in);      repeat=in.nextInt();      for(ri=1; ri<=repeat; ri++){         n=in.nextInt();         a=new int[n][n]         for (i=0;i<n;i++)  for (j=0;j<n;j++)       a[i][j]=in.nextInt();                  flag=true;         for(i=1;i<n;i++)  //上三角矩阵中值为0的元素位置:行1~n-1,列0~i-1  for(j=0;j<i;j++)  if(a[i][j]!=0) flag=false;//若有一个元素非0,则不是上三角矩阵 if(flag)  System.out.println("YES");         else  System.out.println("NO");      }   }}35.求矩阵每行元素之和输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入2 个正整数 m 和 n (1≤m, n),然后输入该m 行 n 列矩阵a中的元素,分别求出各行元素之和, 并存入一维数组row中, 再输出row.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];     //这里定义的时候row也是定义在行那里的!!!         for (i=0;i<m;i++)  for (j=0;j<n;j++)       a[i][j]=in.nextInt();                  for (i=0;i<m;i++)  for (j=0;j<n;j++)//表示的是那一个矩阵        row[i]+=a[i][j]; //计算数组a的第i+1行元素之和, 存入数组row的第i+1个元素for(i=0;i<m;i++)   System.out.println("sum of row "+i+" is "+row[i]);      }   }}字符串处理36.求字符串长度连续输入一批以 # 结束的多串字符(不包含空格)。。统计并输出每串字符的长度。输出使用:System.out.println(len);import java.util.Scanner;public class Test60021{   public static void main(String []args){      int len,count,i,k; //变量count,k未用到      char ch;      String str;      Scanner in=new Scanner(System.in);     //话说这里就是一个数组了么? str=in.next();  //对5月7日前建立的练习用in.nextLine();             len=0;   //保存当前字符串的长度//    count=0; //保存字符串个数,可以不写      for(i=0;i<str.length();i++) {      ch=str.charAt(i); //从字符串中逐个取出字符      if(ch=='#'){ //当前字符串结束了      System.out.println(len);//输出长度//     count++; //字符串增加1个,可以不写      len=0;  //新的字符串要开始了      }      else len++;  //当前字符串长度加1      }      //以上程序段可以换成以下的程序段://     String[] s=str.split("#");  //字符串数组//     for(i=0;i<s.length;i++) //System.out.println(s[i].length());   输出的是第i串字符的长度    }}37.统计大写辅音字母输入一个正整数n (0<n<10),做n次下列运算:输入一行字符串,统计并输出字符串中大写辅音字母的个数(大写辅音字母:除“A”,“E”,“I”,“O”,“U”以外的大写字母)。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.nextLine()).charAt(0)-'0'; //读取输入的第1行的第1个字符,转换成数字         for(i=1;i<=n;i++){  str=in.nextLine(); //读取输入的下一行    count=0;  //保存大写辅音字母的个数  for(j=0;j<str.length();j++){  ch=str.charAt(j); //从字符串中逐个取出字符  if((ch>='B'&&ch<='Z')&&(ch!='E'&&ch!='I'&&ch!='O'&&ch!='U'))//判断  //大写字母'B'~'Z'中去掉'E','I','O','U'  count++;    }    System.out.println(count);         }   }}38.查找字符先输入一个字符ch。然后输入一个正整数n (0<n<10),做n次下列运算:输入一行字符串,在字符串中查找该字符(ch),如果找到,则输出该字符在字符串中最后出现的位置(从0开始);否则输出“Not Found”。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); //读取输入的第1行的第1个字符,就是要查找的字符         n=(in.nextLine()).charAt(0)-'0'; //读取输入的第2行的第1个字符,转换成数字         for(i=1;i<=n;i++){  str=in.nextLine(); //读取输入的下一行    index=-1;  //先假设找到  for(j=0;j<str.length();j++)  if(str.charAt(j)==ch) index=j;  //从当前字符串中找字符ch,找到时记住它的位置,继续找下一个     //循环结束后,index中的值就是最后出现的位置  if(index>=0) System.out.println(index);  else System.out.println("Not Found");         }   }}//解法2:从字符串末尾开始找字符ch,第1次找到时记住它的位置,终止循环。   index=-1;  for(j=str.length()-1;j>=0;j--){  if(str.charAt(j)==ch)  {index=j;break; }  }39.字符串替换输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一行字符串,生成一个新的字符串,将原字符串中的大写字母用下面列出的对应大写字母替换, 其余字符不变, 输出新字符串. 原字母   对应字母    A ──→ Z    B ──→ Y    C ──→ X    D ──→ W       ……    X ──→ C    Y ──→ B    Z ──→ Aimport 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=(in.nextLine()).charAt(0)-'0';        for(ri=1; ri<=repeat; ri++){  str1=in.nextLine();    str2="";  //保存转换后的新字符串  for(i=0;i<str1.length();i++) {  ch=str1.charAt(i); //从字符串中逐个取出字符  if((ch>='A'&&ch<='Z'))  //对该字符进行转换 ch=(char)('Z'-ch+'A');  str2=str2+ch;   //转换后字符添加到结果中 }     System.out.println(str2);        }   }}字符串处理(二)40010  40031  40032  50003  50009  50010  60025说明:本次实验中的题目请采用字符串处理来实现。40.求整数的位数以及各位数之和。40010输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个整数,输出它的位数以及各位数之和。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();          n=Math.abs(n);String s=String.valueOf(n); //把整数n转换成字符串number=s.length(); //得到整数的位数sum=0;for(int i=0;i<number;i++){sum+=(s.charAt(i)-'0'); //求各位数字和}         System.out.println("number="+number+", sum="+sum);      }   }}41.统计单词(选做) 40031输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一行字符,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。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.nextLine()).charAt(0)-'0';     for(ri=1; ri<=repeat; ri++){        line=in.nextLine();        count=word=0; for(i=0;i<line.length();i++){c=line.charAt(i); //从字符串line中取出第i个字符,放入变量cif(c==32) word=0; //当前字符是空格,表示不是单词        else if(word==0){ //当前字符不是空格,同时word=0,表示新单词开始       word=1;         count++;       }}       System.out.println( count);     }  }}42.输出一个整数的各位数字(选做) 40032输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个整数,从高位开始逐位输出它的各位数字。输出语句:System.out.print(digit+" ");例:括号内是说明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();   n=Math.abs(n); String s=String.valueOf(n); //把整数n转换成字符串 for(int i=0;i<s.length();i++){ digit=s.charAt(i)-'0';  //从高位到低位依次得到一位数字 System.out.print(digit+" "); //输出该位数字,再加一个空格 }  System.out.println();        }    }}另一种编法:n=Math.abs(n); char[] cs=String.valueOf(n).toCharArray(); //把整数n转换成字符串后存入字符数组cs,cs的元素就是n的每位数字 for(int i=0;i<cs.length;i++) System.out.print(cs[i]+" "); //依次输出字符数组cs的各个元素43.统计一个整数中数字的个数 50003输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入1 个整数,统计并输出该数中2的个数。要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0)的返回值是3。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();    n=Math.abs(n);  count=countdigit(n,2);  System.out.println("count="+count);  }  }    static int countdigit(long number,int digit){//统计整数number中数字digit的个数  int c=0;  String s=String.valueOf(number); //把长整数number转换成字符串  //以下循环实现:依次取出number的每个数字与指定数字digit比较,若相等则个数加1   for(int i=0;i<s.length();i++)   if(s.charAt(i)-'0'==digit)c++;  return c;  }}44.将一个整数逆序输出 50009输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个整数,将它逆序输出。要求定义并调用函数reverse(number),它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321。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);  }  }  static long reverse(long number){//返回number的逆序数long a;int flag=1; //保存符号if(number<0) {flag=-1;number=-number;  //负数变成正数}String s1=String.valueOf(number);String s2="";  for(int i=0;i<s1.length();i++)  s2=s1.charAt(i)+s2; //字符串逆序  a=Long.parseLong(s2); //转换成数值  return flag*a;  //加上符号    }  }45.十进制转换二进制50010输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:输入1 个正整数n,将其转换为二进制后输出。要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。例如,调用dectobin(10),输出1010。输出语句:System.out.print(t);   //t为某位二进制数import java.util.Scanner;public class Test50010{  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();  }}    static void dectobin(int n){    int t;  //保存某位二进制  String s=""; //保存二进制数,这是字符串  do {  t=n%2;  //获得除2后的余数  s=t+s;  //拼接  n=n/2;  //获得除2后的商  }while(n>0);  System.out.print(s); //本方法无返回值,需要在方法体中输出结果  }}46.十六进制转换十进制 60025输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一行字符串,对字符串做如下处理:滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。import java.util.Scanner;public class Test60025{    public static void main(String []args){        int ri, repeat, i,number;        char ch;        String str;        Scanner in=new Scanner(System.in);        repeat=in.nextInt();        for(ri=1; ri<=repeat; ri++){  str=in.next();    number=0;  for(i=0;i<str.length();i++){ //从左往右依次取出字符  ch=str.charAt(i);  if(ch>='0'&&ch<='9') //合法字符转换成相应数值后计算十进制数  number=number*16+(ch-'0');  else if(ch>='A'&&ch<='F')  number=number*16+(ch-'A'+10);  else if(ch>='a'&&ch<='f')  number=number*16+(ch-'a'+10);  }//说明:要滤去所有的非十六进制字符,实际上只要对这些字符不进行任何操作就行了(当它不存在!)。  System.out.println(number);        }   }}或:  number=0;  str=str.toLowerCase(); //所有字母转换成小写字母  for(i=0;i<str.length();i++){ //从左往右依次取出字符  ch=str.charAt(i);  if(ch>='0'&&ch<='9') //合法字符转换成相应数值后计算十进制数  number=number*16+(ch-'0');  else if(ch>='a'&&ch<='f')  number=number*16+(ch-'a'+10);  }或:  number=0;  str=str.toUpperCase(); //所有字母转换成大写字母  for(i=0;i<str.length();i++){ //从左往右依次取出字符  ch=str.charAt(i);  if(ch>='0'&&ch<='9') //合法字符转换成相应数值后计算十进制数  number=number*16+(ch-'0');  else if(ch>='A'&&ch<='F')  number=number*16+(ch-'A'+10);  }实验13 数组作为方法的参数(4-6题) 40023  40033(选做)  60019(选做)  60030  60031  6003247.统计素数并求和。 40023输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数以及这些素数的和。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=sum=0;       for(k=m;k<=n;k++){        for(i=2;i<=k-1;i++)if(k%i==0)break;if(i==k){count++;sum+=k;}       }        System.out.println("count="+count+", sum="+sum);      }   }}另一种编法:       count=sum=0;       boolean flag;     for(k=m;k<=n;k++) {       if(k==1)flag=false;  //1不是素数       else flag=true;       for(i=2;i<=k-1;i++) {       if(k%i==0){flag=false; break;}       }       if(flag){sum+=i; count++;}       }48.简单计算器(选做) 40033输入一个正整数repeat (0<repeat<10),做repeat次下列运算:程序模拟简单运算器的工作:输入一个算式,遇等号"="说明输入结束,输出结果。假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。import java.util.Scanner;public class T40033{  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;while(operator!='=') {  op2=in.nextInt();switch(operator) {case '+': res+=op2;break;case '-': res-=op2;break;case '*': res*=op2;break;case '/': res/=op2;break;}operator=(in.next()).charAt(0);}     System.out.println(res);   }  }}49.找鞍点(选做)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入 1 个正整数 n和n 阶方阵a中的元素,如果找到a 的鞍点(鞍点的元素值在该行上最大, 在该列上最小), 就输出它的下标, 否则,输出"NO"(设a最多有1个鞍点)。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();         a=new int[n][n];         for (i=0;i<n;i++)  for (j=0;j<n;j++)       a[i][j]=in.nextInt();                  flag=true; row=0; col=0;//不写这些,就通不过编译         for(i=0;i<n;i++){         //先在第i行中找出该行的最大值  row=i; //row保存最大值的行坐标  col=0; //col保存最大值的列坐标,假设第i行第0列元素为最大  for(j=1;j<n;j++)  if(a[row][j]>a[row][col]) col=j;    //再判断a[row][col]是否是第col列中的最小值          flag=true;   for(k=0;k<n;k++)  if(a[k][col]<a[row][col]){  flag=false;  break; //若有比a[row][col]小的,可知它不是鞍点,可结束循环  }  if(flag)break; //找到1个鞍点后就不用再找了}         if(flag)  System.out.println("a["+row+"]["+col+"]="+a[row][col]);         else   System.out.println("NO");      }   }}50.编写排序函数(方法) 60030输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n,再输入n个整数,将它们从小到大排序后输出。要求将排序编写为一个sort()方法。import java.util.Scanner;public class Test60030{   public static void main(String []args){      int ri, repeat;      int i, 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<n; i++) a[i]=in.nextInt();         sort(a);         for(i=0; i<n; i++) System.out.print(a[i]+" ");         System.out.println();      }   }  //说明:数组作参数时,传递的是地址,形参数组和实参数组共用同一块内存,//方法sort()中对形参数组b排序,实际上就是对实参数组a排序,//所以不需要返回值。   static void sort(int b[]){   int i,j,k,temp;   for(i=0;i<b.length-1;i++) { //选择法递增排序   k=i;   for(j=i+1;j<b.length;j++)   if(b[k]>b[j]) k=j;   if(i!=k){   temp=b[i];b[i]=b[k]; b[k]=temp;   }   }   }}51.编写矩阵加法和输出函数(方法) 60031输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入 1 个正整数 n(1≤n≤6), 再读入2个 n 阶方阵 a和b , 计算矩阵的和。要求:(1)编写计算矩阵和的函数(方法)add()。(2)编写输出矩阵的方法prt()。矩阵元素输出使用:System.out.print(a[i][j]+"");import java.util.Scanner;public class Test60031{   public static void main(String []args){      int ri, repeat;      int a[][],b[][],c[][],i,j,n;      Scanner in=new Scanner(System.in);      repeat=in.nextInt();      for(ri=1; ri<=repeat; ri++){         n=in.nextInt();         a=new int[n][n]; b=new int[n][n];c=new int[n][n];         for(i=0; i<n; i++) for(j=0;j<n;j++)    a[i][j]=in.nextInt();         for(i=0; i<n; i++) for(j=0;j<n;j++)    b[i][j]=in.nextInt();         add(a,b,c);         prt("A矩阵",a);         prt("B矩阵",b);         prt("A+B矩阵",c);      }   }      static void add(int x[][],int y[][],int z[][]){   for(int i=0;i<x.length;i++) {   for(int j=0;j<x[i].length;j++) {   z[i][j]=x[i][j]+y[i][j];   }   }   }        static void prt(String s,int a[][]){  System.out.println(s);       for(int i=0; i<a.length; i++){for(int j=0;j<a[i].length;j++)System.out.print(a[i][j]+"");       System.out.println();        }   }}52. 编写函数求矩阵最大值  60032输入一个正整数repeat (0<repeat<10),做repeat次下列运算:读入 2 个正整数 m和n(1≤m,n≤6), 再读入1个 m×n 阶矩阵 a , 计算该矩阵元素的最大值。要求:编写max(),返回矩阵元素的最大值。import java.util.Scanner;public class Test60032{   public static void main(String []args){      int ri, repeat;      int a[][],i,j,m,n;      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];         for(i=0; i<m; i++) for(j=0;j<n;j++)    a[i][j]=in.nextInt();         System.out.println("max="+max(a));      }   }static int max(int b[][]){int max=b[0][0];   先设第一个元素是最大的for(int i=0;i<b.length;i++)for(int j=0;j<b[i].length;j++)if(max<b[i][j]) max=b[i][j];return max;}}程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10)并换行,然后做repeat次下列运算:输入一行字符,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。说明:1)使用c=line.charAt(i);表示从line中获得第i个字符,i从0开始。2)line中的字符个数为:line.length()例:括号内是说明输入2   Reold building  room   123 Programming is fun输出43 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.nextLine()).charAt(0)-'0';   //输入repeat     for(ri=1; ri<=repeat; ri++){        line=in.nextLine();       //输入一行字符               System.out.println( count);     }  }}程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个整数,从高位开始逐位输出它的各位数字。输出语句:System.out.print(digit+" ");例:括号内是说明输入3   123456-6008输出1 2 3 4 5 66 0 08import 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();    System.out.println();        }    }}import java.util.Scanner;public class a { 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;   }   temp = n;   digit = 0;   while(temp>0){    digit++;    temp /= 10;   }   while(digit>0){    pow = (long) Math.pow(10, digit-1);    System.out.print(n/pow%10+" ");    digit--;   }    System.out.println();  } }}程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:程序模拟简单运算器的工作:输入一个算式,遇等号"="说明输入结束,输出结果。假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。例:括号内是说明输入2   15 + 2 / 3 =   1 + 2 * 10 - 10 / 2 =    输出510 import java.util.Scanner;public class T40033{  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);     System.out.println(res);   }  }}import java.util.Scanner;public class a{  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);         while(operator!='=')         {op2=in.nextInt();         switch(operator){         case '+':op1+=op2;break;         case '-':op1-=op2;break;         case '*':op1*=op2;break;         case '/':op1/=op2;break;         }       operator=(in.next()).charAt(0);        }         res=op1; System.out.println(res);   }  }}输出m~n之间的所有闰年程序填空,不要改变与输入输出有关的语句。输入一个repeat(1<repeat<10)),做repeat次下列运算:输入正整数m和n(1900<=m<=n<=2100),分别代表年份的起止值,输出该范围内所有的闰年。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。输出使用语句 System.out.println(year);输入输出示例:括号内是说明输入:22000 20172030 2040输出20002004200820122016203220362040import java.util.Scanner;public class T{   public static void main(String []args){      int year,m,n,repeat,ri;      Scanner in=new Scanner(System.in);      repeat=in.nextInt();      for(ri=1;ri<=repeat;ri++){         m=in.nextInt();         n=in.nextInt();                }   }}import java.util.Scanner;public class a{   public static void main(String []args){      int year,m,n,repeat,ri;      Scanner in=new Scanner(System.in);      repeat=in.nextInt();      for(ri=1;ri<=repeat;ri++){         m=in.nextInt();         n=in.nextInt();         for(year=m;year<=n;year++){         if((year%4==0&&year%100!=0)||year%400==0){         System.out.println(year);          }}       }      }   }import java.util.Scanner;public class Test30009{public static void main(String args[]){int repeat, ri;int a,b,c,d;double x1,x2;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri = 1; ri <= repeat; ri++){a=in.nextInt();b=in.nextInt();c=in.nextInt();if(a==0&&b==0&&c==0)System.out.println("a=b=c=0,meaningless");else if(a==0&&b==0&&c!=0)System.out.println("a=b=0,c!=0,error"); else if(a==0)System.out.println("x="+Math.round(-(float)c/b*100)/100.0); else //满足一元二次方程a*x*x+b*x+c=0条件{d=b*b-4*a*c;if(d>=0)//前面三种情况排除了就是最后一种情况,所以就不用写出来了!{ x1=(-b+Math.sqrt(d))/(2*a);x2=(-b-Math.sqrt(d))/(2*a);System.out.println("x1="+Math.round(x1*100)/100.0); System.out.println("x2="+Math.round(x2*100)/100.0); }else{System.out.println("x1="+Math.round((float)(-b)/(2*a)*100)/100.0+"+"+Math.round(Math.sqrt(-d)/(2*a)*100)/100.0+"i");System.out.println("x2="+Math.round((float)(-b)/(2*a)*100)/100.0+"-"+Math.round(Math.sqrt(-d)/(2*a)*100)/100.0+"i");} }}}}import java.util.Scanner;public class Test30010{     public static void main(String args[]){     int repeat, ri;     char ch;     Scanner in=new Scanner(System.in);     repeat=in.nextInt();     for(ri = 1; ri <= repeat; ri++){     ch=(in.next()).charAt(0);             switch(ch)     {注意。。。这里的A是要加单引号的!!!     case 'A':System.out.println("90-100");break;//     case 'B':System.out.println("80-89");break;     case 'C':System.out.println("70-79");break;     case 'D':System.out.println("60-69");break;     case 'E':System.out.println("0-59");break;     default:System.out.println("Invalid input");    } }   }}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/264142.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号