# 流程式控制制練習題 # 一、編程題 1、實現一個課程名稱和課程代號的轉換器:輸入下表中的課程代號,輸出課程的名稱。用戶可以迴圈進行輸入,如果輸入0就退出系統。(**使用****switch +while****迴圈實現**) **課程名稱和課程代號對照表** | **課程名稱** | **課程代碼* ...
# 流程式控制制練習題
# 一、編程題
1、實現一個課程名稱和課程代號的轉換器:輸入下表中的課程代號,輸出課程的名稱。用戶可以迴圈進行輸入,如果輸入0就退出系統。(**使用****switch +while****迴圈實現**)
**課程名稱和課程代號對照表**
| **課程名稱** | **課程代碼** |
| ---------------------------- | ------------ |
| 使用Java語言理解程式邏輯 | **1** |
| 使用HTML語言開發商業站點 | **2** |
| 使用SQL Server管理和查詢數據 | **3** |
| 使用C#開發資料庫應用程式 | **4** |
~~~java
public class Demo1 {
public static void main(String[] args) {
//1.創建掃描儀對象
Scanner input = new Scanner(System.in);
//2.迴圈讓客戶輸入課程編號
tag:while(true){
//3.接收客戶輸入的課程代號
System.out.println("請輸入課程代號:");
int number = input.nextInt();
switch (number){
case 1 :
System.out.println("使用Java語言理解程式邏輯");
break;
case 2 :
System.out.println("使用HTML語言開發商業站點");
break;
case 3 :
System.out.println("使用SQL Server管理和查詢數據");
break;
case 4 :
System.out.println("使用C#開發資料庫應用程式");
break;
case 0 :
break tag;
}
}
}
}
~~~
2、本金10000元存入銀行,年利率是千分之三。每過1年,將本金和利息相加作為新的本金。計算5年後,獲得的本金是多少?(**使用for迴圈實現**)
~~~Java
public class Demo2 {
public static void main(String[] args) {
double benJin = 10000;
for(int i=1;i<=5;i++){
benJin=benJin+benJin*0.003;
}
System.out.println(benJin);
}
}
~~~
3、求整數1~100的累加值,但要求跳過所有個位為3的數。(**使用for迴圈實現**)
~~~Java
/**
* 3、求整數1~100的累加值,但要求跳過所有個位為3的數。(使用for迴圈實現)
*/
public class Demo3 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <=100 ; i++) {
if(i%10==3){
continue;
}
sum+=i;
}
System.out.println(sum);
}
}
~~~
4、輸入一個正整數N,判斷該數是不是質數,如果是質數輸出“N是一個質數”,否則輸出“N不是質數”。提示:質數的含義:除了1和它本身不能被任何數整除。(**使用for迴圈實現**)
~~~java
public class Demo4 {
public static void main(String[] args) {
//1.創建掃描儀對象
Scanner scanner = new Scanner(System.in);
while (true) {
//2.請輸入一個正整數
System.out.println("請輸入一個正整數");
int number = scanner.nextInt();
if(number==1){
System.out.println(number+"不是質數");
} else if(number==2){
System.out.println(number+"是質數");
} else {
//預設number是質數
boolean tag = true;
//將number 除以2到number之間的數,不包含number如果有一次整除,那麼number不是質數
for(int i=2;i<number;i++){
if(number%i==0){
tag=false;
}
}
if(tag){
System.out.println(number+"是質數");
} else {
System.out.println(number+"不是質數");
}
}
}
}
}
~~~
5、輸入一個正整數,將該數的各位左右反轉輸出,即輸入123,輸出321。(**使用while迴圈實現**)
~~~Java
public class Demo5 {
public static void main(String[] args) {
//創建掃描儀對象
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入一個正整數");
int number = scanner.nextInt();
// 反轉數字
while(number>0){
int a = number%10;
System.out.print(a);
number = number/10;
}
}
}
~~~
6、列印出100~999之間的所有“水仙花數”。所謂“水仙花數”,是指一個3位數,其各位數字立方和等於該數本身。例如:153是一個“水仙花數”,因為153=13+53+33。
~~~java
public class Demo6 {
public static void main(String[] args) {
for (int i = 100; i <=999 ; i++) {
int bai = i/100;
int shi = i/10%10;
int ge = i%10;
if(i==bai*bai*bai+shi*shi*shi+ge*ge*ge){
System.out.println(i+"是一個水仙花數");
}
}
}
}
~~~
7、幸運猜猜猜:游戲隨機給出一個0~99(包括0和99)的數字,然後讓你猜是什麼數字。你可以隨便猜一個數字,游戲會提示太大還是太小,從而縮小結果範圍。經過幾次猜測與提示後,最終推出答案。在游戲過程中,記錄你最終猜對時所需要的次數,游戲結束後公佈結果。
積分對照表
| **次數** | **結果** |
| -------- | -------------------------------------- |
| 1 | 你太有才了! |
| 2~6 | 這麼快就猜出來了,很聰明麽! |
| 大於7 | 猜了半天才猜出來,小同志,尚需努力啊! |
猜測次數最多20次。
提示:
(1) 產生0~99之間的隨機數字:
int number = (int)(Math.random()*100)
(2) 使用for迴圈結構,其中迴圈計數器counter同時也記錄你猜測的次數
(3) 計算積分可以使用switch結構
~~~java
public class Demo7 {
public static void main(String[] args) {
//創建掃描儀對象
Scanner input = new Scanner(System.in);
//獲得本次要猜的隨機數
int number = (int)(Math.random()*100);
System.out.println("number:"+number);
//猜數的計數器
int count = 0;
//記錄是否猜數成功
boolean tag = true;
while(true){
//接收客戶猜的數
System.out.println("猜猜看吧");
int n = input.nextInt();
//記錄猜數次數
count++;
//判斷猜數結果
if(n>number){
System.out.println("猜大了");
//設置條件最多猜20次
if(count==20){
tag = false;
break;
}
}else if(n<number){
System.out.println("猜小了");
//設置條件最多猜20次
if(count==20){
tag = false;
break;
}
} else {
System.out.println("猜對了");
//設置條件最多猜20次
if(count==20){
break;
}
break;
}
}
if(tag){
switch (count){
case 1 :
System.out.println("你太有才了!");
break;
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
System.out.println("這麼快就猜出來了,很聰明麽!");
break;
default :
System.out.println("猜了半天才猜出來,小同志,尚需努力啊!");
break;
}
}
}
}
~~~
# 二、簡答題
1、請簡述continue和break的區別;
2、switch結構可以傳入哪些參數類型;
3、if和switch結構的區別;
4、while和dowhile的區別;