Java基礎——【習題一】流程控制練習題
【習題一】流程控制練習題
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以內所有奇數的和。
考察點: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+"個。");
}
}
}
}
}
}