喜欢写些小代码,有了解过一些c和c++方面的知识,想在这块有所发展但是苦于现状不给力,贴点代码放上来吧,没事了自己看看活动下脑子,博客嘛,很大程度上来说是当笔记本用的,image

C语言画菱形

这是运行后的效果截图

放上代码方便以后无聊了瞧瞧,

#include <stdio.h>
#include <cstdlib>
int main()
{
    do
    {
        int h=0;
        printf("请输入行数(输入0结束):");
        scanf("%d",&h);
        if(h==0)
            break;
        else if(h<0)
        {
            printf("%d输入有误,请输入正整数\n",h);
        }
        else
        {
            if(h%2==0)
            {
                //偶数行
                int c_h=h/2;//转折行
                int i=1;//当前行
                int j=0;//行内循环计数
                for(i;i<=h;i++)//总行数循环
                {
                    if(i<=c_h)//上半部分
                    {
                        //  空格数+*数=c_h+i-1
                        //      空格数=c_h-i
                        //         *数=2*i-1
                        j=1;
                        for(j;j<=c_h+i-1;j++)//空格加*
                        {
                            if(j<=c_h-i)//画空格
                                printf(" ");
                            else
                                printf("+");
                        }
                        printf("\n");
                    }else
                    {
                        //下半部分  i行跟c_h-(i-c_h)+1行情况一样的  2c_h-i+1
                        int hh=2*c_h-i+1;//临时行
                        j=1;
                        for(j;j<=c_h+hh-1;j++)
                        {
                            if(j<=c_h-hh)
                                printf(" ");
                            else
                                printf("+");
                        }
                        printf("\n");
                    }
                }
            }else
            {
                //奇数行
                int c_h=(h+1)/2;
                int i=1;//当前行
                int j=0;//行内循环计数
                for(i;i<=h;i++)
                {
                    if(i<=c_h)//上半部分
                    {
                        //  空格数+*数=c_h+i-1
                        //      空格数=c_h-i
                        //         *数=2*i-1
                        j=1;
                        for(j;j<=c_h+i-1;j++)
                        {
                            if(j<=c_h-i)
                                printf(" ");
                            else
                                printf("+");
                        }
                        printf("\n");
                    }else
                    {
                        //下半部分  i行跟c_h-(i-c_h)行情况一样的  2c_h-i
                        int hh=2*c_h-i;//临时行
                        j=1;
                        for(j;j<=c_h+hh-1;j++)
                        {
                            if(j<=c_h-hh)
                                printf(" ");
                            else
                                printf("+");
                        }
                        printf("\n");
                    }
                }//行循环结束
            }//奇数结束
            printf("------------------\n");
        }//正整数结束
      
    }while(true);
    system("pause");
    return 0;
}