一道简单的字母循环金字塔问题
来源:互联网 发布:java中文乱码解决总结 编辑:程序博客网 时间:2024/06/05 12:04
一道简单的字母循环金字塔问题
标签(空格分隔): 编程错题
【原题】
要求用户从键盘输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:
A
ABA
ABCBA
ABCDCBA
程序运行结果示例1:
Please input a capital:
D↙
____A
___ABA
__ABCBA
_ABCDCBA
这道题很简单,思路一看就懂,但是花费了我几乎三个小时的时间。为什么?因为编程时我思维太乱了,而且因为我没有设置注释或者一眼就能看懂的变量名字,导致我断断续续编程时每次都忘了上一次的思路,所以耗费了大量的时间。
我的解法如下:
#include <stdio.h>#include <stdlib.h>int main(){ int i,n,m,p,q=0,t; char c; printf("Please input a capital:\n"); scanf("%c",&c); n=c-64; for (i=0;i<n;i++) { for (m=0;m<n-i;m++) //每一行控制空格数,i是第几行 { printf(" "); } q=0; //此时的m=n-i; while (q<=i) //对每一行字母序列的处理 { printf("%c",65+q); q++; //实现顺序,每次加1,保证顺序最后一个字符是最大值 } t=i; while (t>0) { printf("%c",64+t); t--; } if (q==i+1) { /*q--; for (;q>0;q--) printf("%c",65+q); */ printf("\n"); } } return 0;}
显然,该程序用嵌套循环。行循环计数器变量i,每行向后循环计数器变量m,我从刚开始就没有明确决定要定义他们两个,最后我才发现他们的重要性。这说明:编写循环程序时,一定要重点注意计数器和计数器值,不要胡乱修改计数器的值,不要忘记嵌套循环中计数器值的归零;当需要计数器值做处理时,定义一个新变量,将计数器值赋给它,处理新变量,而不是直接处理计数器。我就在这里吃了个大亏,一开始就没明确计数器的重要性,所以瞎定义了一堆变量,后来都给我删了。
还有,要注意用字符型表示来简单化思考。如果你在程序里不写ASCII码,里面的65都用’A’代替,不是可视性更好吗?用人脑算起来更简单吗?你为什么非要用ASCII码?究其原因,还是因为你对字符型常量不熟啊,你还是缺乏练习。
最后,对这种格式化、结构化循环问题,一定要注意他们每次循环的计数器的量与输出格式之间的关系,这是一个很大的突破点,一定要注意。这道题里面就是,行数i,则最大输出到i+1个字母,在最大输出之后最多倒序输出i个字母,这些小规则,当时我都没想到,因此浪费的时间实在是太多了,在此引以为戒。
- 一道简单的字母循环金字塔问题
- 简单的大小写字母转换-循环
- 字母金字塔
- 字母金字塔
- 字母金字塔
- 一道有趣的数组越界、循环问题
- C++动态规划算法之数字金字塔【USACO TRAINING】:一道经典的数塔问题
- 金字塔循环
- java--一道简单的括号匹配问题
- java版的双重循环数字金字塔
- 字母金字塔c语言
- 蓝桥杯 字母金字塔
- 打印字母金字塔
- 无聊时,看到的字母金字塔编程题
- C语言 数字金字塔;字母金字塔
- 字母金字塔(类同数字金字塔)
- 一道有趣的循环题目
- 一道简单的算法问题--数学的魅力
- 条件语句
- 菜鸟学python(02)—— 基础笔记整理
- 在输入框点击空格键的时候,判断输入框的值为空
- 设计模式(二)------设计模式六大原则(1):单一职责原则
- 循环
- 一道简单的字母循环金字塔问题
- 图像中的插值
- 一道铺地砖问题,关于向上取整算法。
- 西瓜书9.10:实现自动确定聚类数目的k_means算法
- opengl 基础code实例
- 用getchar和%C输入字符型数据
- 用scanf函数检验输入非法字符
- struts2中 ServletActionContext与ActionContext区别
- 运算精度丢失和数值丢失问题