小编最近在刷题的时候遇到很多使用循环的题目,对于这类题目,小编思维逻辑有时候也会很迷,现在来分享一下经典的案列,帮助大家锻炼一下逻辑
打印如图所示的菱形
通过研究分析,菱形可以分为上三角部分和下三角部分
那我们就通过分部打印实现
首先判断所要打印菱形每行的空格数和*数
在上三角中,行数定义为high,空格数通过看图可以发现随high减少,空格数(6,5,4...0)
*数满足行数乘以二减去一
for (i = 1; i <= high; i++) {//上三角
int j;
for (j = 1; j <=high-i ; j++) {
printf(" ");
}
for (j = 1; j <=2*i-1;j++) {
printf("*");
}
printf("\n");
}
下三角中空格数(1...6),*数(11....1)通过查找规律*数满足2(high-i)-1
for (i = 1; i 0; j--) {
printf("*");
}
printf("\n");
最后合成一串完整的代码
#include
int main() {
int high = 0;
scanf("%d",&high);
int i;
for (i = 1; i <= high; i++) {//上三角
int j;
for (j = 1; j <=high-i ; j++) {
printf(" ");
}
for (j = 1; j <=2*i-1;j++) {
printf("*");
}
printf("\n");
}
for (i = 1; i 0; j--) {
printf("*");
}
printf("\n");
}
}
注意!我所定义的i为1,j也可以为其他值,编写代码的时候可以灵活使用,理清此题目思路就可以。