打印菱形星号组合

来源:互联网 发布:淘宝美工基础 编辑:程序博客网 时间:2024/05/17 19:19
#include<stdio.h>void pxo(int n,int ih)                    //第一个输出*{int i,j,t,xi=0,ki=0,x=0,k=0;   //xi用来计数i行*号个数,ki用来计数i行空格个数,x用来计数*号个数,k用来计数空格个数t=(n-1)/2;                     //输出空格初始化for(j=0;j<(n-1)/2;j++)         //前(n-1)/2-1行{for(i=t--;i>0;i--){printf(" ");k++;}for(i=0;i<2*j+1;i++){printf("*");x++;}printf("\n");}t=(n-1)/2;                     //输出*号初始化for(j=(n-1)/2;j<n;j++)         //后(n-1)/2+1行{for(i=0;i<j-(n-1)/2;i++){printf(" ");k++;}for(i=1+2*(t--);i>0;i--){printf("*");x++;}printf("\n");}printf("numo(*)=%d,numo( )=%d\n",x,k); //输出*与空格的个数if(ih<=(n-1)/2&&ih>0)                   //前(n-1)/2-1行{xi=2*ih-1;ki=(n+1-xi)/2;}if(ih>(n-1)/2&&ih<n+1)                 //后(n-1)/2+1行{ki=ih-(n-1)/2-1;xi=n-2*ki;}printf("numoi(*)=%d,numoi( )=%d\n",xi,ki); //输出每行*与空格的个数}void pxt(int n,int ih)                    //第二个输出{int i,j,t,xi=0,ki=0,x=0,k=0;t=(n-1)/2;                     //输出空格初始化for(j=0;j<(n-1)/2;j++)          //前(n-1)/2-1行{for(i=t--;i>0;i--){printf(" ");k++;}printf("*");x++;if(j>0)                    //限制第一行{for(i=0;i<2*(j-1)+1;i++){printf(" ");k++;}printf("*");x++;    }printf("\n");}t=(n-1)/2-1;                   //输出*号初始化for(j=(n-1)/2;j<n;j++)         //后(n-1)/2+1行{for(i=0;i<j-(n-1)/2;i++){printf(" ");k++;}printf("*");x++;if(j<n-1)                //限制最后一行{for(i=1+2*(t--);i>0;i--){printf(" ");k++;}printf("*");x++;}printf("\n");}printf("numt(*)=%d,numt( )=%d\n",x,k);//输出*与空格的个数if(ih>1&&ih<=(n-1)/2)                //2到(n-1)/2行{ki=(n-1)/2+ih-2;xi=2;}else if(ih<n&&ih>(n-1)/2)          //(n-1)/2到n-1行{ki=n-2-(ih-(n-1)/2-1);xi=2;}else if(ih==1||ih==n)              //第一行与最后一行{ki=(n-1)/2;xi=1;}printf("numti(*)=%d,numti( )=%d\n",xi,ki); //输出每行*与空格的个数}void main(){//int i,j,t,n,x=0,k=0;int n,ih;while(1){printf("please enter n(odd number) line and number of *and of the line of i:\n");scanf_s("%d%d",&n,&ih);//输入想要输出的行数printf("test\n");pxo(n,ih);       //第一个输出*pxt(n,ih);       //第二个输出*}}




1 0
原创粉丝点击