编程练习题(一)——Java编程学习(一)流程控制

习题1:输出1-100内的所有偶数

习题解析:
(1)从题目可以看出,需变动的数字范围为1-100的整数值。
(2)从(1)可以设一个整数为变量i;i初始值为1,i最大值为100,可通过对i的后缀自增法作为更新语句
(3)使用i%2==0判定是否为偶数
             public class LoopPractice{
                 public static void main(String[] args){
             	    //输出1-100内的所有偶数
             		for(int i=1;i<=100;i++){
             			if(i%2==0){
             				System.out.println(i);
             			}
            		}		
            	}
             }

习题2:求整数1~100的累加值,跳过所有个位为3的数。

习题解析:
(1)从题目可以看出,需变动的数字范围为1-100的整数值。
(2)从(1)可以设一个整数为变量i;i初始值为1,i最大值为100,可通过对i的后缀自增法作为更新语句
(3)使用i%10!=3判定是否是个位为3的数
             public class LoopPractice{
                 public static void main(String[] args){
             	     //整数1~100的累加值,跳过所有个位为3的数
             	     int total=0;
             	     for(int i=1;i<=100;i++){
             	         if(i%10!=3){
             	             total+=i;
             	         }
             	     }	
             	     System.out.println(total);  
            	}
             }

习题3:循环输出以下结果:

2*5=10 
4*10=40 
3.6*15=90 
…… 
?*100=?
习题解析:
(1)从题目可以看出,相乘的第一个数为2的倍数,第二个数为5的倍数。
(2)从循环输出的最后一个结果可以看出,循环的次数为20次,可以设一个整数为变量i;i初始值为1,i最大值为20,可通过对i的后缀自增法作为更新语句。
             public class LoopPractice{
                 public static void main(String[] args){
             	     for(int i=1;i<21;i++){
             	         int operand1 =i*2;
             	         int operand2 =i*5;
             	         int result=operand1*operand2;
             	         System.out.println(operand1+"*"+operand2+"="+result);
             	     }   
                 }
             }

习题4:一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13 米)?

习题解析:
(1)从题目可以看出,两个常量值单位不一致,为了方便计算,我统一换成了以mm为标准单位。
(2)从题目可以看出,无法获得循环次数,因此我采用了while循环。
             public class LoopPractice{
                 public static void main(String[] args){
             	     //一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
             	     int i=0;//循环次数
             	     double total=0.08;//初始值
             	     while(total<8848130.00){
             	         total*=2;
             	         i++;
             	     }	
             	     System.out.println(i);
                 }
             }

习题5:接收用户输入的一个整数,判断它是奇数还是偶数。

习题解析:
(1)此题只需设置一个整数变量用于接收用户输入的整数
(2)判断接收的整数是奇数还是偶数
             import java.util.Scanner;
             public class GetUserInput{
                 public static void main(String[] args){
                     Scanner s = new Scanner(System.in);//System.in程序输入;System.out程序输出
                     int number=s.nextInt();//接收用户输入的整数数据
                     if(number%2==0){
                         System.out.println("输入的数为偶数!");
                     }else{
                         System.out.println("输入的数为奇数!");
                     }
                 }
             }

习题6:使用循环语句计算20的阶乘。20!

习题解析:
见代码解析。
             public class LoopPractice{
                 public static void main(String[] args){
             	     long result=1;
             	     for(int i=2;i<=20;i++){
             	         result *=i; //result=1*2*3*....*20
             	     }
             	     System.out.println(result);
                 }
             }

习题7:使用循环语句计算1!+2!+3!+ … + 20!

习题解析:
(1)见代码解析。
             public class LoopPractice{
                 public static void main(String[] args){
             	     long total=0;
             	     for(int j=1;j<=20;j++){ //j = 1 2 3 ... 20
             	         long result=1;
             	         for(int i=1;i<=j;i++){//i! 1 2 3 ...j
             	             result *=i;
             	         }
             	         total +=result;
             	     }
             	     System.out.println(total);
                 }
             }

习题8:接收三个整数abc,对这三个整数按照从小到大的顺序进行排列

习题解析:
(1)此题只需设置三个整数变量abc,用于接收用户输入的整数
(2) 顺序排列: 定义临时变量进行交换处理
             import java.util.Scanner;
             public class GetUserInput{
                 public static void main(String[] args){
                     Scanner s = new Scanner(System.in);//System.in程序输入;System.out程序输出
                     int a,b,c;
                     System.out.println("请输入第一个整数:");
                     a=s.nextInt();//接收用户输入的整数数据
                     System.out.println("请输入第二个整数:");
                     b=s.nextInt();
                     System.out.println("请输入第三个整数:");
                     c=s.nextInt();
                     if(a>b){
                         int temp=a; //进行a、b值的交换处理
                         a=b;
                         b=a;
                     }
                     if(b>c){
                         int temp=b; //进行b、c值的交换处理
                         b=c;
                         c=b;
                     }
                     //因为b、c的值可能进行了交换,所以需再次比较a跟b的大小
                     if(a

习题9:让用户输入一个字符,判断他是小写字母还是大写字母,如果是小写字母的话,就转换成大写字母输出。

习题解析:
(1)此题只需设置一个整数变量用于接收用户输入的整数
(2) 判断是小写字母还是大写字母: 因为所有字符的字母都是int类型。小写字母为97到122;大写字母为65到90。
(3) 大小写字母转换: 同一字母的大小写恒定差为32。
             import java.util.Scanner;
             public class GetUserInput{
                 public static void main(String[] args){
                     Scanner s = new Scanner(System.in);//System.in程序输入;System.out程序输出
                     System.out.println("请输入一个字符:");
                     String str=s.next();//接收用户输入的字符串
                     char c=str.charAt(0);
                     //所有字符的字母都是int类型。97~122都是小写字母;65~90为大写字母
                     if(c>=97 && c<=122){
                         c=(char)(c-32);
                     }
                     System.out.println(c);
                 }
             }

习题10:编写程序,给定一个学生成绩,给出相应等级:

90~100 优秀
80~89 良好
70~79 中等
60~69 及格
0~59 不及格

习题解析:
(1)此题只需设置一个整数变量用于接收给定的学生成绩
             public class LoopPractice{
                 public static void main(String[] args){
             	     int score=s.nextInt();//接收给定的学生成绩
             	     if(score>=90&&score<=100){
             	         System.out.println("优秀");
             	     }else if(score>=80&&score<=89){
             	         System.out.println("良好");
             	     }else if(score>=70&&score<=79){
             	         System.out.println("中等");
             	     }else if(score>=60&&score<=69){
             	         System.out.println("及格");
             	     }else if(score>=0&&score<=59){
             	         System.out.println("不及格");
             	     }else{
             	         System.out.println("成绩输入不正确!");
             	     }
                 }
             }

习题11:用 while 循环,计算 1~200 之间所有 3 的倍数之和。

习题解析:
         public class LoopPractice{
             public static void main(String[] args){
                 //用 while 循环,计算 1~200 之间所有 3 的倍数之和。
             	 int i=3;
             	 int total=0;
             	 while(i<=200){
             	     total +=i;
             	     i+=3;
             	 }
             	 System.out.println(total);
             }
         }

习题12:编写程序,输出 200~500 之间的所有素数。

习题解析:
(1)素数为不能被2到(数本身减一的数)内的任意数整除的数。
             public class LoopPractice{
                 public static void main(String[] args){
             	     //200~500之间的所有整数
             	     for(int num=200;num<=500;num++){
             	         boolean isSu= true;//默认是素数
             	         for(int i=2;i<=num-1;i++){			
             	             if(num%i==0){
             	                 isSu = false;
             	             }
             	         }
             	         if(isSu){
             	             System.out.println(num);
             	         }
             	     }
                 }
             }

习题13:编写程序解决“百钱买百鸡”问题。公鸡五钱一只,母鸡三钱一只,小鸡一钱三只,现有百钱欲买百鸡,共有多少种买法?

习题解析:
(1)假设公鸡,母鸡,小鸡分别买x、y、z只。
(2)假设公鸡,母鸡分别花了gj、mj元。
             public class LoopPractice{
                 public static void main(String[] args){
             	     int x,y,z;//公鸡,母鸡,小鸡分别买x、y、z只
             	     int gj,mj;//公鸡,母鸡分别花了gj、mj元
             	     for(x=0;x<=20;x++){
             	         gj=x*5;
             	         for(y=0;y<=(100-gj)/3;y++){
             	             mj=y*3;
             	             z=(100-gj-mj)*3;
             	             int numTotal=x+y+z;
             	             if(numTotal==100){
             	                 System.out.println("公鸡买了"+x+"只,母鸡买了"+y+"只,小鸡买了"+z+"只.");
             	             }
             	         }
             	     }
                 }
             }

习题14:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

习题解析:
(1)从题目可以看出,水仙花数的范围为100到999。
(2)通过求余取得个位数;通过除十再求余取得十位数;通过除100取得百位数
             public class LoopPractice{
                 public static void main(String[] args){
             	     for(int i=100;i<1000;i++){
             	         int ge = i%10;//取得个位数
             	         int shi = (i/10)%10;//取得十位数
             	         int bai = i/100;//取得百位数
             	         int total=ge*ge*ge+shi*shi*shi+bai*bai*bai;
             	         if(total==i){
			            	System.out.println(total);
             	         }
             	     }
                 }
             }

习题15:猜数字,随机生成一个数字,让用户猜大小,然后提示猜大了或者猜小了,猜不中让用户一直猜,直到用户猜中,游戏结束,就不需要继续猜了。

习题解析:
(1)通过Math.random()随机生成一个数字。
(2)此题需设置一个整数变量用于接收用户输入的整数
             public class LoopPractice{
                 public static void main(String[] args){
             	     Scanner s = new Scanner(System.in);//System.in程序输入;System.out程序输出
             	     int x=(int)(Math.random()*1000);//从0-1000中随机选择一个数
             	     System.out.println("——————猜数字——————");
             	     while(true){
             	         int number=s.nextInt();//用户输入数字
             	         if(number==x){
             	             System.out.println("恭喜你猜中了!");
             	             break;//用户猜中,游戏结束
             	         }else if(number

你可能感兴趣的:(java,练习题)