空心等腰梯形的问题
本帖最后由 bin554385863 于 2019-5-9 21:00 编辑#include <stdio.h>
/*打印一个上底和高都是a得空心等腰梯形*/
#include "stdio.h"
void main()
{
int a, b, c, d, e;
scanf("%d", &a);
b = a;
for (c = 1; c <= a; c++)
{
for (d = 1; d <= a - c; d++)
printf(" ");
for (e = 1; e <= b; e++)
if (c == 1 || c == a)
printf("*");
else if (e == 1 || e == b)
printf("*");
else
printf(" ");
b = b + 2;
printf("\n");
}
}
-----------------------------------------------------------------------------------
atfhn4.r4y' '--stdout=Microsoft-MIEngine-Out-vlgmwyhv.xtt' '--stderr=Microsoft-MIEngine-Error-i0sszpr0.g2p' '--pid=Microsoft-MIEngine-Pid-jwkqd2kq.jch' '--dbgExe=E:\MingGW\bin\gdb.exe' '--interpreter=mi'
5
*****
* *
* *
* *好吧,图形变形了,但确实是打印出来空心等腰梯形
*************
PS E:\Administrator\Documents\Visual Studio 2019>
---------------------------------------------------------------------------
谁能帮我分析下为什么上面的代码会打印出空心等腰梯形?看不懂. 你要提出具体的疑问,不能这么笼统,你不会连问题都问不出来吧? jackz007 发表于 2019-5-9 22:21
你要提出具体的疑问,不能这么笼统,你不会连问题都问不出来吧?
for (d = 1; d <= a - c; d++)
这一句我看不懂 本帖最后由 jackz007 于 2019-5-9 23:27 编辑
就是依靠这个循环语句让每行打印出不同的空格数,从而定位到第一个 '*' 字符的位置。
假设 a = 8
for (c = 1 ; c <= a ; c ++) { // a = 8 = 总行数, 总共循环 8 次, c = 当前行号
for (d = 1 ; d <= a - c ; d ++) printf(" ") ;// 第 1 行, c = 1 , 循环 7 次 打印 7 个空格
// 第 2 行, c = 2 , 循环 6 次 打印 6 个空格
// 第 3 行, c = 3 , 循环 5 次 打印 5 个空格
// 第 4 行, c = 4 , 循环 4 次 打印 4 个空格
// 第 5 行, c = 5 , 循环 3 次 打印 3 个空格
// 第 6 行, c = 6 , 循环 2 次 打印 2 个空格
// 第 7 行, c = 7 , 循环 1 次 打印 1 个空格
// 第 8 行, c = 8 , 循环 0 次 打印 0 个空格
jackz007 发表于 2019-5-9 23:23
就是依靠这个循环语句让每行打印出不同的空格数,从而定位到第一个 '*' 字符的位置。
{:5_109:}谢
页:
[1]