打印各种图案~

Posted 一朵花花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打印各种图案~相关的知识,希望对你有一定的参考价值。

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;
}

在这里插入图片描述
循环打印空格时,可以套用打印翻转直角三角形的循环代码,再写一个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;
}

在这里插入图片描述
在这里插入图片描述

套用打印直角三角形的代码来循环打印空格,再用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;
}

在这里插入图片描述

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;
}

在这里插入图片描述

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;
}

在这里插入图片描述

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;
}

在这里插入图片描述

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;
}

在这里插入图片描述

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) {
					打印各种图案~

并排打印多个图案

c++打印数字图案?

C语言打印图形

LQ0164 打印菱形打印图案

如何打印完整的金字塔图案?