for循环各类题目

for循环要点

1.确认外层控制内容
2.确认内层控制内容
3.将打印内容与行号产生关系式
4.有的语句可以用if语句,根据字符的个数来增减char,优化代码

//部分类型只能输出奇数行,可在下半部分开始前,对行数做一个判断,根据讲述奇偶性调整自变量的取值;如下语句中的k
	int k = i;
	if (0 == line % 2) {
		k = i - 1;
	}
			
	for (int j = 1; j <= k; j++) {
//偶数行的一半就是行数/2,奇数行的中间一行可以放在上半部分,先定义下半部分行数为  int = line / 2 ;再用总行数减去下半部分得到上半部分数值 
	int cn = 2 * i - 1;//cn == charNumber
	int bacCharNum = cn / 2;
	int froCharNum = cn - bacCharNum;

难度系数:重辣

/*

难度系数:重辣
     A
    ABA
   ABCBA
  ABCDCBA
 ABCDEDCBA
ABCDEFEDCBA
*/

class Demo8 {
	public static void main(String[] args) {
		
		char ch = 'A';
		int line = 10;
				
		for (int i = 1; i <= line;i++) {

			ch = 'A';
			
			//输出空格
			for (int j = 1; j <= line - i; j++) {
				System.out.print(" ");
			}
			
			int cn = 2 * i - 1;
			int bacCharNum = cn / 2;
			int froCharNum = cn - bacCharNum;
		
			//输出每行的前半部分
			for (int j = 1;j <= froCharNum ;j++) {
				System.out.print(ch);
				ch++;
			}
			
			//输出每行的后半部分
			ch -= 2;
			for (int j = 1;j <= bacCharNum ;j++) {
				System.out.print(ch);
				ch--;
			}			
			System.out.println();
		}
	}
}
/*
输出结果:

         A
        ABA
       ABCBA
      ABCDCBA
     ABCDEDCBA
    ABCDEFEDCBA
   ABCDEFGFEDCBA
  ABCDEFGHGFEDCBA
 ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
*/
//难度系数:重辣
//优化方案:将每行打印中的字母用if语句改写
/*
     A
    ABA
   ABCBA
  ABCDCBA
 ABCDEDCBA
ABCDEFEDCBA
*/

class Demo88 {
	public static void main(String[] args) {
		
		char ch = 'A';
		int line = 10;
				
		for (int i = 1; i <= line;i++) {

			ch = 'A';
			ch --;
			//输出空格
			for (int j = 1; j <= line - i; j++) {
				System.out.print(" ");
			}
			
			int cn = 2 * i - 1;
			int bacCharNum = cn / 2;
			int froCharNum = cn - bacCharNum;
			
		
			for (int j = 1;j <= cn ;j++) {
				if (j < froCharNum) {
					ch++;
				} else if (j == froCharNum) {
					ch++;
				} else {
					ch--;
				}
				System.out.print(ch);
			}
			System.out.println();
		}
	}
}

难度系数:魔鬼辣

/*
     A
    ABA
   ABCBA
  ABCDCBA
 ABCDEDCBA
ABCDEFEDCBA
 ABCDEDCBA
  ABCDCBA
   ABCBA
    ABA
     A
*/
class Demo9 {
	public static void main(String[] args) {
		
		char ch = 'A';
		int line = 11;//仅限奇数
		
		int downPart = line / 2;
		int upPart = line - downPart;
				
		for (int i = 1; i <= upPart;i++) {
			ch = 'A';
			for (int j = 1; j <= upPart - i; j++) {
				System.out.print(" ");
			}
			
			int cn = 2 * i - 1;
			int bacCharNum = cn / 2;
			int froCharNum = cn - bacCharNum;
		
			for (int j = 1;j <= froCharNum ;j++) {
				System.out.print(ch);
				ch++;
			}
				ch -= 2;
			for (int j = 1;j <= bacCharNum ;j++) {
				System.out.print(ch);
				ch--;
			}			
			System.out.println();
		}
		
		
				
		for (int i = 1;i <= downPart; i++) {
			ch = 'A';
			
			int cn = 2 * downPart + 1 - 2 * i;
			int bacCharNum = cn / 2;
			int froCharNum = cn - bacCharNum;
			
			for (int j = 1; j <= i; j++) {
				System.out.print(" ");
			}
			
			for (int j = 1;j <= froCharNum; j++) {
			
				System.out.print(ch);
				ch ++;
			}
			ch -= 2;
			for (int j = 1;j <= bacCharNum; j++) {
				System.out.print(ch);
				ch --;
			}			
			System.out.println();
			
		}
	}
}
/*
//难度系数:魔鬼辣
//优化方案:调整为偶数也可以

     A
    ABA
   ABCBA
  ABCDCBA
 ABCDEDCBA
ABCDEFEDCBA
ABCDEFEDCBA
 ABCDEDCBA
  ABCDCBA
   ABCBA
    ABA
     A
*/

class Demo99 {
	public static void main(String[] args) {
		
		char ch = 'A';
		int line = 12;
		
		int downPart = line / 2;
		int upPart = line - downPart;
				
		for (int i = 1; i <= upPart;i++) {
			ch = 'A';
			for (int j = 1; j <= upPart - i; j++) {
				System.out.print(" ");
			}
			
			int cn = 2 * i - 1;
			int bacCharNum = cn / 2;
			int froCharNum = cn - bacCharNum;
		
			for (int j = 1;j <= froCharNum ;j++) {
				System.out.print(ch);
				ch++;
			}
				ch -= 2;
			for (int j = 1;j <= bacCharNum ;j++) {
				System.out.print(ch);
				ch--;
			}			
			System.out.println();
		}
		
		
		
				
		for (int i = 1;i <= downPart; i++) {
			ch = 'A';
			
			int cn = 2 * downPart + 1 - 2 * i;
			int bacCharNum = cn / 2;
			int froCharNum = cn - bacCharNum;
			
			int k = i;
			if (0 == line % 2) {
				k = i - 1;
			}
			
			for (int j = 1; j <= k; j++) {
				System.out.print(" ");
			}
			
			for (int j = 1;j <= froCharNum; j++) {
			
				System.out.print(ch);
				ch ++;
			}
			ch -= 2;
			for (int j = 1;j <= bacCharNum; j++) {
				System.out.print(ch);
				ch --;
			}			
			
			System.out.println();
		}
	}
}

posted @ 2020-04-21 14:31  路漫漫兮其修远  阅读(328)  评论(0编辑  收藏  举报