C语言编程 两种方法打印一个菱形(渐入显示)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程 两种方法打印一个菱形(渐入显示)相关的知识,希望对你有一定的参考价值。

<1>第一种方法,利用字符数组定义一个空格数组和一个符号数组,

然后找到数组中间的元素,操作空格字符从中间开始向两边与符号数组的元素互换,

每互换一次进行一次输出,打印上半个菱形和下半个菱形需要两个for语句的支持。

源代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>//为了使用延时语句Sleep而调用
int main()
{
    char suu1[] = "*****************************************";//符号语句
    char suu2[] = "                                                         ";//空格语句
    int right, left=0, mid;
    right = strlen(suu2)-1;
    mid = left + (right - left) / 2;
    for (left = mid , right = mid ; left >= 0&&right<=strlen(suu2)-1 ; left--, right++)//上半部分打印
    {
        suu2[left] = suu1[left];
        suu2[right] = suu1[right];
        printf("%s\n", suu2);
        Sleep(600);//延时操作
    }
    for (left = 0, right = strlen(suu1)-1; left <=mid && right >=mid; left++, right--)//下半部分打印
    {
        suu2[left] = ‘ ‘;
        suu2[right] = ‘ ‘;
        printf("%s\n", suu2);
        Sleep(600);
    }
    system("pause");
    return 0;
}

这种方法较为浅显易懂,但缺点是菱形的大小是通过所定义的字符数组的长度来定义的,不是特别灵活。

<2>
第二种方法算法上相比第一种较为复杂,但是可操控性比较高,主要是通关观察来得到所打印符号的行,列和符号个数之间的数学关系来打印。

源代码如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int line = 0,m,k;
    scanf("%d", &line);//通过输入来确定菱形的大小
    int i = 0;
    for (i = 0; i < line; i++)//上半部分打印
    {
        for (m = 0; m<line - 1 - i; m++)//观察所得关系式
            printf(" ");
        for (m= 0; m <2 * i+ 1; m ++)
        {
                printf("*");
        }
        printf("\n");
    }
    for (i = 0; i < line-1; i++)//下半部分打印
    {
        for (m = 0; m<=i; m++)
            printf(" ");
        for (m = 0; m <2 * (line-i-1)-1; m++)//观察得到的关系式
        {
            printf("*");
        }
        printf("\n");
    }
    system("pause");
    return 0;
}

运行结果实例:

技术图片

以上是关于C语言编程 两种方法打印一个菱形(渐入显示)的主要内容,如果未能解决你的问题,请参考以下文章

用java打印菱形。

求用C语言打印出1 123 12345 1234567 123456789这样的等腰三角形的程序是啥

C语言打印图中两点之间的所有路径,不是最短路径!!!谢谢高手麻烦帮忙 代码要实现哈!

C语言程序设计 | 打印一个n行的菱形

C语言打印菱形喝汽水问题练习

C语言 用星号*打印菱形或其他图形 详解