目前共有4篇帖子。 内容转换:不转换▼
 
点击 回复
241 3
【试题】打印十字图
一派护法 十九级
1楼 发表于:2016-3-15 16:03
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *arr;
int len, n;

void draw_h(int x, int y, int hlen)
{
    int p = y * len + x;
    while (hlen--)
        arr[p++] = '$';
}

void draw_v(int x, int y, int hlen)
{
    int p = y * len + x;
    while (hlen--)
    {
        arr[p] = '$';
        p += len;
    }
}

void draw(int layer)
{
    int xl = layer * 2;
    int xr = len - 1 - xl;
    int yt = (layer - 1) * 2;
    int yb = len - 1 - (layer - 1) * 2;
    int border = 5 + (n - layer) * 4;
    
    // 图案第一行(以及倒数第一行)
    draw_h(xl, yt, border);
    draw_h(xl, yb, border);
    
    // 图案第二行 (以及倒数第二行)
    draw_h(xl, yt + 1, 1);
    draw_h(xr, yt + 1, 1);
    draw_h(xl, yb - 1, 1);
    draw_h(xr, yb - 1, 1);
    
    // 图案第三行(以及倒数第三行)
    draw_h(xl - 2, yt + 2, 3);
    draw_h(xr, yt + 2, 3);
    draw_h(xl - 2, yb - 2, 3);
    draw_h(xr, yb - 2, 3);
    
    // 两边的竖线
    draw_v(xl - 2, yt + 2, border);
    draw_v(xr + 2, yt + 2, border);
}

int main(void)
{
    int x, y, size;
    char *pArr;
    scanf("%d", &n);
    len = 5 + 4 * n;
    
    size = len * len * sizeof(char);
    pArr = arr = (char *)malloc(size);
    
    // 画每一层图案(不是每一行)
    memset(arr, '.', size);
    for (x = 1; x <= n; x++)
        draw(x);
        
    // 画中心十字
    draw_v(2 * n + 2, len / 2 - 2, 5);
    draw_h(2 * n, len / 2, 5);
    
    for (y = 0; y < len; y++)
    {
        for (x = 0; x < len; x++)
            putchar(*pArr++);
        putchar('\n');
    }
    free(arr);
    return 0;
}
一派护法 十九级
2楼 发表于:2016-3-15 16:03
评测结果  正确
得分  100 

一个图案一个图案画就行了,不要一行一行画。
一派护法 十九级
3楼 发表于:2016-3-15 16:04
10
..$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$..
..$.......................................$..
$$$.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.$$$
$...$...................................$...$
$.$$$.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.$$$.$
$.$...$...............................$...$.$
$.$.$$$.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.$$$.$.$
$.$.$...$...........................$...$.$.$
$.$.$.$$$.$$$$$$$$$$$$$$$$$$$$$$$$$.$$$.$.$.$
$.$.$.$...$.......................$...$.$.$.$
$.$.$.$.$$$.$$$$$$$$$$$$$$$$$$$$$.$$$.$.$.$.$
$.$.$.$.$...$...................$...$.$.$.$.$
$.$.$.$.$.$$$.$$$$$$$$$$$$$$$$$.$$$.$.$.$.$.$
$.$.$.$.$.$...$...............$...$.$.$.$.$.$
$.$.$.$.$.$.$$$.$$$$$$$$$$$$$.$$$.$.$.$.$.$.$
$.$.$.$.$.$.$...$...........$...$.$.$.$.$.$.$
$.$.$.$.$.$.$.$$$.$$$$$$$$$.$$$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$...$.......$...$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$.$$$.$$$$$.$$$.$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$.$...$...$...$.$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$.$.$$$.$.$$$.$.$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$.$.$...$...$.$.$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$.$.$.$$$$$.$.$.$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$.$.$...$...$.$.$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$.$.$$$.$.$$$.$.$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$.$...$...$...$.$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$.$$$.$$$$$.$$$.$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$...$.......$...$.$.$.$.$.$.$.$
$.$.$.$.$.$.$.$$$.$$$$$$$$$.$$$.$.$.$.$.$.$.$
$.$.$.$.$.$.$...$...........$...$.$.$.$.$.$.$
$.$.$.$.$.$.$$$.$$$$$$$$$$$$$.$$$.$.$.$.$.$.$
$.$.$.$.$.$...$...............$...$.$.$.$.$.$
$.$.$.$.$.$$$.$$$$$$$$$$$$$$$$$.$$$.$.$.$.$.$
$.$.$.$.$...$...................$...$.$.$.$.$
$.$.$.$.$$$.$$$$$$$$$$$$$$$$$$$$$.$$$.$.$.$.$
$.$.$.$...$.......................$...$.$.$.$
$.$.$.$$$.$$$$$$$$$$$$$$$$$$$$$$$$$.$$$.$.$.$
$.$.$...$...........................$...$.$.$
$.$.$$$.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.$$$.$.$
$.$...$...............................$...$.$
$.$$$.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.$$$.$
$...$...................................$...$
$$$.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.$$$
..$.......................................$..
..$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$..

--------------------------------
Process exited after 1.411 seconds with return value 0
Press any key to continue . . .
一派护法 十九级
4楼 发表于:2016-3-16 23:00
回复3楼 @巨大八爪鱼 的内容:
10
..$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$..
..$.........................................
排版太乱了。。。

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:241 回复数:3
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-3-16 23:00
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。