for语句内嵌例题与个人理解

例题1:画出一个高度为3的等腰三角形.

编写程序:

#include<stdio.h>

main()

{

   int a,b,c,h;

   h=3;                                                                                  \\h为高度,赋值常量3.

  for(a=1;a<=h;a++)                                                              \\a可以理解为行数,a为1,h为3,1<=3,从1到3,执行3次外循环.也就是3行.

{

  for(b=1;b<=h-a;b++)printf(" ");                                           \\b可以理解为空格数,当执行到这一步的时候b=1,h=3,a=1,就是表达式1<=2,1到2

                                                                                                  执行两次内循环就是说第一行执行了两次空格,然后继续下一步循环

  for(c=1;c<=2*a-1;c++)printf("*");                                        \\c为*的数量,当第一行执行空格完毕后,他循环了2次就是两个空格,然后执行这一步,

                                                                                                    1<=2*1-1就是从1到1,执行一次*.

   printf(""\n);                                                                          \\执行回车 循环结束,程序跳回到a++,判断2<=3值为真,继续执行内循环.

}

return 0;

}

根据例题可以写出另一个程序:

2.输出一个高度为3的倒等腰三角形.

编写程序:

#include<stdio.h>
main()
{
 int a,b,c,h;
 h=3;
 for(a=h;a>=1;a--){
 for(b=1;b<=h-a;b++)printf(" ");
 for(c=1;c<=2*a-1;c++)printf("*");
 printf("\n");
 }
 return 0;
}

举一反三, 菱形差不多就是上面两个程序的集合.只是倒三角会比正三角少一行 所以只需改动倒三角的外循环for()内的语句,  for(行数=输入高度-1;行数>=1;行数--).

3.输出一个等腰直角三角形.

编写程序如下:

#include<stdio.h>
main()
{
 int a,b,c;
 c=3;
 for(a=1;a<=3;a++)
 {for(b=1;b<=a;b++)
 printf("*");
 printf("\n");
 }
 return 0;
}

原文地址:https://www.cnblogs.com/shujun/p/3102983.html