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

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

fang8705 发布于 2007-10-21 09:19, 286 次点击
#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]);
}
4 回复
#2
zacom2007-10-21 10:25

可能因为你定义的是unsigned类型,即不能保存数值中的负号的原因把

#3
C语言的深度2007-10-23 11:13
unsigned  无符号型`
#4
重飞2007-10-23 11:26
不明白你写的程序的思路是什么,只好这样该了
#include<stdio.h>
void main(){
unsigned m=1,n,c=0,i,j;
int 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++){
for(j=0;j<n;j++){
printf("%d",a[i][j]);
printf(" ");
}
printf("\n");
}
}
#5
linsd20012007-10-23 11:40
回复:(重飞)不明白你写的程序的思路是什么,只好这...
你的这个程序是给一个二维数组从1到n*n进行赋值,而且是对称着进行赋值,那么这样的赋值要注意一个问题,那就是要事先知道你所赋值的数组的维数,这里死循环3楼说得不错,而你大概的想法是:控制循环不能是负数。另外,如果想做一个动态的赋值程序,你必须对维数进行一定的处理,但你这个程序处理起来好象有点困难。
1