theend 发表于 2010-12-26 23:52:01

关于gotoxy()打印输入任意边长的疑惑....(已解决~~!)

本帖最后由 theend 于 2010-12-29 13:51 编辑

看了Nisy大大讲的gotoxy(),
想用这个函数实现输入任意边长,按其边长打印棱形,
几本上实现了,可第一行却是全*号,
求解?共同探讨一下,多谢~~!
自己想了很久,也直接打出x,y了,可还是没明白问题出在哪?main()
{
      int len;
      int i;
      int j;
      printf("input a num.: ");
      scanf("%d",&len);
      clrscr();
      for(i = 0; i < 2*len; i++)
      {
                for(j = 0; j < 2*len; j++)
                {
                        if(j == j - i + 1 || j == i + len - 1 || j == abs(len - i) + 1 || j == 2*len - (i - len) -1)
                        {
                                        gotoxy(j,i);
                                        printf("*");
                        }
                }
      }
}仔细反复看了代码,看来还是对gotoxy()的使用理解不清,
初始化i,j要从1开始,嘿嘿。
另外:
1、for循环里的条件有错误:j == j(这里应该为len,棱形边长) - i + 1;
2、错误1条件其实与j == abs(len - i) + 1表达的内容是一致的,直接删掉错误1即可;
修正后的for循环如下:
for(i = 1; i < 2*len; i++)
{
    for(j = 1; j < 2*len; j++)
    {
      if(j == abs(len - i) + 1 || j == len + i - 1 || j == 2*len - (i-len) - 1)
      {
            gotoxy(j,i);
            printf("*");
      }
    }
}

whypro 发表于 2010-12-27 17:49:44

加油!

theend 发表于 2010-12-27 18:07:12

回复 2# whypro

嘿嘿,加油的同时,帮我探讨一下啊~~!

sosonemo 发表于 2010-12-28 15:53:32

首先for循环的条件有问题。i=0的话,终止条件应该是i<2*len-1,j也同样。建议从1开始。。
其次,算法部分的几个表达式看了半天没看懂。。。如果可以的话,解释一下每个表达式的含义吧。代码给别人看的话要多写注释。
同是新人,共同努力!

theend 发表于 2010-12-29 12:54:41

首先for循环的条件有问题。i=0的话,终止条件应该是i
sosonemo 发表于 2010-12-28 15:53 https://www.chinapyg.com/images/common/back.gif

感谢提醒,看了之后茅塞顿开啊,嘿嘿
页: [1]
查看完整版本: 关于gotoxy()打印输入任意边长的疑惑....(已解决~~!)