您的位置:首页 > 编程语言 > Java开发

Java基础——【习题一】流程控制练习题

2017-08-14 23:00 961 查看

【习题一】流程控制练习题

1、要求用户输入一个年份,判断并输出该年份是闰年还是平年

提示:判断闰年的条件为:(year%4==0&&year%100!=0) ||(year%400==0)

考察点:闰年的判断条件、条件分支流程(if else)

package t1;
import java.util.Scanner;
public class TestYear{
public static void main (String []args){
System.out.print("请输入年份:");
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
//读入数据
if((i%4==0&&i%100!=0)||(i%400==0)){
//布尔表达式表示年份模4=0且模100不等于0是闰年或者年份模400等于0是闰年
System.out.println(i+"是闰年!");
//打印结果 i是闰年!
}else{

System.out.println(i+"是平年!");
//否则打印结果 i是平年!
}

}

/**
如果是整百年(如2000,1700)要被400整除才是闰年,否则为平年(2000闰年,1700平年);如果是非整百年(如2008,2009),只要被4整除就是闰年,不能被4整除为平年(2008闰年,2009平年)。
闰年的2月有29天,平年的2月有28天。
闰年一年有366天,平年一年又365天。后边有一个 0 或者没有0的年份除以四,如果除尽了 ,就是闰年,后边有两个或者三个0的,都除以四百,能除尽了是闰年
比如1600年,就是除以四百,1900年也是除以四百,但是1600能除尽,1900不能除尽,所以1600是闰年。

*/

}


2、要求用户输入两个整数,判断第一个整数是否是第二个整数的倍数。

提示:使用运算符%

    考察点:模%、if语句

package t1;
import java.util.Scanner;
public class TestModel{
public static void main (String []args){
Scanner sc=new Scanner(System.in);
//读入数据
System.out.print("请输入第一个整数:");
int i=sc.nextInt();
//输入第一个整数i
System.out.print("请输入第二个整数:");
int j=sc.nextInt();
//输入第二个整数j
if(i%j==0){
//判断i Mol j 是否等于0,等于0,输出i是j的i/j倍!
System.out.println(i+"是"+j+"的"+i/j+"倍!");
}else{
//否则输出i不是j的倍数!
System.out.println(i+"不是"+j+"的"+"倍数!");
}
}

}



3、要求用户输入一个年份和一个月份,判断(要求使用嵌套的if…else和switch分别判断一次)该年该月有多少天。

考察点:if else、switch、闰年的判断条件

package t1;
import java.util.Scanner;
public class TestDay{
public static void main (String []args){
Scanner sc=new Scanner(System.in);
//读入数据
System.out.print("请输入年份:");
int i=sc.nextInt();
//输入年份i
System.out.print("请输入月份:");
int j=sc.nextInt();
//输入月份j
if((i%4==0&&i%100!=0)||(i%400==0)){
if(j==2){
System.out.println(i+"年"+j+"月有29天!");
}else if(j==4||j==6||j==9||j==11){
System.out.println(i+"年"+j+"月有30天!");
}else{
System.out.println(i+"年"+j+"月有31天!");
}

}else{
if(j==2){
System.out.println(i+"年"+j+"月有28天!");
}else if(j==4||j==6||j==9||j==11){
System.out.println(i+"年"+j+"月有30天!");
}else{
System.out.println(i+"年"+j+"月有31天!");
}

}
System.out.print("请输入年份:");
int i1=sc.nextInt();
//输入年份i1
System.out.print("请输入月份:");
int j1=sc.nextInt();
//输入月份j1
switch(j1){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:System.out.println(i1+"年"+j1+"月有31天!");break;
case 4:
case 6:
case 9:
case 11:System.out.println(i1+"年"+j1+"月有30天!");break;
case 2:if((i%4==0&&i%100!=0)||(i%400==0)){
System.out.println(i1+"年"+j1+"月有29天!");
}else{
System.out.println(i1+"年"+j1+"月有28天!");
}
break;
default:System.out.println("输入有误!");break;

}

}
/**
1、3、5、7、8、10、12,31天永不差
4、6、9、11,30天
2月(闰年29天,平年28天计算)
一年365天
闰年一年366天
*/

}



4、要求用户输入一个学生的分数(1~100),使用switch结构判断该分数属于什么等级(A、B、C、D、F)。

提示:switch(score/10)

   考察点:switch语句、int

package t1;
import java.util.Scanner;
public class TestScore{
public static void main(String []args){
System.out.print("请输入你的分数(0~100):");
Scanner sc=new Scanner(System.in);//读入数据
int i=sc.nextInt();
switch(i/10){//整型变量/10=整数
case 10:if(i>100){
System.out.println("你的成绩输入有误!");
}break;
case 9:System.out.println("你的成绩是A,优秀!");break;
case 8:System.out.println("你的成绩是B,良好!");break;
case 7:System.out.println("你的成绩是C,良!");break;
case 6:System.out.println("你的成绩是D,及格!");break;
case 5:
case 4:System.out.println("你的成绩是E,加油啊!");break;
case 3:
case 2:
case 1:
case 0:System.out.println("你的成绩是F,该努力了!");break;
default:System.out.println("你的成绩输入有误!");break;

}
}

}



5、使用while循环求1~100以内所有奇数的和。[/b]

   考察点:while语句

package t1;
public class TestWhile{
public static void main(String []args){
int i,sum; //定义两个整型变量i,sum
i=1; //初始化变量i,初始值为1
sum=0; //初始化变量sum,初始值为0
while(i<100){
sum=sum+i; //sum=1+3+5+……99
i=i+2; //保证加数均为奇数

}
System.out.println("1~100所有奇数的和为:"+sum);

}

}



6、使用while循环求式子2+22+222+2222+22222的和。p=p*10+2;

   考察点:while语句

package t1;
public class TestWhile2{
public static void main(String []args){
int i,sum;//定义变量i,sum
i=2;//初始化变量i
sum=0;//初始化变量sum
while(i<22222){
sum=sum+i*10+2;
i=i*10+2;
}
System.out.println(sum);

}

}



7、请编程验证一下“角谷猜想”:对任意的自然数,若是奇数,就对它乘以3加1;若是偶数就对它除以2;这样得到一个新数,再按上述奇数、偶数的计算规则进行计算,一直进行下去,最终将得到1。

如对自然数11,按上述规则依次得到34、17、52、26、13、40、20、10、5、16、8、4、2、1。

   
要求用户输入一个自然数(正整数),然后编程输出依次变换最终得到1的过程。


提示:对自然数n

 
do{

 
if(){n=n*3+1}else{}

  }while(n!=1);

考察点:do { }while( );语句

package t1;
import java.util.Scanner;
public class TestDoWhile{//角谷猜想
public static void main (String []args){
Scanner sc=new Scanner(System.in);
//读入数据
System.out.print("请输入一个自然数:");
int i=sc.nextInt();
do{
if(i%2==1){
i=i*3+1;
}else{
i=i/2;
}
System.out.print(i+"、");

}while(i!=1);

}
}



 


8、判断并输出500以内既能够被3整除又能够被6整除的整数。

考察点:for循环、if语句

package t1;
public class Test10{
public static void main(String []args){
for(int i=1;i<500;i++){ //for循环1~499
if((i%3==0)&&(i%6==0)){ //满足条件
System.out.print(i+" ");
}

}
}

}
 


9、使用for循环的嵌套编程输出如下图形:

*                  *

***              *** 

*****          *****   

*******      *******

*********  *********

考察点:for循环的嵌套

package t1;
public class Test11{
public static void main(String []args){
int n = 10 ;
for(int i=1;i<=n;i++){
//第一次循环
for(int j=1;j<=i*2-1;j++){
System.out.printf("*");
}
//第二次循环
for(int j=1;j<=(n-i)*4+1;j++){
System.out.print(" ");
}
//第三次循环
for(int j=1;j<=i*2-1;j++){
System.out.print("*");
}

System.out.println();
}
}
}



10、使用for循环的嵌套编程输出如下图形:

    *

   ***

  *****

 *******

*********

 *******

  *****

   ***

    *

提示:可把图形分为上下两部分分别输出

考察点:for循环的嵌套

package t1;
public class Test12{
public static void main(String [] args){//分上下两部分,每部分分块打印图形

//上部分
int n = 5 ;//图形行数
for(int i=1;i<=n;i++){
//第一次循环,打印三角
for(int j=1;j<=n-i;j++){
System.out.print(" ");
}
//第二次循环,打印中间三角
for(int j=1;j<=i*2-1;j++){
System.out.print("*");
}
//第三次循环和第一次循环一样
for(int j=1;j<=n-i;j++){
System.out.print(" ");
}

System.out.println();
}
//下部分
int m = 5;
for(int i=1;i<=m;i++){
//第一次循环
for(int j=1;j<=i;j++){
System.out.print(" ");
}
//第二次循环
for(int j=1;j<=2*(m-i)-1;j++){
System.out.print("*");
}
//第三次循环
for(int j=1;j<=i;j++){
System.out.print(" ");
}
System.out.println();//换行
}
}
}



11、搬砖问题:36块砖,36人搬,男人搬4块,女人搬3块,两个小孩抬1块。

要求一次搬完,问需要男人、女人、小孩各几人?

考察点:for循环的嵌套

package t1;
public class Test13{
public static void main(String []args){//for循环嵌套
for(int n=0;n<=9;n++){ //假设全部是男人,需要9人
for(int m=0;m<=12;m++){ //假设全部是女人,需要12人
for(int x=0;x<=36;x+=2){//假设全部是小孩,最多36个,两个小孩抬一块砖,一次加二
if((4*n+3*m+x/2==36)&&(n+m+x==36)){//找到关系式36块砖,36个人搬
System.out.println("男人:"+n+"人,女人:"+m+"人,小孩:"+x+"个。");

}
}
}
}

}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息