1.打印菱形
分析:
题目要求输出一个菱形,可以把它分成了两个部分,上三角(一共9行),下三角(一共八行),两个三角形拼接在一起就出现了菱形的效果。
上三角:
1、一共输出9行*,line <= 9;是外层循环的循环条件,只要满足条件就继续循环。line++;改变循环控制变量,每次循环后行号自增1。当line>9时跳出循环。
2、输出空格,行号和空格数之间的关系是:
第一行 8个空格
第二行 7个空格
第三行 6个空格
........以此类推,我们很容易就找到了空格数和行号的关系表达式:space = line -1;
3、输出*,行号和*之间的关系是:
第一行 1个*
第一行 3个*
第二行 5个*
第三行 7个*
........根据这样的规律,我们写出了它们间的表达式:stars = (line * 2) - 1;
下三角:
1、外层循环line <= 8;是外层循环的循环条件。
2、输出空格,行号和空格数之间的关系是:
第一行 1个空格
第二行 2个空格
第三行 3个空格
........以此类推,空格数和行号的关系表达式:space = line;
3、输出*,行号和*之间的关系是:
第一行 15个*
第二行 13个*
第三行 11个*
第四行 9个*
........根据这样的规律,它们间的表达式为:(8 - line + 1) * 2 - 1;
代码实现:
#include <stdio.h> int main() { for (int line = 1; line <= 9; line++)//行数 { for (int space = 1; space <= 9 - line; space++)//第一行有9-i个空格 { printf(" "); } //打印*,(i*2)-1是*输出的规律 for (int stars = 1; stars <= (line * 2) - 1; stars++) { printf("*"); } printf("\n"); } //从第十行开始,打印下三角 for (int line = 1; line <= 8; line++) { for (int space = 1; space <= line; space++) { printf(" "); } for (int stars = 1; stars <= (8 - line + 1) * 2 - 1; stars++) { printf("*"); } printf("\n"); } return 0; }
结果:
2.打印箭型图案
问题描述:
多组输入打印一个箭形
代码实现:
#include <stdio.h> int main() { int n = 0; while (scanf("%d",&n) != EOF) { //上边 int i = 0; int space = 0; int star = 0; for (i = 0; i < n+1; i++) { //空格 for (space = 0; space<n-i; space++) { printf(" "); } //* for (star = 0; star<=i; star++) { printf("*"); } printf("\n"); } //下边 for (int i = 0; i < n; i++) { //空格 for (space = 0; space<=i; space++) { printf(" "); } //* for (star = 0;star<n-i;star++) { printf("*"); } printf("\n"); } } }
效果:
3.打印X图案
问题描述:
多组输入,打印X形图案
代码实现:
#include <stdio.h> int main() { int n = 0; int i = 0; int j = 0; while (scanf("%d", &n) != EOF) { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { //对角线打印 if (i == j || i + j == n - 1) { printf("*"); } else { printf(" "); } } printf("\n"); } } return 0; }