打印各种图案~

题目

    • 1.线段图案
    • 2.正方形图案
    • 3.直角三角形图案
    • 4.翻转直角三角形图案
    • 5.带空格直角三角形图案
    • 6.金字塔图案
    • 7.翻转金字塔图案
    • 8.菱形图案
    • 9.K形图案
    • 10.箭形图案
    • 11.反斜线图案
    • 12.正斜线图案
    • 13.X形图案
    • 14.空心正方形图案
    • 15.空心三角形图案
    • 16.数字三角形图案

1.线段图案

输入描述:
多组输入,一个整数(1~100),表示线段长度,即“ * ”的数量
输出描述:
针对每行输入,输出占一行,用" * "组成的对应长度的线段

输入示例:

10
2

输出示例:

**********
**

代码实现

int main() {
     
	int num = 0;
	while (scanf("%d", &num)!=EOF) {
     
		for (int i = 0; i < num; i++) {
     
			printf("*");
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

2.正方形图案

输入描述:
多组输入,一个整数(1~20),表示正方形的长度,也表示输出行数。
输出描述:
针对每行输入,输出用“*”组成的对应边长的正方形,每个“ * ”后面有一个空格。

输入示例:

4

输出示例

* * * *
* * * *
* * * *
* * * *

代码实现

int main() {
     
	int row = 0;
	int col = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (int i = 0; i < row; i++) {
     
			for (col = 0; col < row; col++) {
     
				printf("* ");
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

前两个图案比较简单,这里就不多提了~

3.直角三角形图案

输入描述:
多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“ * ”组成的对应长度的直角三角形,每个“ * ”后面有一个空格。

输入示例:

4

输出示例:

*
* *
* * *
* * * *

代码实现

int main() {
     
	int row = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (int i = 0; i < row; i++) {
     
			for (int k = 0; k <= i; k++) {
     
				printf("* ");
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

第一个for循环控制循环行数,第二个for循环控制每行输出多少个"*"

4.翻转直角三角形图案

输入描述:
多组输入,一个整数(2~20),表示翻转直角三角形直角边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“ * ”组成的对应长度的翻转直角三角形,每个“ * ”后面有一个空格。

输入示例:

5

输出示例:

* * * * *
* * * *
* * *
* *
*

代码实现

int main() {
     
	int row = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (int i = 0; i < row; i++) {
     
			for (int k = row; k > i; k--) {
     
				printf("* ");
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

在上一题的基础上,改变第二个for循环的条件即可~

5.带空格直角三角形图案

输入描述:
多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“ * ”组成的对应长度的直角三角形,每个“ * ”后面有一个空格.

输入示例:

5

输出示例:

        * 
      * * 
    * * * 
  * * * * 
* * * * *

代码实现

int main() {
     
	int row = 0;
	int i = 0;
	int k = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (i = 0; i < row; i++) {
     
			for (k = row; k > i; k--) {
     
				printf("  ");//此处为两个空格,因为"* " 的*后边有一个空格
			}
			for (k = 0; k <= i; k++) {
     
				printf("* ");
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

打印各种图案~_第1张图片
循环打印空格时,可以套用打印翻转直角三角形的循环代码,再写一个for循环来控制每行输出的" * "个数,放在第一个循环里即可~

6.金字塔图案

输入描述:
多组输入,一个整数(2~20),表示金字塔边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“ * ”组成的金字塔,每个“ * ”后面有一个空格。

输入示例:

4

输出示例:

   * 
  * * 
 * * * 
* * * * 

代码实现

int main() {
     
	int row = 0;
	int i = 0;
	int k = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (i = 0; i < row; i++) {
     
			for (k = row; k > i; k--) {
     
				printf(" ");
			}
			for (k = 0; k <= i; k++) {
     
				printf("* ");
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

在上一题的基础上,双for循环输出空格时,少打印一个空格即可~

7.翻转金字塔图案

输入描述:
多组输入,一个整数(2~20),表示翻转金字塔边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“ * ”组成的金字塔,每个“ * ”后面有一个空格。

输入示例:

5

输出示例:

* * * * * 
 * * * * 
  * * * 
   * * 
    * 

代码实现

int main() {
     
	int row = 0;
	int i = 0;
	int k = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (i = 0; i < row; i++) {
     
			for (k = 0; k <= i; k++) {
     
				printf(" ");
			}
			for (k = 0; k <row - i; k++) {
     
				printf("* ");
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

打印各种图案~_第2张图片
打印各种图案~_第3张图片

套用打印直角三角形的代码来循环打印空格,再用for循环控制打印每一行的" * "的个数即可~

8.菱形图案

输入描述:
多组输入,一个整数(2~20)。
输出描述:
针对每行输入,输出用“ * ”组成的菱形,每个“*”后面有一个空格。

输入示例:

2
3

输出示例:

  * 
 * * 
* * * 
 * * 
  * 

   * 
  * * 
 * * * 
* * * * 
 * * * 
  * * 
   * 

代码实现

int main() {
     
	int num = 0; //num为上三角和下三角的行数
	int i = 0;
	int k = 0;
	while (scanf("%d", &num) != EOF) {
     
		//打印上三角
		for (i = 0; i < num; i++) {
     
			for (k = num; k > i; k--) {
     
				printf(" ");
			}
			for (k = 0; k <= i; k++) {
     
				printf("* ");
			}
			printf("\n");
		}
		//打印中间那条线
		for (i = 0; i < num + 1; i++) {
     
			printf("* ");
		}
		printf("\n");
		//打印下三角
		for (i = 0; i < num; i++) {
     
			for (k = 0; k <= i; k++) {
     
				printf(" ");
			}
			for (k = 0; k < num - i; k++) {
     
				printf("* ");
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

打印各种图案~_第4张图片

9.K形图案

输入描述:
多组输入,一个整数(2~20)。
输出描述:
针对每行输入,输出用“ * ”组成的K形,每个“*”后面有一个空格。

输入示例:

2
3

输出示例:

* * * 
* *  
*   
* *  
* * *

* * * * 
* * *  
* *   
*    
* *   
* * *  
* * * *  

代码实现

int main() {
     
	int num = 0;//从中间分割,上、下的行数
	int i = 0;
	int k = 0;
	while (scanf("%d", &num) != EOF) {
     
		//上部分
		for (i = 0; i < num; i++) {
     
			for (k = num+1; k > i; k--) {
     
				printf("* ");
			}
			printf("\n");
		}
		//下部分
		for (i = 0; i < num+1; i++) {
     
			for (k = 0; k <= i; k++) {
     
				printf("* ");
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

打印各种图案~_第5张图片

10.箭形图案

输入描述:
多组输入,一个整数(2~20)。
输出描述:
针对每行输入,输出用“*”组成的箭形。

输入示例:

2

输出示例:

    *
  **
***
  **
    *

代码实现

int main() {
     
	int num = 0;//不算中间那行的,上、下行数
	int i = 0;
	int k = 0;
	while (scanf("%d", &num) != EOF) {
     
		//上部分
		for (i = 0; i < num+1; i++) {
     
			for (k = num; k > i; k--) {
     
				printf("  ");
			}
			for (k = 0; k <= i; k++) {
     
				printf("*");
			}
			printf("\n");
		}
		//下部分
		for (i = 0; i < num; i++) {
     
			for (k = 0; k <= i; k++) {
     
				printf("  ");
			}
			for (k = 0; k < num - i; k++) {
     
				printf("*");
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

打印各种图案~_第6张图片

11.反斜线图案

输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成反斜线的“*”的数量。
输出描述:
针对每行输入,输出用“ * ”组成的反斜线。

输入示例:

4

输出示例:

*   
 *  
  * 
   *

代码实现

int main() {
     
	int row = 0;//row既是行数,也是*的个数
	int i = 0;
	int k = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (i = 0; i < row; i++) {
     
			for (k = 0; k < row; k++) {
     
				if (i == k) {
     
					printf("*");
				}
				else {
     
					printf(" ");
				}
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

打印各种图案~_第7张图片

12.正斜线图案

输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成正斜线的“*”的数量。
输出描述:
针对每行输入,输出用“ * ”组成的正斜线。

输入示例:

4

输出示例:

   *
  * 
 *  
* 

代码实现

int main() {
     
	int row = 0;
	int i = 0;
	int k = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (i = 0; i < row; i++) {
     
			for (k = 0; k < row; k++) {
     
				if (i + k == row - 1) {
     
					printf("*");
				}
				else {
     
					printf(" ");
				}
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

打印各种图案~_第8张图片

13.X形图案

输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。

输入示例:

5
6

输出示例:

*   *
 * * 
  *  
 * * 
*   *

*    *
 *  * 
  **  
  **  
 *  * 
*    *

代码实现

int main() {
     
	int row = 0;
	int i = 0;
	int k = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (i = 0; i < row; i++) {
     
			for (k = 0; k < row; k++) {
     
				//打印左斜线
				if (i == k) {
     
					printf("*");
				}
				//打印右斜线
				else if (i + k == row - 1) {
     
					printf("*");
				}
				else {
     
					printf(" ");
				}
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

打印各种图案~_第9张图片

14.空心正方形图案

输入描述:
多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“ * ”的数量。
输出描述:
针对每行输入,输出用“ * ”组成的“空心”正方形,每个“ * ”后面有一个空格。

输入示例:

4

输出示例:

* * * * 
*     * 
*     * 
* * * * 

代码实现

int main() {
     
	int row = 0;
	int i = 0;
	int k = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (i = 0; i < row; i++) {
     
			for (k = 0; k < row; k++) {
     
				//打印两横
				if (i == 0 || i == row - 1) {
     
					printf("* ");
				}
				else if (k == 0 || k == row - 1) {
     
					printf("* ");
				}
				else {
     
					printf("  ");
				}
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

打印各种图案~_第10张图片

15.空心三角形图案

输入描述:
多组输入,一个整数(3~20),表示输出的行数,也表示组成三角形边的“*”的数量。
输出描述:
针对每行输入,输出用“ * ”组成的“空心”三角形,每个“ * ”后面有一个空格。

输入示例:

4

输出示例:

*       
* *     
*   *   
* * * * 

代码实现

int main() {
     
	int row = 0;
	int i = 0;
	int k = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (i = 0; i < row; i++) {
     
			for (k = 0; k <= i; k++) {
     
				if (k == 0 || i == k || i == row - 1) {
     
					printf("* ");
				}
				else {
     
					printf("  ");
				}
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

打印各种图案~_第11张图片

16.数字三角形图案

输入描述:
多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。
输出描述:
针对每行输入,输出用数字组成的对应长度的数字三角形,每个数字后面有一个空格。

输入示例:

4

输出示例:

1
1 2
1 2 3
1 2 3 4

代码实现

int main() {
     
	int row = 0;
	int i = 0;
	int k = 0;
	while (scanf("%d", &row) != EOF) {
     
		for (i = 1; i <= row; i++) {
     
			for (k = 1; k <= i; k++) {
     
				printf("%d ", k);
			}
			printf("\n");
		}
	}
	system("pause");
	return 0;
}

打印图案的题,主要就是"找规律~"

你可能感兴趣的:(C,c语言,打印图案,for循环嵌套)