蓝桥杯 打印十字图
2015-04-20 16:50
218 查看
左边图是输入3时的结果,右边是输入1时的结果,之前曾经想要不要用地递归,查了一下发现没有必要,把图形分成四块,每块又分成三个部分,开个字符数组赋值输出就可以了,很简单
![](http://img.blog.csdn.net/20150420164123404?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Vpd2Fuc2h1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这种字符形状输出的问题吧,我见过的通常不难,就是麻烦了点,打出来以后特别有成就感
===================================UPDATE===============================
貌似数组初始化成'.' 然后用这种方法赋值可能更简单
#include<stdio.h> #include<string.h> int main(void){ char a[130][130]; int n, i, j, m; int mid_of_row; memset( a, '$', 16900 * sizeof(char)); //这里是一个投机取巧的办法,直接全都赋值成$,之后找'.'的位置就可以了,这也是我写完了以后才想到的 scanf("%d", &n); mid_of_row = 5 + ( n - 1) * 2;//中线位置 for( j = 1; j <= 2 * n + 1 ; j++){ for( i = mid_of_row ; i > j + 1; i--){ if( j % 2 == 0){ // 上三角 a[j][i] = '.'; // 下三角 a[i][j] = '.'; } } } // 中间 for( i = mid_of_row - 1; i >= 1; i--){ if( i == 1){ a[i][i] = '.'; } else if( i % 2 == 0){ a[i][i] = a[i-1][i] = a[i][i-1] = '.'; } } for( i = 1; i <= mid_of_row; i++){ //左上 for( j = 1; j <= mid_of_row; j++){ printf("%c", a[i][j]); } //右上 for( j = mid_of_row - 1; j >= 1; j--){ printf("%c", a[i][j]); } printf("\n"); } for( i = mid_of_row - 1; i >= 1; i--){ // 左下 for( j = 1; j <= mid_of_row; j++){ printf("%c", a[i][j]); } // 右下 for( j = mid_of_row - 1; j >= 1; j--){ printf("%c", a[i][j]); } printf("\n"); } return 0; }
这种字符形状输出的问题吧,我见过的通常不难,就是麻烦了点,打出来以后特别有成就感
===================================UPDATE===============================
貌似数组初始化成'.' 然后用这种方法赋值可能更简单
相关文章推荐
- 蓝桥杯 历届试题 打印十字图
- 第四届蓝桥杯预赛:打印十字图
- 蓝桥杯 历届试题 打印十字图
- 蓝桥杯 打印十字图
- 蓝桥杯 历届试题 打印大X
- 蓝桥杯-打印十字图
- 蓝桥杯解题(一)打印十字图 时间限制:1.0s 内存限制:256.0MB
- 蓝桥杯 历届试题 横向打印二叉树(java 递归+判断)
- 蓝桥杯_横向打印二叉树
- 蓝桥杯 算法训练 4-1打印下述图形
- 蓝桥杯-横向打印二叉树
- 【蓝桥杯】历届试题 打印十字图
- 蓝桥杯练习题 PREV-2 打印十字图(文字图形)
- 蓝桥杯历届试题 打印十字图
- 蓝桥杯 - 打印十字图 (文字图形类)
- 蓝桥杯:打印十字图
- 2014年第五届蓝桥杯试题C/C++程序设计B组——打印图像
- 蓝桥杯打印十字图
- 蓝桥杯 —— 打印十字图
- 蓝桥杯=横向打印二叉树