第四天的课程有循环里经常使用的几个跳转语句break、continue和return;最后就是循环里的难点,多重循环
一、多重循环
1、多重循环指一个循环语句体中再包含循环语句,又称嵌套循环。循环语句内可以嵌套多层循环。同时不同的循环语句可以相互嵌套。
2、语法:
while(循环条件1){
循环语句1
for(循环条件2){
循环语句2
}
}
这是while语句和for语句的嵌套例子,其中while循环称外层循环,for循环称内层循环。
●各循环可相互嵌套
●一般不超过三层
●外层循环变量变化一次,内层循环变量变化一遍
二、跳转语句
1、break语句
break语句可以使流程跳出while或for循环的本层循环,特别是多层次循环结构中,利用“break”可以提前结束内层循环
2、continue语句
“continue”语句被用来跳过循环中本次循环快中剩余的语句,然后执行下一次循环。
说明:
●break只会出现在switch和循环语句中,没有其他使用场合。
●continue只能用于循环语句中
●break和continue两者功能类似,continue是终止本次循环,继续进行下一次循环;而break是终止本层循环。
●break和continue之后都不能有其他语句,因为程序永远不会执行其后的语句。
3、return语句
并非专门用来结束循环的,它的功能是结束一个方法!当一个方法执行到return时,这个方法将被结束。
直接结束方法,不管这个return处于多少层循环。
三、练习题
今天的题目有点小难,冲
题目一:
编写一个程序,使用循环计算并输出1到n之间所有整数的平方和,其中n是用户输入的正整数。
题目二:
编写一个程序,使用循环计算并输出n的阶乘,其中n是用户输入的正整数。
题目三:
编写一个程序,使用循环判断一个给定的正整数是否为素数(只能被1和自身整除的数)。
题目四:
编写一个程序,使用循环计算并输出1到100之间所有偶数的和。
题目五:
编写一个程序,使用循环计算并输出1到n之间所有奇数的乘积,其中n是用户输入的正整数。
题目六:
编写一个程序,使用循环打印出如下图案:
*********
*******
*****
***
*
题目七:
编写一个程序,使用循环判断一个给定的正整数是否为回文数(正向和反向读都相同,例如121、12321)。
题目八:
编写一个程序,使用循环计算并输出斐波那契数列的前n项,其中n是用户输入的正整数。
题目九:
编写一个程序,使用循环打印出如下图案:
1
232
34543
4567654
567898765
题目十:
编写一个程序,使用循环打印出所有的水仙花数。水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
//第一题:控制台输入一个数,求他的平方和
System.out.print("请输入一个数:");
int n = input.nextInt();
int sum = 0;//存放总和
for (int i = 1; i <= n; i++) {
int num = 0;//存放每一个加数
num = i * i;
sum += num;
}
System.out.println(n + "的平方和是:"+sum);
//第二题,求阶乘
System.out.print("请输入一个正整数:");
int n1 = input.nextInt();
int sum1 = 1;
for (int i = 1; i <= n1; i++) {
sum1 *= i;
}
System.out.println( n1+ "的阶乘是:" + sum1);
//第三题输出1~100所有质数,只能被1和他本身整除
for (int i = 2; i <= 100; i++) {
int count = 0;
for (int j = 2; j <= i; j++) {
if (i % j == 0) {
count++;
}
}
if (count == 1) {
System.out.println(i);
}
}
//第四题,输出1~100偶数和
int sum2 = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
sum2 += i;
}
}
System.out.println("1~100所有偶数和是:" + sum2);
//第五题,求1到n3之间所有奇数的成乘积
System.out.print("请输入一个正整数:");
int n3 = input.nextInt();
int sum3 = 1;
for (int i3 = 1; i3 <= n3; i3++) {
if (i3 % 2 != 0) {
sum3 *= i3;
}
}
System.out.println("1到" + n3 + "之间所有奇数的乘积是:" + sum3);
//第六题,倒三角
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(" ");
}
for (int j = 9; j >= 2*i-1 ; j--) {
System.out.print("*");
}
System.out.println();
}
//第七题,键盘输入任意正整数,判断是否是回文数(如121,12321)
System.out.print("请输入一个正整数:");
int num7 = input.nextInt();
int count = 0;//计算被整除的次数
for (int i = num7; i> 0; i/=10) {
count++;
}
int k = 1;
int weiSshu ;//各个位数
int newNum = 0;//存放反转的数
int geWei = num7 % 10;
//实现反转
for (int i = 1; i < count; i++) {
k = k * 10;
weiSshu = (num7 / k )% 10;
for (int j = 1; j < count-i; j++) {
weiSshu *= 10;
}
geWei *= 10;
newNum += weiSshu;
}
newNum = newNum + geWei;//反转后的数
if (newNum == num7) {
System.out.println("是回文数!");
} else {
System.out.println("不是回文数!");
}
//第八题,输出斐波那契数列的前n项(兔子序列)
System.out.print("请输入一个正整数:");
int n4 = input.nextInt();
int result1 = 0;//存放总数
int j = 1;//存放上上一个月的数量
int k3 = 1;//存放上一个月的数量
if (n4<=2) {
for (int i = 1; i <= n4; i++) {
result1 = 1;
System.out.println(result1);
}
} else {
//前两个月
for (int i = 1; i <= 2; i++) {
result1 = 1;
System.out.println(result1);
}
//第二个月之后的
for (int i1 = 3; i1 <= n4; i1++) {
for ( j = 1; j < k3; j++) {
}
for ( k3 = 1 ;k3 < result1; k3++) {
}
result1 = j + k3;//前两个月相加
System.out.println(result1);
}
}
//第九题,打印数字三角形
/* 1
232
34543
4567654
567898765 */
System.out.print("请输入行数:");
int line2 = input.nextInt();
for (int i = 1; i <= line2; i++) {
for (int j1 = 1; j1 <= line2 - i; j1++) {
System.out.print(" ");
}
for (int n2 = i; n2 <= 2 * i - 1; n2++) {
System.out.print(n2);
}
for (int kk = 2*i-2; kk >= i ; kk--) {
System.out.print(kk);
}
System.out.println();
}
//第十题,输出所有水仙花数,各个位数的立方之和等于它本身
int ge, shi, bai;
for (int i = 100; i < 1000; i++) {
ge = i % 10;
shi = i / 10 % 10;
bai = i / 100;
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
System.out.println(i);
}
}