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