[c语言]输入n,分别用*输出边长为n的实心菱形和空心菱形

来源:互联网 发布:java入门自学书籍推荐 编辑:程序博客网 时间:2024/04/30 03:02

int main(int argc,const char *argv[]){

     int n,i,j;

    scanf("%d",&n);
    for (i=1; i<=2*n-1; i++) {
        if (i<=n) {//实心菱形上半部分
            //n-i空格
            for (j=0; j<n-i; j++)printf(" ");
                       //2i-1 *
            for (j=0; j<2*i-1; j++)printf("*");

            //n-i kongge
            for (j=0; j<n-i; j++)printf(" ");
        }
        
        else {//实心下半部分
        //i%n kongge
            for (j=0; j<i%n; j++)printf(" ");
            //2*n-1-2(i%n)
            for (j=0; j<2*n-1-2*(i%n); j++)printf("*");
            //i%n kongge
            
        for (j=0; j<i%n; j++)printf(" ");
        }
    
     printf("\n");
    }
        for(i=1;i<=2*n-1;i++){//空心菱形上半部分
            if(i<=n){
                for(j=1;j<=n+i-2;j++)
                {
                if(j==n-i+1)printf("*");
                else printf(" ");
              
            }
                printf("*\n");}
            else {//空心菱形下半部分
                for(j=1;j<=2*n-i%n-2;j++)
                {
                    if(j==i%n+1)printf("*");
                    else printf(" ");
                    
                }
                printf("*\n");}
            
            
            }
//    
//
return 0;

}


运行效果:


0 0
原创粉丝点击