如何使用C打印给定的ZIG ZAG模式?

时间:2017-06-09 12:27:29

标签: c

Zig Zag Pattern

我从早上起我的头,我甚至没有达到看起来像模式的东西。任何数量的帮助表示赞赏。 提前谢谢!

这不是我的家庭作业

编辑1:谢谢大家!我终于找到了解决方案。

`#include<stdio.h>

  void main(){
     int n,i,count;
     scanf("%d",&n);
     int prev=n,next=(n*2)+(n-2),tc=1;
     for(int i=1;i<=n;i++){
            if(i==1) {
                for(count=1;count<=(n*2)+(n-2);count++)  {
                    if(count==prev || count==next) printf("*");
                    else printf(" ");  
                }
            }
            else  {
                for(count=1;count<=2*n*n;count++){
                    if(count==prev-tc || count==prev+tc ||   count==next-tc|| count==next+tc) 
                           printf("*");
                    else printf(" ");
                }
           tc++;
          }
     printf("\n");
     }
  }`

2 个答案:

答案 0 :(得分:1)

要解决此类问题,您必须找到空格公式和星形公式。这些公式告诉计算机必须在每一行打印多少空格和星星。 这就是所有这些类型的问题。

答案 1 :(得分:0)

#include<stdio.h>

int main(){ 

    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        for(int x=n;x>=i;x--){
            printf(" ");
        }


        int y=2*i; int f=1;
        while(y!=1){
            if(f!=1&&f!=2*i-1){
                 printf(" ");
            }
            else if(i==n&&f==2*i-1){
                 printf("");
            }
            else{
                printf("*");
            }
            f++;
            y--;



        }
       if(i==n){
           printf("*");
       }
        for(int xk=n;xk>i;xk--){
            printf("  ");
        }

          int y1=2*i; int f2=1;
        while(y1!=1){
            if(f2==2*i-1){
                 printf("");
            }
            if(f2!=1&&f2!=2*i-1){
                 printf(" ");
            }
            else if(i==n&&f2==1){
                 printf(" ");
            }
            else{
                printf("*");
            }
            f2++;
            y1--;



        }


        printf("\n");
    }



}