| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 490 人关注过本帖, 1 人收藏
标题:一个奇数宫格问题,与大家共勉!
只看楼主 加入收藏
wu10045125
Rank: 1
来 自:江西抚州
等 级:新手上路
帖 子:15
专家分:0
注 册:2011-10-17
结帖率:50%
收藏(1)
 问题点数:0 回复次数:2 
一个奇数宫格问题,与大家共勉!
就是横、竖、斜相等

#include"stdio.h"
#include"malloc.h"


void main()
{
   int n,m,j,*elem;
   
   printf("输入宫格数(奇数):");
   scanf("%d",&n);
   m=n*n;
   elem=(int*)malloc(n*n*sizeof(int));//开辟可以存储宫格数的数组大小
   for(int*p=elem;p<elem+m;p++)
       *p=0;   //将所有的位置放置0
       p=elem;  //将p指向数组的首地址
   j=((n-1)/2)*n; //找到中间的位置
   int i=1;
  
   *(p+j)=i++;  //中间放置1


   while(i<=m)  // 循环次数
   {
       if((j+1)%n == 1 || (j+1)>=2&&(j+1)<=n)  //位置是不是宫格的第一行或第一列
       {
              if((j+1)%n == 1 && j !=0 )   // 位置是不是第一列,但不是第一个位置
   
              {
                   j=j-1;
                  *(p+j)=i++;
                 
              }
   
              if(j == 0)    // 如果是第一个位置则将其位置后移一个,将数值放入其中
              {
                  j=j+1;
                  *(p+j)=i++;
                  
              }
              if((j+1)>=2 && (j+1)<=n)   // 位置是不是在第一行的第一个到第一行的最后一个
              {
                    j=(n-1)*n+j-1;  // 是,就将j转到第n-1行,然后在定位到第n行的j-1列

                      if(*(p+j) == 0) //看是否j位置是不是有数存入
                         *(p+j)=i++;
                      else
                      {
                          j=j-(n-1)*n+2;  //如果有数,则在原j位置后一个位置存入数
                         *(p+j)=i++;
                        
                      }
              }
       }
       else          // 位置j不在第一行和第一列,就在j位置的左上方插入数
       {
            j=j-n-1;
            if(*(p+j)==0)
               *(p+j)=i++;
            else      // 如果有数,则在原位置后一个插入数值
            {
               j=j+n+2;
               *(p+j)=i++;

            }
       }
   }//while循环结束
    int k=1;
   for(p=elem;p<elem+m;p++,k++) //打印输出
   {   
       printf("%-6d",*p);
          if(k%n == 0)
           printf("\n\n\n");

   }

   getchar();
   getchar();
}
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: void include 
2012-03-05 23:25
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
就是传说中的幻方吧。 也可以开始把1摆在 (0 ,0)位置。

梅尚程荀
马谭杨奚







                                                       
2012-03-06 09:13
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
右一上一 受阻下一

                                         
===========深入<----------------->浅出============
2012-03-06 17:41
快速回复:一个奇数宫格问题,与大家共勉!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017992 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved