第一题:
问:有一个输出语句System.out.print(“@”)。使用这个语句,在控制台打印出一个五行的三角形,效果如下:
@
@@
@@@
@@@@
@@@@@
提示:
1.已知条件中只有一个@,如何产生多行的符号?
2.每行的打印个数不同,循环的次数如何控制?
方案:
使用for循环的嵌套完成。
操作步骤:
1.定义循环执行5次代表一共5行
2.定义内层循环执行i次代表每行打印的个数是i
3.在内层循环中输出符号
4.每行结束之后执行换行操作
参考答案
public class Demo3 {
public static void main(String[] args) {
//1.外层循环代表4行
for (int i = 1; i <= 5; i++) {
//2.内层循环代表每行打印i个
for (int j = 0; j < i; j++) {
//3.打印每个@
System.out.print("@");
}
//4.每行结尾执行换行操作
System.out.println();
}
}
}
2.例题2
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3。编程 找出1000以内的所有完数。(因子:除去这个数本身的其它约数)
分析:
在这里我们要了解完数,就是出去这个数本数的其它约数,比如6,它的约数有1、2、3、6。而6=1+2+3。像4,它的约数有1、 2 、2 、4。而它明显不是约数。所以我们在这里要用循环嵌套来解决这个问题。
public class Zuixiao {
public static void main(String [] args) {
for(int i = 1; i <= 1000; i++) {
// 定义i=1,范围在1000以内,每次i都加1.
int num = 0;
// 定义 num=0.
for(int j = 1; j<i ; j++) {
// 循环 先定义j=1,j<i,每次j都加1.
if( i % j == 0) {
num += j;
/*这里是最关键的,在这里因为j定义的是1,所以在if语句里首先都给num赋值一个1,
所以解决了这个数的约数本身以及一的问题,而在这里for和if是在筛选出每个数的约数;
*/
}
}
if(i == num) { //而这里就是补全最后一步,i除以j没有余数的有很多,但是时完数的少,这里就是验证是否为完数
System.out.println(i + "是完数");
}
}
}
}