码迷,mamicode.com
首页 > 其他好文 > 详细

2015 蓝桥杯:4.格子中输出

时间:2015-04-11 22:18:04      阅读:369      评论:0      收藏:0      [点我收藏+]

标签:

2015 蓝桥杯:4.格子中输出

2015 蓝桥杯:4.格子中输出

11 分
不知道 %*s 是如何用的,我还以为自己 c 语言很不错了,跪...

StringInGrid 函数会在一个指定大小的格子中打印指定的字符串。
要求字符串在水平、垂直两个方向上都居中。
如果字符串太长,就截断。
如果不能恰好居中,可以稍稍偏左或者偏上一点。

下面的程序实现这个逻辑,请填写划线部分缺少的代码。

#include <stdio.h>
#include <string.h>


void StringInGrid(int width, int height, const char* s)
{
    int i,k;
    char buf[1000];
    strcpy(buf, s);
    if(strlen(s)>width-2) buf[width-2]=0;

    printf("+");
    for(i=0;i<width-2;i++) printf("-");
    printf("+\n");

    for(k=1; k<(height-1)/2;k++){
        printf("|");
        for(i=0;i<width-2;i++) printf(" ");
        printf("|\n");
    }

    printf("|");

//    printf("%*s%s%*s",_____________________________________________); //填空
    printf("%*s%s%*s", 5, "", s, 5, ""); //填空

    printf("|\n");

    for(k=(height-1)/2+1; k<height-1; k++){
        printf("|");
        for(i=0;i<width-2;i++) printf(" ");
        printf("|\n");
    }

    printf("+");
    for(i=0;i<width-2;i++) printf("-");
    printf("+\n");
}


int main()
{
    StringInGrid(20,6,"abcd1234");
    return 0;
}

2015 蓝桥杯:4.格子中输出

标签:

原文地址:http://www.cnblogs.com/sunznx/p/4418535.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!