您的位置:首页 > 编程语言 > C语言/C++

使用C语言打印出一个菱形

2017-03-26 00:41 225 查看
使用C语言打印出一个菱形:

     记得还是上C语课的时候,自己使用过一个比较笨的方法写过7行的实心菱形,但是今天一同学问我,让我帮他写这个程序时缺一时键不知到怎么写。然后自己就把这个算法模拟了一辩,使用了三种方法实现了打印菱形。

代码如下:

#include<iostream>

using namespace std;

void diomand(int r)        // 打印空心菱形

{

    for (int x=0; x <= 2 * r; x++)

    {

        for (int y=0; y <= 2 * r; y++)

        {

            if (y==x+r||y==x-r||y==-x+r||y==-x+3*r)

            {

                printf("*");

            }

            else

            {

                printf(" ");

            }

        }

        printf("\n");

    }

}

// 方法一  分步打印

void rhombus(int len)

{

    int i, j, k;

//    int m = len / 2+1;   // 记录前len/2+1行;   

 // 打印出前len/2+1行

    for (i = 0; i <=len / 2 + 1; i++)

    {

        // 光标移到每行开始输出“ ”的位置

        for (j = 0; j < len / 2 + 1 - i; j++)

        {

            cout<<" ";

        }

        // 开始输出“*”

        for (k = 0; k < 2 * i + 1; k++)

        {

            cout<<"*";

        }

        cout<<endl;

    }

// 打印出后len/2-1行

    for (i = len/2;i>=0; i--)

    {

        // 光标移到每行开始输出“ ”的位置

        for (j = 0; j <=len / 2 - i; j++)

        {

            cout << " ";

        }

        // 开始输出“*”

        for (k = 0; k < 2 * i + 1; k++)

        {

            cout << "*";

        }

        cout << endl;

    }

}

// 方法二:     // 按条件输出“*”和“ ”

void rhombus2(int len)

{

    for (int i = 0; i <len; i++)

    {

        for (int j = 0; j < len; j++)

        {

            if (i + j <= len/2-1 || (j - i >= len/2+1 || i - j >= len/2+1) || i + j >=len+len/2)

            {

                cout << " ";

            }

            else

            {

                cout << "*";

            }

        }

        cout << endl;

    }

}

int main(void)

{

    int r = 0;

    int m = 0;

    cin >> r;

     diomand(r);    // 打印出空心菱形

//    rhombus(7);

    rhombus1(r);    // 分步打印实心菱形

    cin >> m;

    rhombus2(m);  // 按条件打印出实心菱形

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: