本帖最后由 大虾挂了 于 2013-10-1 18:56 编辑
手头暂时没有VS,说下我的想法。
先看空格数量的关系,假设最后一行没有空格,那么每一行的空格数应该是总行数-当前行数。
程序提示用户输入一个1到26之间的数字决定金字塔的层数。把这个输入保存给row(总行数)
建立一个双层for循环,
外层循环,参数为i,每次循环自加1。次数就是row,负责打印A前面的空格和最后的换行符。
空格数量也就是前面说的row-i;内层循环结束后增加换行符。
内层循环决定每一行字母的打印。
内层循环有两种写法。
方法一:
内层循环可以分成两个循环来写:
①参数为j。j初值为0,每次j++,循环次数为row-1,循环内容为显示char类型:‘A’+j。
②参数为j,j初值为row-2,每次j--,循环次数为row-2,循环内容为显示char类型:‘A’+j
方法二:
内层循环直接用一个来写,只不过要在外面先定义一个int类型变量num,初值为65(也就是A的ASCII码)
循环参数为j,初值为0,循环次数为2*row-1次(1,3,5,7,9.。。。。),每次i自加1。
增加判断:
如果j<row-1,先显示num的值,然后num自加1.
如果j>=row-1,先显示num的值,然后num自减1.
这里可能比较奇怪,举个列子,第四行内层循环应该输出ABCDCBA。当j<4-1,也就是j<3的时候(0,1,2),每次num自加1,打印出了ABC。j=3的时候,num内应该存储的是D(最后一次输出完C自加1),此时满足条件二,所以先输出num,也就是D,然后num自减1,下次就会输出C,以此类推直到完成2*4-1次循环。刚好输出所有结果ABCDCBA
手头暂时没有VS,我自己先尝试写一下代码。一会儿发上来。
|