写对称字母塔的时候,程序看起来都很复杂,但一步一步来,总是可以解决的!这个过程需要耐心!
2015-07-29 12:09
651 查看
写对称字母塔的时候一点感受,程序看起来都很复杂,但一步一步来,总是可以解决的!这个过程需要耐心!静下心来,一步一步的实验,打印结果,看是否是需要的。
程序乍一看都很复杂,也搞不到头绪。我觉得是自己还没有仔细思考过这个问题的解决办法。自己一步一步的想下解决办法,总能一步一步的得到你想要的。即使解决不了,再去看其他人的解决办法,都会很容易想明白,并记住!
刚看到题目的时候,没有任何思路,想着是不是可以两个循环把这个图案打印出来。想来想去好像不行,于是第一天就把这个放一边了。
隔了两天又想来把这题给搞定,就想着前面有打印字母递增的算法,还有递减的算法,是不是可以用这些思路去解决问题。
正好又看到网友的思路是把图案分三部分打印,一部分是前面空格,一部分是字母前半部分,最后是字母后半部分。所以设计一个外循环,然后三个内循环,一个循环打印前面的空格,一个打印字母前半部分,一个打印后半部分。扫了一样网友的算法,乱糟糟的感觉,就思路还记得,设计多个循环!其他的一闭上眼睛就忘了。
想来想去,自己去动手写下应该就能理解了,于是就来写吧。
1, 先搞一个递增的外循环,循环次数由输入字母减去‘A’来控制。
2,再搞一个递减内循环,做空格循环次数控制。初始化应该是和外循环成反向的。
测试打印,空格看不到,换成 ‘_’ 来试试。
打印结果正确。
3,再搞一个递增循环,做字母前半部分。
测试打印,结果也还行。
4,最后搞一个递减循环,来控制反序字母打印。
此步骤刚开始搞不明白如何设计循环初始化条件,和循环界限设定。不断调试了有五六次,最终再把这项设定好。
完整代码:
我这个代码没有做输入条件筛选,应该是可以做 字母输入判定, 大小写判定,然后设计分支来处理不同情况,后面再来完善这些功能。
程序乍一看都很复杂,也搞不到头绪。我觉得是自己还没有仔细思考过这个问题的解决办法。自己一步一步的想下解决办法,总能一步一步的得到你想要的。即使解决不了,再去看其他人的解决办法,都会很容易想明白,并记住!
刚看到题目的时候,没有任何思路,想着是不是可以两个循环把这个图案打印出来。想来想去好像不行,于是第一天就把这个放一边了。
隔了两天又想来把这题给搞定,就想着前面有打印字母递增的算法,还有递减的算法,是不是可以用这些思路去解决问题。
正好又看到网友的思路是把图案分三部分打印,一部分是前面空格,一部分是字母前半部分,最后是字母后半部分。所以设计一个外循环,然后三个内循环,一个循环打印前面的空格,一个打印字母前半部分,一个打印后半部分。扫了一样网友的算法,乱糟糟的感觉,就思路还记得,设计多个循环!其他的一闭上眼睛就忘了。
想来想去,自己去动手写下应该就能理解了,于是就来写吧。
1, 先搞一个递增的外循环,循环次数由输入字母减去‘A’来控制。
<span style="font-size:14px;">for(row=0 ; row<=ch-'A'; row++) { } </span>
2,再搞一个递减内循环,做空格循环次数控制。初始化应该是和外循环成反向的。
<span style="font-size:14px;"> for(row=0 ; row<=ch-'A'; row++) { for(bl=(ch-'A'-row-1); bl>=0 ; bl--) printf("_", bl ); printf("\n"); }</span>
测试打印,空格看不到,换成 ‘_’ 来试试。
打印结果正确。
3,再搞一个递增循环,做字母前半部分。
<span style="font-size:14px;">for(row=0 ; row<=ch-'A'; row++) { for(bl=(ch-'A'-row-1); bl>=0 ; bl--) printf("_", bl ); for( line = 'A' ; line <='A'+row ; line++) printf("%c", line ); printf("\n"); }</span>
测试打印,结果也还行。
4,最后搞一个递减循环,来控制反序字母打印。
此步骤刚开始搞不明白如何设计循环初始化条件,和循环界限设定。不断调试了有五六次,最终再把这项设定好。
<span style="font-size:14px;">for(row=0 ; row<=ch-'A'; row++) { for(bl=(ch-'A'-row-1); bl>=0 ; bl--) printf("_", bl ); for( line = 'A' ; line <='A'+row ; line++) printf("%c", line ); for(line='A'+row -1; line >= 'A' ; line--) printf("%c", line ); printf("\n"); }</span>
完整代码:
我这个代码没有做输入条件筛选,应该是可以做 字母输入判定, 大小写判定,然后设计分支来处理不同情况,后面再来完善这些功能。
<span style="font-size:14px;">#include<stdio.h> int main(void) { int row ,line ,bl; char ch; scanf("%c", &ch); for(row=0 ; row<=ch-'A'; row++) { for(bl=(ch-'A'-row-1); bl>=0 ; bl--) printf("_", bl ); for( line = 'A' ; line <='A'+row ; line++) printf("%c", line ); for(line='A'+row -1; line >= 'A' ; line--) printf("%c", line ); printf("\n"); } return 0; }</span>
相关文章推荐
- C++ primer读书笔记 5
- C语言Printf格式
- [c++]MFC学习
- 华为机试2013届上机--子串分离
- C++中的指针、数组指针与指针数组、函数指针与指针函数
- C++中的指针、数组指针与指针数组、函数指针与指针函数
- 关于c++的STL的学习与再认识(二)
- C语言陷阱与缺陷(5)
- 典型动态规划之Always On the Run
- 输入m和n,从1,2,3...n中找出和为m的组合
- 输入m和n,从1,2,3...n中找出和为m的组合
- C++堆和栈的区别
- VC++中的.ncb文件
- 几个论坛上看到的2015小米笔试题 分类: C/C++ 2015-07-29 10:51 15人阅读 评论(0) 收藏
- 【C++】求当前exe的运行路径
- 【C++】求数组中所有元素的排列或组合
- CPP
- c++字符串
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- unique 函数 c++