第六届蓝桥杯C/C++A组第四题解答
来源:互联网 发布:js带有节假日的日历 编辑:程序博客网 时间:2024/05/17 07:19
题目:
代码填空
#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是很不科学的,按往年的思路,这一题会非常简单,但今年就搞了个这么偏的东西,倒也挺出乎我的意料。
0 0
- 第六届蓝桥杯C/C++A组第四题解答
- 第六届蓝桥杯C/C++A组第一题解答
- 第六届蓝桥杯C/C++A组第三题解答
- 第六届蓝桥杯C/C++A组第八题解答
- 第六届蓝桥杯C/C++A组第五题解答
- 第六届蓝桥杯决赛 C语言A组 题解 第四题_穿越雷区
- 2015第六届蓝桥杯 C/C++A组真题及题解
- 第六届蓝桥杯A组C/C++ 第四题 格子中输出
- 穿越雷区第六届蓝桥杯大赛个人赛决赛(C语言A组)第四题
- 第六届蓝桥杯个人省赛C语言A组第四题
- 第六届蓝桥杯C/C++A组 第八题 饮料换购
- 第六届蓝桥杯C/C++A组 第九题 垒骰子
- 蓝桥杯 2016c/c++A组 题解
- 2015第六届蓝桥杯 C/C++B组真题及题解
- 2013第四届蓝桥杯C/C++ C组省赛题解 八题
- 2013年第四届蓝桥杯C/C++ C组决赛真题题解
- 第六届蓝桥杯A组C/C++ 第二题 星系炸弹
- 第六届蓝桥杯A组C/C++ 第七题 手链样式
- Java提高 - 八大排序方法之归并排序
- 对Socket.io进行负载均衡
- Tiny4412裸机程序之UART收发数据
- NSMutableArray中不能用for循环删除数组对象(原因详解)
- Java调用带有记录类型出参的存储过程
- 第六届蓝桥杯C/C++A组第四题解答
- 如何在子函数中改变main函数中的变量的值——阿里巴巴一面试题
- Android MIME类型大全
- 单向循环链表的合并图解
- 习题
- ONVIF: onvif实现功能和经验
- 利用结构体输入学生信息并按分数排序后输出
- UVA 11582
- HDU 1251 简单解法