心型程序

#include<stdio.h>
void main()
{    
    int a,b,c;
    int a1,a2,a3,a4,a5,a6;
    int i,j,k;

    int t;
    int x;
    int sum;
    
a:    printf("\n输入一个1——5之间的整数,按回车键。\n此程序可以输出不同大小的心形图案。\n请输入:");
    scanf("%d",&a);
    printf("\n\n");
    

    


    a1=a;
    a2=a;
    a3=a;
    a4=a;
    a5=a;
    a6=a;
/*在第一次循环中a的值已经自减发生了变化,所以需要保存a*/

    
    sum=1+2*4+2*3*a+2*2*a+2*1*a;
    c=5;



    printf("\n");
    
    
    if(!(a>=1 && a<=9))   {printf("\n\n您输入的数据有误!请重新输入!\n\n\n\n\n\n\n"); goto a;}

    for(;a>=0;a--)
        {
            t=(a+1)*a/2;                        
            /*t变量必须放在循环内,它要随着a的值变化才可以*/
            for(i=0;i<c+t;i++)
                {
                    printf(" ");
                }
            for(j=0;j<(sum-4*t-1)/2;j++)
                {
                    printf("*");
                }
            for(k=0;k<2*t+1;k++)
                {
                    printf(" ");
                }
            for(j=0;j<(sum-4*t-1)/2;j++)
                {
                    printf("*");
                }
            
            printf("\n");
        }
/*以上循环完成心形的上半部分*/
        
    
    
    
    
    for(b=1;b<a1;b++)
        {
            for(i=0;i<c;i++)
                {
                    printf(" ");
                }
            for(j=0;j<sum;j++)
                {
                    printf("*");
                }
            printf("\n");
        }
/*以上循环完成中间最宽的部分*/    
    
    

    
/*不为何下面的循环输出的图形越大就在最后输出的回车符越多。。。。*/
    for(b=1;b<=a1;b++)
        {    
            x=(b+1)*b/2;
            

            for(;a2!=0;a2--)
                {
                    for(i=0;i<c+x;i++)
                        {
                            printf(" ");
                        }
                    for(j=0;j<sum-2*x;j++)
                        {
                            printf("*");
                        }
            
                    printf("\n");
                    x++;
                }    

            
            
            
            for(;a3!=1;a3--)                     
                {
                    x++;
                    for(i=0;i<c+x;i++)
                        {
                            printf(" ");
                        }
                    for(j=0;j<sum-2*x;j++)
                        {
                            printf("*");
                        }
            
                    printf("\n");
                    x++;
                }
            
            
            
            
            for(;a4!=0;a4--)
                {
                    x++;
                    for(i=0;i<c+x;i++)
                        {
                            printf(" ");
                        }
                    for(j=0;j<sum-2*x;j++)
                        {
                            printf("*");
                        }
            
                    printf("\n");
                    x+=2;
                }




            for(;a5!=0;a5--)
                {
                    x++;
                    for(i=0;i<c+x;i++)
                        {
                            printf(" ");       
                        }
                    for(j=0;j<sum-2*x;j++)
                        {
                            printf("*");
                        }
            
                    printf("\n");
                    x+=3;
                }

            
        
/*如果去掉下面这个循环,则当a=1时候便缺少最后一行而且最后一个星号*/    
            for(;a6!=0;a6--)
                {
                    x++;
                    for(i=0;i<c+x;i++)
                        {
                            printf(" ");
                        }
                    for(j=0;j<sum-2*x;j++)
                        {
                            printf("*");
                        }
            
                    printf("\n");
                    x++;
                }
        }
            
        
    goto a;
    
/*最后输出心形的下半部分*/


    
}
心型程序_第1张图片

你可能感兴趣的:(c,图形)