跳转控制语句练习题
习题一:
编程实现如下功能:
某人有100,000元,每经过一次路口,需要交费,规则如下:
1)当现金>50000时,每次交5%
2)当现金<=50000时,每次交1000
编程计算该人可以经过多少次路口,要求使用while break方式完成
思路分析:
1.定义double money 保存100000
2.根据题的要求,分析出来三种情况
money>50000
money>=1000 && money<=50000
money<1000
3.使用多分支 if-elseif-else
4.while+break[money<1000],同时使用一个变量count来保存通过路口
代码实现:
public static void main(String[] args) {
//某人有100,000元,每经过一次路口,需要交费,规则如下:
//1)当现金>50000时,每次交5%
//2)当现金<=50000时,每次交1000
//编程计算该人可以经过多少次路口,要求使用while break方式完成
double money=100000; //还有多少钱
int count=0; //累积过的路口
while(true){
if(money>50000){ //过路口
//money = money - money * 0.05
money=money*0.95;
count++;
}else if(money >=1000){
money-=1000;
count++;
}else{ //小于1000块,钱不够
break;
}
}
System.out.println("100000可以过"+count+"个路口");
}
习题二:
实现判断一个整数,属于哪个范围 : 大于0 ; 小于 ; 等于0
代码实现:
public static void main(String[] args) {
//实现判断一个整数,属于哪个范围 : 大于0 ; 小于 ; 等于0
Scanner sc = new Scanner(System.in);
System.out.println("输入一个整数判断范围:");
int num = sc.nextInt();
if(num>0){
System.out.println("大于0");
}else if(num==0){
System.out.println("等于0");
}else{
System.out.println("小于0");
}
}
习题三:
判断一个年份是否为闰年
思路分析:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。
代码实现:
public static void main(String[] args) {
//判断一个年份是否为闰年
Scanner sc = new Scanner(System.in);
System.out.println("输入一年份判断是否为闰年:");
int year = sc.nextInt();
//1. 年份是4的倍数而不是100的倍数;2. 年份是400的倍数。
if((year % 4==0 && year %100 !=0) || year%400==0){
System.out.println(year+"是闰年");
}else{
System.out.println(year+"不是闰年");
}
}
习题四:
判断一个整数是否是水仙花数,所谓水仙花数是指一个3位数,其个位上数字立方和等于本身。例如:153 = 111 + 333 + 555
思路分析:
1.比如 int num=153;
2.先得到num的百位,十位,个位的数字,使用if判断他们的立方和是否相等
3.num的百位=n/100
4.num的十位=num%100/10
5.num的个位=num%10
代码实现:
public static void main(String[] args) {
//判断一个整数是否是水仙花数,所谓水仙花数是指一个3位数,
//其个位上数字立方和等于本身。例如:153 = 1*1*1 + 3*3*3 + 5*5*5
Scanner sc = new Scanner(System.in);
System.out.println("输入一年份判断是否为闰年:");
int num = sc.nextInt();
int g=num%10,s=num/10%10,b = num/100;
if(num==(b*b*b+s*s*s+g*g*g)){
System.out.println(num+"是水仙花数");
}else{
System.out.println(num+"不是水仙花数");
}
}
习题五:
看看下面代码输出什么?
class Demo{
public static void main(String[] args){
int m=0,n=3;
if(m>0){
if(n>2){
System.out.println("OK1");
}else{
System.out.println("OK2");
}
}
}
}
//这个代码不输出任何值
习题六:
输出1-100之间的不能被5整除的数,每5个一行
代码实现:
public static void main(String[] args) {
//输出1-100之间的不能被5整除的数,每5个一行
int count=0;
for(int i=1;i<=100;i++){
if(i%5==0){
System.out.print(i+" ");
count++;
}
if(count==5){
System.out.println();
count=0;
}
}
}
习题七:
输出小写的a-z以及大写的Z-A
思路分析:
1.b='a'+1 c='a'+2
2.使用for搞定
代码实现:
//方法一:
public static void main(String[] args) {
//输出小写的a-z以及大写的Z-A
for(char c1='a';c1<='z';c1++){
System.out.println(c1+" ");
}
for(char c1='Z';c1>='A';c1--){
System.out.println(c1+" ");
}
}
//方法二:
public static void main(String[] args) {
//输出小写的a-z以及大写的Z-A
for(int i=97;i<=122;i++){
char n =(char)i;
System.out.print(n+" ");
}
System.out.println();
for(int i=99;i>=65;i--){
char n=(char)i;
System.out.print(n+" ");
}
}
习题八:
求出1-1/2+1/3-1/4…1/100的和
思路分析:
1. 1-1/2+1/3/4....1/100 = (1/1)-(1/2)+(1/3)-(1/4)...1/100
2. 从上面的分析可以看到
(1)一共有100个数,分子为1,分母从1-100
(2)当分母为奇数时,前面是+,当分母是偶数时,前面是-
3. 可以使用for + 判断即可完成
4. 把结果存放在double sum
5. 这里有一个隐藏的陷阱,要把 公式分子 1 写出 1.0 才能得到精确的小数
代码实现:
public static void main(String[] args) {
double sum=0;
for(int i=1;i<=100;i++){
//判断是奇数还是偶数,然后做不同的处理
if(i %2!=0){ //分母为奇数
sum += 1.0/i;
}else{ //分母为偶数
sum -= 1.0/i;
}
}
System.out.println("sum="+sum);
}
习题九:
求1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+…+100)的结果
思路分析:
1.一共有100项相加
2.每一项的数字在逐渐增加
3.很像一个双层循环
代码实现:
public static void main(String[] args) {
//求1+(1+2)+(1+2+3)+(1+2+3+4)+....+(1+2+3+..+100)的结果
int sum=0;
//i可以表示是第几项,同时也是当前项的最后一个数
for(int i=1;i<=100;i++){
for(int j=1;j<=i;j++){ //内层对1-i进行循环
sum+=j;
if(j==i){
break;
}
}
}
System.out.println(sum);
}