博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

用C语言实现菱形程序

Posted on 2018-07-12 09:36  风吹白杨的安妮  阅读(937)  评论(0编辑  收藏  举报

想得有点久,后来自己画图了才会头绪

先画一个模型图:

源代码:

其实也不知道怎么讲,自己摸索一下就能搞出来的。

// tcs2.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <windows.h>
#include<stdio.h>
#include<conio.h>
void gotoxy(int x, int y) 
{
    COORD pos = { x, y };
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄
    SetConsoleCursorPosition(hOut, pos);//两个参数分别是指定哪个窗体,具体位置
}


int main()
{
    int i = 0;
    int a, b,t, n, d;
    char c[20];
    char e[20];
    char f[20];
    char h[20];
    scanf("%d", &n);

    for (i = 0; i < n; i++)
    {
        *(c + i) = i;
        a = *(c + i);
        if (i == (n - 1))
        {
            for (t = 1; t < (n + 1); t++)
            {
                d = n - t;
                //d=2,1,0 
                *(e + t - 1) = *(c + d);
                b = *(e + t - 1);
            }
        }
    }
    for (i = (n - 1); i < (2 * n - 1); i++)
        *(f + i - (n - 1)) = i;//3,4,5,6...
    for (i = (n - 1); i < (2 * n - 1); i++)
    {
        *(f + i - (n - 1)) = i;//3,4,5,6...
        //printf("%d\n", *(f + i - (n - 1)));
        d = i - n + 1;//0,1,2,3...
        if (i == (2 * n - 2))
        {
            for (t = 0; t < n; t++)
            {
                *(h + t) = *(f + n - t - 1);
                //printf("t = %d\n", t);
                //printf("*(h + t)=%d\n", *(h + t));
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        a = *(c + i);
        b = *(e + i);
        gotoxy(a, b);
        printf("*");
    }


    for (i = 0; i < n; i++)
    {
        a = *(c + i);
        b = *(f + i);
        gotoxy(a, b);
        printf("*");
    }
    for (i = 0; i < n; i++)
    {
        a = *(f + i);
        b = *(c + i);
        gotoxy(a, b);
        printf("*");
    }


    for (i = 0; i < n; i++)
    {
        a = *(h + i);
        b = *(f + i);
        gotoxy(a, b);
        printf("*");
    }
    getch();
    return 0;
}

 输入18: