- UID
- 46356
注册时间2008-2-20
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 开心 2022-4-1 09:59 |
---|
签到天数: 76 天 [LV.6]常住居民II
|
本帖最后由 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("*");
- }
- }
- }
复制代码 |
|