for循环的语法及经典题型

for循环的语法及基本题型

for(E1 ;E2;E3){循环体}>>>可以理解为for(E1 ;E2;){循环体 E3}>>>可以理解为

E1:初始化变量,只要执行一次

E2表达式,循环终止的条件

E3 初始化变量的增量,防止程序死循环

执行的顺序是 E1 >E2>循环体>E3>E2>循环体>E3…

题型一(打印空心菱形)

// 打印空心菱形
		//打印上半边的等腰三角形
		for (int i = 0; i < 7; i++) {
			for (int j = 6; j > i; j--) {
				System.out.print(" ");
			}
			for (int k = 0; k < 2 * i + 1; k++) {
				if (k == 0 || ((2 * i + 1) - k) == 1) {
					System.out.print("*");
				} else {
					System.out.print(" ");
				}
			}
			System.out.println("");
		}
		//打印下半边的等腰三角形
		for (int i = 0; i < 6; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print(" ");
			}
			for (int k = 0; k < 2 * 5 - 2 * i + 1; k++) {//k <2*总行数-2*当前行数+1
				if (k == 0 || ((2 * 5 - 2 * i + 1) - k) == 1) {
					System.out.print("*");
				} else {
					System.out.print(" ");
				}
			}
			System.out.println("");
		}

题型二(斐波拉契数列题目)

// 计算1,1,2,3,5,8,13这样的...此数据第三项是前两项的和……求前20位数字的和
// 可以看作(1,0,)1,1,2,3,5,8,13这样的...此数据第三项是前两项的和……求前20位数字的和
		int ji = 1;//定义第一项为ji
		int ou = 0;//定义第二项为ou
		int c = 0;//定义第三项为c=ji+ou
		int sum = 0;
		for (int i = 0; i < 20; i++) {
			c = ji + ou;
			ji = ou;//把现在的奇数项变成原来的偶数项
			ou = c;//把现在偶数项变成原来前2项之和
			sum += c;
		}
		System.out.println(sum);

题型三(计算 1+22+333+4444+…666666的和)

// 计算 1+22+333+4444+...666666的和
        //题目解析
		// 1 2*10+2 3*100+3*10+3 4*1000+4*100+4*10+4 ...
		// 1*10(0) 2*10(2-1)+2*10(2-2) 3*10(3-1)+3*10(3-2)+3*10(3-3)
		// i*10(i-1) i*10(i-1)+i 3*10(i-1)+3*10(i-2)+3*10(i-3)
		int ss = 0;//定义一个累加器
		for (int j = 1; j <= 6; j++) {
			double num = 0;//每次把num加到ss总数里面就把num重置,否则会对后面结果产生影响
			for (int i = 1; i <= j; i++) {
				double sum = 1;//每次重置一下sum的值
				sum = sum * j * Math.pow(10, (j - i));
				num += sum;//1  22  333  4444  55555 666666
			}
			ss += num;
			System.out.println((int) num);//  1  22  333  4444  55555 666666
		}

		System.out.println((int) ss);

题型四(判断1到100的素数(只能被1和自己整除就是素数))

for(int i=2;i<101;i++){
		//(5%1)  5%2 5%3  5%4  (5%5)
        // 1和本身可以不取模,因为每个数都能被1和本身整除
        //   5%2 5%3  5%4 
			boolean flag=true;//定义一个标记,外层每次循环都要重置一下标记
			for(int j=2;j<i;j++){//所以是从2开始
			if(i%j==0){
				flag=false;//如果能整除就改变标记,证明不是素数
				break;//不是素数,跳出内存循环,不需要继续判断
				}
			}
			if(flag==true){//如果标记一直没变,证明就是素数
				System.out.println(i+"是素数");
			}
		}

题型五(判断1到100内的完数(比如6的因子为1,2,3,而1+2+3=6,所以为完数))

	for (int i = 1; i < 101; i++) {
			int num = 0;//定义一个初始化变量进行累加,每次外层循环都要重置这个累加器
			for (int j = 1; j < i; j++) {//因为完数就是自己的因子相加,但不包括自己,所以定义j<i
				if (i % j == 0) {//如果%j==0;说明j就是i的因子
					num += j;//把因子进行累加
				}
			}
			if (num == i) {//每次都判断一下i是否等于自己所有因子之和
				System.out.println("完数是:" + i);//如果是则打印出来
			}
		}

题型六(打印水仙花数)

//   打印100到999内的水仙花数(个位的三次方加上十位的三次方加上百位的三次方之和等于原来那个数)
       //例如153=1*1*1+5*5*5+3*3*3
		for(int i=100;i<1000;i++){
			 if((int)(Math.pow(i%100%10/1, 3))+(int)Math.pow(i%100/10, 3)+		       
                (int)Math.pow(i/100, 3)==i){
				
				System.out.println("水仙花数是:"+i);//水仙花数是:153 370 371 407
			}
		}

题型七(九九乘法表)

// 打印九九乘法表
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(i + "*" + j + "=" + (i * j) + " ");//用加号进行拼接
			}
			System.out.println();
		}

分支语句Switch及for循环

switch适用于选择语句

语法如下:

switch中可以放置(整数、浮点数、字符、字符串类型)

int num=2;
switch(num){//switch中可以添加整数、浮点数、字符、字符串类型
    case 1:
        执行的语句;
            break;//break相当于刹车,就是停止执行Switch中break后面的代码停止执行 
    case 2:
        执行的语句;
            break;
        
}

for 循环

语法如下

for(定义初始化变量;表达式;迭代器){重复执行的语句}
for(int i=0;i<10;i++){
    System.out.print("*");//打印10次*
}
//int i=0;   初始化变量 可以决定循环什么时候开始    i<10;表达式,可以决定循环什么时候结束    i++;下一次变量的增量
//
//   我的理解:初始化变量可以理解为起点, 表达式相当于终点,i++可以理解为迈的步长
//
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值