Problem B: Print Graphics Problerm (II) 看懂直接学会for循环(超级重要)

 

 

反省:   这种类型的题一看就是for的嵌套循环.我在之前做过这道题,并且写了博客,当天整个过程都是没有问题的.不到两天就卡住了.可见自己还不够熟练

 

通过反省,再次整理自己的思维.找到解决这类题型的窍门.供大家参考

实现倒三角形

首先确定行列

外循环实现行数,内循环实现列数  (借鉴 李南江老师)

for(){                       外循环   实现行                     //这个倒三角5行,9列

        

    for(){                  内循环   实现列

 

}

}

再来看需要实现的效果.看第一个图形.是倒三角形

 

printf(" ");    打印次数不断增加

printf("+");   打印次数不断减少

重点:   我们采用分层实现思想

 

先实现printf(" ");   可以看到空格的变化次数是有外循环i一样的(找到函数关系  y=x),由此输入代码

 

for(w=0;w<i;w++)
                {
                    printf(" ");

                }

 

 

再实现printf("+");  可以看到函数关系为(y=2x-z),由此输入代码

 

h =i+w+1 ;
                for(j=0;j<2*a-h;j++)
                {
                    printf("+");
                }

 

 

 

简约表达:  将要实现的内容分层,将分层的部分进行函数分析.只要可以实现内容展示,管他什么函数

 

 

粗浅之建

 

 

 

代码:

 

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,i,j,w,h;
    while(scanf("%d",&a)!=EOF && a!=0)     //  这点值得记住
    {

        if(a%2==0)
        {

            for(i=0; i<a; i++)
            {
                for(j=i+1; j<a; j++)
                {
                    printf(" ");

                }
                j=i+1;

                for(w=0; w<j+i; w++)
                {
                    printf("+");
                }
                printf("\n");

            }

        }
            else
            {


            for(i=0; i<a; i++)
            {

                for(w=0;w<i;w++)
                {
                    printf(" ");

                }
                h =i+w+1 ;
                for(j=0;j<2*a-h;j++)
                {
                    printf("+");
                }

                printf("\n");
            }

        }

    }     return 0; }