注册 登录
编程论坛 新人交流区

[求助]为什么是死循环啊??????

fang8705 发布于 2007-10-21 15:13, 514 次点击
#include<stdio.h>
main()
{
unsigned m=1,n,c=0,i,j;
long a[100][100];
printf("\nPlease input n:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
a[i][j]=m++;
for(i+=1;i<n;i++)
a[i][j]=m++;
for(j=n-2-c;j>c-1;j--)(这步为什么是死循环啊?)
a[i][j]=m++;
for(i=n-2-c;i>c-1;i--)
a[i][j]=m++;
c++;
while(a[i][j]=n*n)
break;
}
for(i=0;i<n;i++)
printf("%d",a[i][j]);
}
5 回复
#2
DaTun2007-10-21 16:07

我想这个程序应该是矩阵输入输出,
但在定义整数类型时定义成了无符号的,中间的C-1成了负数超出范围,让它和一个i,j比大小是错的,第一次它就会把c-1认成-1的补码好像是65535
改完后,对a[i][j]的赋值:第一次j在有一步是-1赋值后n的值好像就变了
我也是建议一下

#3
fang87052007-10-21 21:38
谢谢二楼的高手大哥,不过我想应该写的详细一点,恕小弟愚笨,不能理解。
#4
aktsoso2007-10-21 22:43

没看懂,是不是我太笨了。

#5
yuwei50002007-10-21 22:53

把那个c-1该成c 试试

#6
tcxiang2007-10-21 23:01
c-1成负数了..应该是这个问题吧
1