# 流程控制练习题

# 一、编程题

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的区别;

07-18 22:58