问题描述
解决方案
观察一下特点
1)字符串的长度为n,那么就要输出n行,且第i行的字符也就是字符串的第i个字符
2)每行的长度等于字符串的长度,除了第一行和最后一行之外,均有三个相同的字符。
3)每行有位置变化的字符,其位置从上到下在不断右移,而这个字符的前后空格数量也是一个等差数列。
这意味着一个循环就可以搞定。
由1)可知需要循环n次,那么字符串的长度n要先求出来。循环变量设置为行号line,从0到n-1。
由2)可知当line==0和line==n-1的时候需要特殊处理,先输出一个该行对应的字符(字符串[line]),然后是空格,输出的空格数量是n-2,再输出一个对应的字符。
由3)可知当line从1循环到n-2的时候,对应每行的输出数据应该是“字符1+空格1+字符2+空格2+字符3”,整行的长度为n,且字符1==字符2==字符3==字符串[line]。空格1对应的空格个数为line-1(第二行时line==1所以line-1==0也就是这个位置不会输出空格,与实际相符),空格2对应的个数为n-3-(line-1)个(同理倒数第二行时这个位置不会输出空格)。
然后你就可以循环了,处理任意长度的字符串均可,但要考虑控制台窗口的大小,太长的话输出就乱掉了。
解决方案二:
定义一个10乘10的二维矩阵,然后添加IF判断,当列数为0和9,或者行数与列数相同的时候,讲字符串中的第i个字符赋值,其余的赋值为空格,就可以了
时间: 2025-01-25 14:25:33