
上QQ阅读APP看书,第一时间看更新
3.7 实验指导3-1:输出等腰梯形
使用一种符号,如‘@’、‘#’、‘*’或‘$’等,输出一个等腰梯形,在梯形的中间垂直轴线使用另一种符号,达到如下所示的效果。
*****$***** ******$****** *******$******* ********$******** *********$*********
通过实现效果看得出,图形是有规律地循环输出,需要用到循环语句。而图像由两部分构成:
□ 一部分是符号,构成梯形的主体。
□ 另一部分是空格,用来控制格式,使输出为等腰梯形。
但两部分不能分开,每一行都要有符号和空格,因此两部分的关系是并列的,可以用两个变量表示两部分的字符串。
整体的效果:梯形由5行构成,每一行又分为对称的两部分。以对称轴左侧为例,符号每一行多一个,符号数目与空格数目的和为10。两边的符号数目和即为10减去空格数,乘以2。中间轴的另一个符号需要使用条件语句,当进行到中间时改变符号,并接着进行下一个循环。
因此,对该图形的输出,首先需要确定整体循环的次数,5行的图形循环5次。
接着是内部的循环,先看空格:空格每一行少一个,总数需要递减。循环数要跟整体循环关联,否则每次循环数一样,将输出矩形的空格。因此只需将总循环数递减,即可使空格数目与总循环数相等。
再看符号,符号与空格数的关系已经明确,即(10_空格数)×2,但因中间有其他符号,可以使用条件语句在循环至中间时改变符号,并接着执行下一个循环,需要使用跳转语句continue。
每个循环都需要将变量字符串累加,但每次循环前,若字符串不为空字符,则输出结果与设想不同。因此在每一行结束时,变量字符串需要清空。
定义每一行的字符串变量trapezoid;定义空格部分字符串变量trapezoid1;定义字符部分字符串变量trapezoid2,具体代码如下:
string trapezoid=""; string trapezoid1 = ""; string trapezoid2 = ""; for (int i = 5; i >0; i--) { for (int j = i; j >0;j-- ) { trapezoid1 = trapezoid1 + " "; } for (int k =( 10 - i)*2; k >= 0; k--) { if (k == 10 - i) { trapezoid2 = trapezoid2 + "$"; continue; } trapezoid2 = trapezoid2 + "*"; } trapezoid = trapezoid1 + trapezoid2; Console.WriteLine(trapezoid); trapezoid = ""; trapezoid1 = ""; trapezoid2 = ""; }
执行结果如图3-27所示。

图3-27 等腰梯形