关于gotoxy()

pansiom 2004-06-19 12:15:17
输入n值,编程输出如下图形。

input
一个整数,范围在1到10之间。

output
排列成菱形的大写字符,首字符为z,以后依次为y,x...

sample input
3

sample output
z
y x
w v
u t
s

始终不明白那个gotoxy(x,y),为什么.......

#include <conio.h>
main(void)
{int i,j,k,x=10,y=10,n=1;char c[26];
c[0]=90;
for (j=0;j<26;j++)
{c[j+1]=c[j]-1;
printf("%c",c[j]);
}
clrscr();gotoxy(x,y);
printf("Game start! you can input a munber(X<0) to quit!\n");
printf("Please attention n is between 0 and 10!\n\n");

while(n >=0)
{
printf("\nplease input the number you want: ");
scanf("%d", &n);
if (n==0) {clrscr(); printf("Nothing!");}
if (n==1) {clrscr(); printf("%c",c[0]); }
if (n>1)
{clrscr();printf("%c",c[0]);
for (j=1,i=1;j<n,i<n;j=j+2,i++)
{if (i>13) break;
clrscr();
gotoxy(x-i,y+i);
printf("%c",c[j]);
}
x=x-i+1;
for (k=1;j<n-1,i<2*n-1,k<n;j=j+2,i++,k++)
{if (i>13) break;
gotoxy(x+k,y+i);
printf("%c",c[j]);
}
for (j=2,i=1;j<n,i<n;j=j+2,i++)
{if (i>12) break;
gotoxy(x-i,y+i);
printf("%c",c[j]);
}
x=x+i;
for (k=1;j<n-2,i<2*n-2,k<n;j=j+2,i++,k++)
{if (i>12) break;
gotoxy(x-k,y+i);
printf("%c",c[j]);
}

}
}
}
...全文
710 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pansiom 2004-06-20
  • 打赏
  • 举报
回复
因为这句"如果未自定义窗口,那么当前窗口缺省为整个文本屏"
我把分全给了jiangjuchuan(不爱说话)
pansiom 2004-06-20
  • 打赏
  • 举报
回复
问题结束了,欢迎继续讨论.
main()
{int l,p,n=0;
for(l=1;;l++)
{p=mm(n);
if (p<0) break;
}
}

int mm(int n)
{
int i,j,k,x=40,y=10;char c[26];
c[0]=90;
for (j=0;j<26;j++)
{c[j+1]=c[j]-1;
/* printf("%c",c[j]);**/
}
clrscr();
window(1,1,80,25);
printf("Game start! you can input a munber(X<0) to quit!");
printf("\nPlease attention n is between 0 and 10!");
printf("\nplease input the number you want: ");
scanf("%d", &n);
if (n<0) goto loop;
if (n==0) {clrscr();gotoxy(x,y); cprintf("Nothing!");}
if (n==1) {clrscr(); gotoxy(x,y);cprintf("%c",c[0]); }
if (n>1)
{gotoxy(x,y);printf("%c",c[0]);
for (j=1,i=1;j<n,i<n;j=j+2,i++)
{if (i>13) break;
gotoxy(x-i,y+i);
printf("%c",c[j]);
}
x=x-i+1;
for (k=1;j<n-1,i<2*n-1,k<n;j=j+2,i++,k++)
{if (i>13) break;
gotoxy(x+k,y+i);
printf("%c",c[j]);
}x=40,y=10;
for (j=2,i=1;j<n,i<n;j=j+2,i++)
{if (i>12) break;
gotoxy(x+i,y+i);
printf("%c",c[j]);
}
x=x+i-1;
for (k=1;j<n-2,i<2*n-2,k<n-1;j=j+2,i++,k++)
{if (i>12) break;
gotoxy(x-k,y+i);
printf("%c",c[j]);
}

}
gotoxy(35,3);
getch();
loop: return(n);


}
an9ryfr09 2004-06-20
  • 打赏
  • 举报
回复
gotoxy()的参数就是光标的坐标
leonchew 2004-06-19
  • 打赏
  • 举报
回复
gotoxy(x,y),移动屏幕光标到指定的位置(x,y)通常为定位输出做准备!
pansiom 2004-06-19
  • 打赏
  • 举报
回复
不知各位有没有看过上面的代码.
我在TC2里得到的结果很怪......
以上回复,除了"如果未自定义窗口,那么当前窗口缺省为整个文本屏"
我不知道什么东东外,其它.......
o1n 2004-06-19
  • 打赏
  • 举报
回复
那是TC里的。
在VC是用这个
SetConsoleCursorPosition(hndl, curhome);
jiangjuchuan 2004-06-19
  • 打赏
  • 举报
回复
gotoxy(x,y)说具体点就是在当前窗口内移动光标到指定位置(x,y),如果未自定义窗口,那么当前窗口缺省为整个文本屏,补充一下,光标坐标从窗口的左上角第一个字符(1,1)(在文本方式下编写窗口方式的程序,都会用到这个函数)
82553846 2004-06-19
  • 打赏
  • 举报
回复
就是定义坐标问题
pansiom 2004-06-19
  • 打赏
  • 举报
回复
#include "conio.h"
#include "stdio.h"
main()
{
int i,j,k,x=40,y=10,n=1;char c[26];
c[0]=90;window(1,1,80,25);
for (j=0;j<26;j++)
{c[j+1]=c[j]-1;
printf("%c",c[j]);
}
clrscr();gotoxy(2,2);
cprintf("Game start! you can input a munber(X<0) to quit!\n");
gotoxy(2,3);cprintf("Please attention n is between 0 and 10!\n\n");
getch();clrscr();

window(1,1,80,25);
printf("\nplease input the number you want: ");
scanf("%d", &n);
if (n==0) {clrscr();gotoxy(x,y); cprintf("Nothing!");}
if (n==1) {clrscr(); gotoxy(x,y);cprintf("%c",c[0]); }
if (n>1)
{gotoxy(x,y);printf("%c",c[0]);
for (j=1,i=1;j<n,i<n;j=j+2,i++)
{if (i>13) break;
gotoxy(x-i,y+i);
printf("%c",c[j]);
}
x=x-i+1;
for (k=1;j<n-1,i<2*n-1,k<n;j=j+2,i++,k++)
{if (i>13) break;
gotoxy(x+k,y+i);
printf("%c",c[j]);
}x=40,y=10;
for (j=2,i=1;j<n,i<n;j=j+2,i++)
{if (i>12) break;
gotoxy(x+i,y+i);
printf("%c",c[j]);
}
x=x+i-1;
for (k=1;j<n-2,i<2*n-2,k<n-1;j=j+2,i++,k++)
{if (i>12) break;
gotoxy(x-k,y+i);
printf("%c",c[j]);
}

}getch();
}

问题快结束了......

69,396

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧