鱼C论坛

 找回密码
 立即注册
查看: 2328|回复: 6

再线等答案。。魔方阵问题

[复制链接]
发表于 2012-6-23 19:01:49 | 显示全部楼层 |阅读模式
50鱼币
#include<stdio.h>
int main()
{
int a[15][15],i,j,k,p,n;
p=1;
while(p==1)
{  printf("n(n=1--15):");
scanf("%d",&n);
if((n!=0) && (n<=15) && (n%2!=0))
  p=0;
}
for(i=1;i<=n;i++)
  for(j=1;j<=n;j++)
   a[i][j]=0;
  j=n/2+1;
  a[1][j]=1;
  for(k=2;k<=n*n;k++)
  {
     i=i-1;
      j=j+1;
    if((i<1) && (j>n))            //这里的if((i<1) && (j>n))    是什么意思以及包括下面的2个语句什么意思?        
  {                                       //网上百度说是看位置有没超出来,所以要拉回来,我糊涂了。。。
   i=i+2;
      j=j-1;
  }
  else                                 //这里的else是不是意思是 假如上一个数的行数为1,下一个行数就为N,上一个
  {                                     //列数为N,下一个列数应为1,列数同样+1,但是为什么里面不直接写
   if(i<1) i=n;                  // if(i=1)1=n; if(j>n) j=1;呢
   if(j>n) j=1;
  }
  if(a[i][j]==0)
   a[i][j]=k;
  else
  {
   i=i+2;                                //这里的i=i+2是不是这样理解,上一个位置有数了,所以下一个放上一个的下面
j=j-1;                                  // 上一个位置本来是i=i+1 所以要再加1. 列数没有变化 所以是j=j-1;
         a[i][j]=k;
  }
  }
  for(i=1;i<=n;i++)
  {  for(j=1;j<=n;j++)
  printf("%5d",a[i][j]);
  printf("\n");
  }
}
各位弟兄,请看好我的问题再说,要不然我真不明白,我是新手哦。。。

最佳答案

查看完整内容

http://qjb.573114.com/Blog/Html/17E0/124131.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-23 19:01:50 | 显示全部楼层
http://qjb.573114.com/Blog/Html/17E0/124131.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-23 19:13:26 | 显示全部楼层
  1. include<stdio.h>
  2. int main()
  3. {
  4. int a[15][15],i,j,k,p,n;
  5. p=1;
  6. while(p==1)
  7. { printf("n(n=1--15):");
  8. scanf("%d",&n);
  9. if((n!=0) && (n<=15) && (n%2!=0))
  10. p=0;
  11. }
  12. for(i=1;i<=n;i++)
  13. for(j=1;j<=n;j++)
  14. a[i][j]=0;
  15. j=n/2+1;
  16. a[1][j]=1;
  17. for(k=2;k<=n*n;k++)
  18. {
  19. i=i-1;
  20. j=j+1;
  21. if((i<1) && (j>n))
  22. {
  23. i=i+2;
  24. j=j-1;
  25. }
  26. else
  27. {
  28. if(i<1) i=n;
  29. if(j>n) j=1;
  30. }
  31. if(a[i][j]==0)
  32. a[i][j]=k;
  33. else
  34. {
  35. i=i+2;j=j-1;
  36. a[i][j]=k;
  37. }
  38. }
  39. for(i=1;i<=n;i++)
  40. { for(j=1;j<=n;j++)
  41. printf("%5d",a[i][j]);
  42. printf("\n");
  43. }
  44. }
复制代码
重新写一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-24 14:24:59 | 显示全部楼层
1.if((i<1) && (j>n))           这句的意思是 当i小于1   当j<n的时候 看清楚  必须同时满足这2个条件才能执行这个if语句。
2. else  找与这个else 最近的一个if 语句  意思是 如果上一个if语句不成立 不执行的话 就执行这个else 语句  懂吗。
3.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-24 18:17:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-24 18:18:23 | 显示全部楼层
丿夏夜灬彬刂 发表于 2012-6-24 14:24
1.if((in))           这句的意思是 当i小于1   当j

看我问的问题啊 晕。。。。看仔细点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-24 18:34:48 | 显示全部楼层
wangyexin 发表于 2012-6-24 11:37
http://qjb.573114.com/Blog/Html/17E0/124131.html

得  不看了 这个问题不管了,头都疼了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 11:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表