C语言入门一问 我晕了都。

[复制链接]
查看11 | 回复4 | 2010-7-23 23:28:19 | 显示全部楼层 |阅读模式
//想画个围棋棋盘,纵横各19条线//
#include
#include
#include
void main()
{
int i,j,x[18],y[18];
for(i=0;i<19;i++)
x=30*i+10;

for(j=0;j<19;j++)
y[j]=10+j*30;//我单步调试,发现此处值就不对了,循环到i=18时,j=520了,倒//
printf("\n%d,%d\n",x[17],y[18]);
initgraph(1024,768);
for(i=0;i<19;j++)
line(10,y[j],x[19],y[j]);
for(j=0;j<19;i++)
line(x,10,x,y[19]);
getch();
closegraph();
}
最后的程序是错误的,无法运行。
帮忙找找错误,小弟先行谢过了。

回复

使用道具 举报

千问 | 2010-7-23 23:28:19 | 显示全部楼层
你定义了数组存储的个数为18个(x[18],y[18]),而实际上你的数组数有19个(下标0到下标18)当然会出错了!
回复

使用道具 举报

千问 | 2010-7-23 23:28:19 | 显示全部楼层
你说错了,你道题,在程序里面,i和j点关系都没,为什么会这样呢?是因为i的值不能超过18,因为你定义的x[18],所以等于18时退出了;而且应该是y[j] = 520而不是j,为什么y[j] = 520呢?是因为j等于17进入for语句的,y[j] = 10+17*30=520,当j=18时就退出了,为什么呢?是因为y[18]最大下表是17,所以你的
回复

使用道具 举报

千问 | 2010-7-23 23:28:19 | 显示全部楼层
for循环 如果 下面不加括号 那么 作用范围只在下一个 表达式结束后。I++或者J++。。你丢了 大括号
回复

使用道具 举报

千问 | 2010-7-23 23:28:19 | 显示全部楼层
学者调试会收益匪浅
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行