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

第六届蓝桥杯C/C++A组第四题解答

2015-05-06 20:23 218 查看
题目:

代码填空

#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("|\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;
}

对于题目中数据,应该输出:

+------------------+

|                        |

|     abcd1234   |

|                        |
|                        |

+-------------------+

思路:

根据*s的定义,填写相应代码即可。

【*s代表占位符,如printf(“%*s”, 6, “1234”);就相当于printf(“%6s”, “1234”);】

在没有填任何东西前,删除要填的那一整行,发现这一行的目的是要我们吧带有abcd1234的哪一行显示出来,数一数空格数量,找到相应的规律,注意所要求的不仅仅是abcd1234四个字母,还要求任意字符串,故要找到普片规律,得到(width-strlen(buf)-2)/2.

解答:

(width-strlen(buf)-2)/2, " ", buf,(width-strlen(buf)-2)/2," "

运行结果:

心路历程:

做这道题的时候,实在不知道*s为何物,且对一个C++选手而言,很少用到printf,所以几乎无法下手,最后半个小时的垃圾时间就一直在各种试,无果。其实说实在的,蓝桥杯搞这个*s是很不科学的,按往年的思路,这一题会非常简单,但今年就搞了个这么偏的东西,倒也挺出乎我的意料。


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