画表格--蓝桥杯
来源:互联网 发布:mysql 自定义排序 编辑:程序博客网 时间:2024/05/16 19:30
欢迎访问我的新博客:http://www.milkcu.com/blog/
原文地址:http://www.milkcu.com/blog/archives/1366355580.html
简述
这是2013年蓝桥杯全国软件大赛模拟题的第4题,问题是画表格。
题目描述
标题:画表格
在中文Windows环境下,控制台窗口中也可以用特殊符号拼出漂亮的表格来。
比如:
┌─┬─┐
│ │ │
├─┼─┤
│ │ │
└─┴─┘
其实,它是由如下的符号拼接的:
左上 = ┌ 169 176
上 = ┬ 169 208
右上 = ┐ 169 180
左 = ├ 169 192
中心 = ┼ 169 224
右 = ┤ 169 200
左下= └ 169 184
下 = ┴ 169 216
右下 = ┘ 169 188
垂直 = │ 169 166
水平 = ─169 164
本题目要求编写一个程序,根据用户输入的行、列数画出相应的表格来。
例如用户输入:
3 2
则程序输出:
┌─┬─┐
│ │ │
├─┼─┤
│ │ │
├─┼─┤
│ │ │
└─┴─┘
用户输入:
2 3
则程序输出:
┌─┬─┬─┐
│ │ │ │
├─┼─┼─┤
│ │ │ │
└─┴─┴─┘
对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
代码中允许使用STL类库,但不能使用MFC或ATL等非ANSI c++标准的类库。例如,不能使用CString类型(属于MFC类库)。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意选择自己使用的编译环境。
分析
这是2013年蓝桥杯全国软件大赛模拟题的第三题。首先通过如下小程序获得每个符号对应的char值:
# include <stdio.h>int main(void){int text[100];int c;int i;i = 0;while((c = getchar()) != EOF) {text[i++] = c;}text[i] = EOF;i = -1;while(text[i++] != EOF) {printf("%4d", text[i]);if(text[i] == 10) {putchar('\n');}}}
cmd运行界面:
字符对应关系如下:
0左上 = ┌ 169 1761上 = ┬ 169 2082右上 = ┐ 169 1803左 = ├ 169 1924中心 = ┼ 169 2245右 = ┤ 169 2006左下 = └ 169 1847下 = ┴ 169 2168右下 = ┘ 169 1889垂直 = │ 169 16610水平 = ─ 169 164
两个char表示一个特殊字符。然后通过数学计算,画出图形。代码虽然看上去比较松散,但是没有涉及复杂算法。
源代码
# include <stdio.h>int main(void){int m, n;int i, j;scanf("%d%d", &m, &n);for(i = 1; i <= 2 * m + 1; i++) {putchar(9);if(i == 1) {//zuoshangputchar(169);putchar(176);//shuipingputchar(169);putchar(164);for(j = 3; j < 2 * n + 1; j += 2) {//zhongshangputchar(169);putchar(208);//shuipingputchar(169);putchar(164);}//youshangputchar(169);putchar(180);} else if(i == 2 * m + 1) {//zuoxiaputchar(169);putchar(184);//shuipingputchar(169);putchar(164);for(j = 3; j < 2 * n + 1; j += 2) {//zhongxiaputchar(169);putchar(216);//shuipingputchar(169);putchar(164);}//youxiaputchar(169);putchar(188);} else if(i % 2 == 0) {//chuizhiputchar(169);putchar(166);//kongputchar(32);putchar(32);for(j = 3; j < 2 * n + 1; j += 2) {//chuizhiputchar(169);putchar(166);//kongputchar(32);putchar(32);}//chuizhiputchar(169);putchar(166);} else if(i % 2 == 1) {//zhongzuoputchar(169);putchar(192);//shuipingputchar(169);putchar(164);for(j = 3; j < 2 * n + 1; j += 2) {//zhongxinputchar(169);putchar(224);//shuipingputchar(169);putchar(164);}//youputchar(169);putchar(200);}putchar(10);}}
更新
20130501
在做这个题的时候,考虑的有点复杂,其实不用获得特殊字符对应的char,而是直接引用。
# include <stdio.h>int main(void){int m, n;int i, j;scanf("%d%d", &m, &n);for(i = 1; i <= 2 * m + 1; i++) {putchar(9);if(i == 1) {//zuoshangprintf("┌");//shuipingprintf("─");for(j = 3; j < 2 * n + 1; j += 2) {//zhongshangprintf("┬");//shuipingprintf("─");}//youshangprintf("┐");} else if(i == 2 * m + 1) {//zuoxiaprintf("└");//shuipingprintf("─");for(j = 3; j < 2 * n + 1; j += 2) {//zhongxiaprintf("┴");//shuipingprintf("─");}//youxiaprintf("┘");} else if(i % 2 == 0) {//chuizhiprintf("│");//kongprintf(" ");for(j = 3; j < 2 * n + 1; j += 2) {//chuizhiprintf("│");//kongprintf(" ");}//chuizhiprintf("│");} else if(i % 2 == 1) {//zhongzuoprintf("├");//shuipingprintf("─");for(j = 3; j < 2 * n + 1; j += 2) {//zhongxinprintf("┼");//shuipingprintf("─");}//youprintf("┤");}putchar(10);}}
- 画表格--蓝桥杯
- 画表格_蓝桥杯
- 蓝桥杯 画表格
- 蓝桥杯 画表格 Java 带字的表格
- 画表格
- 画表格
- 画表格
- 画表格
- 画表格
- 画表格
- 画表格
- 画表格
- 画表格
- 画表格
- 2013蓝桥杯【模拟赛】画表格
- 2013蓝桥杯 画表格 【模拟赛】
- 蓝桥杯 控制台画表格 字符串处理
- 蓝桥杯---画表格(find、gets、substr)
- Android联系人读取操作笔记 (转载非抄袭)
- 远程VNC安装
- 明明白白c++之类的基本操作(c++ primer 的读书笔记 ,类对象, 类用户, 类成员的含义)
- u-boot源码分析和移植
- Android高仿360安全卫士--布局篇(一)
- 画表格--蓝桥杯
- Android高仿360安全卫士--布局篇(2)
- DedeCms使用笔记
- spket,ExtJS4.0.2配置
- POJ 1041(无向图欧拉回路)
- hdu 3501 Calculation 2
- ubuntu12.0.4下 android x86 源代码 下载
- 数据库访问技术之ADO
- Useful Android Libraries