| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 616 人关注过本帖, 1 人收藏
标题:高难度题
只看楼主 加入收藏
spidermangw
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-8-11
结帖率:100%
收藏(1)
已结贴  问题点数:100 回复次数:4 
高难度题
根据输入数据N(4<=N<=15),编程输出如图1所示的螺旋方阵。要求:
1) 根据输入数据N(4<=N<=15),编程生成螺旋方阵。
2) 根据用户的选择,演示螺旋方阵的生成过程。
3) 把生成的螺旋方阵以文本的形式写入文件中,并能够用Windows自带的记事本查看。
    1  20  19  18  17  16
    2  21  32  31  30  15
    3  22  33  36  29  14
    4  23  34  35  28  13
    5  24  25  26  27  12
    6   7   8   9  10  11
           图1  6×6螺旋方阵
怎样解决?
搜索更多相关主题的帖子: 螺旋方阵 
2009-08-11 08:37
airhiphop
Rank: 4
来 自:江苏南通
等 级:业余侠客
帖 子:69
专家分:256
注 册:2007-11-16
收藏
得分:50 
标题党。。。
还有我不用windows怎么办??

2009-08-11 09:50
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:50 
随手写了个,最后一条没给你搞...

#include <stdio.h>
#include <windows.h>  
#include <stdlib.h>
#include <time.h>
#define N 6
int a[N][N],num;
 
void input(int i,int j)
{
 int m,n;
 system("cls");
 a[i][j]=++num;
 for(m=0;m<N;++m)
    {
     for(n=0;n<N;++n)
       if(a[m][n]!=0) printf("%4d",a[m][n]);
         else printf("    ");
     printf("\n");
    }
 printf("\n");
 Sleep(500);
 }
int main()
{
 int i=-1,j=-1,start=0,end=N;
 while((end-start)>0)
      {
       for(++i,++j;i<end;++i)
          input(i,j);
       for(--i,++j;j<end;++j)
          input(i,j);
       for(--j,--i;i>=start;--i)
          input(i,j);
       for(++i,--j;j>start;--j)
          input(i,j);
       ++start;
       --end;
      }
 system("pause");
 return 0;
}
2009-08-11 11:20
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
程序代码:
比较有意思,俺也来一个.

#include <stdio.h> 
#include <string.h> 

 
#define  MIN   4 
#define  MAX   16 
#define  IN 
#define  OUT 
#define  INOUT 
#define  OUTPUTFILE "d:\\1.txt"

const char  SPECK = ' '; 
const short int ENTER = 0x0a0d; 

 
static int CreateDraw(IN int nNum); 
static int GetInput(void); 

 
int main(int argc,char* argv[]) 
{ 
   int InputNum; 
   while(!(InputNum = GetInput())) 
   { 
      printf("输入数值越界或非法!请再次尝试。\n"); 
      fflush(stdin); 
   } 

 
   return CreateDraw(InputNum); 
} 

 
int GetInput(void) 
{ 
   int Input = 0; 

 
   printf("请输入一个介于%d到%d的整数:\n",MIN,MAX); 
   scanf("%d",&Input); 

 
   return  (Input >=MIN && Input <= MAX)?Input:0; 
} 

 
int CreateDraw(int nNum) 
{ 
   int DrawArry[MAX][MAX]; 
   int Y,Y0,i,YY,XX,j; 
   FILE* pOutPutF; 
   char Fttxt[8]; 
   int CrrentValue = 1; 

 

 
   Y=0; Y0 = nNum - 1; 
   for (i = 0;i <= nNum / 2; i++) 
   { 
      j = i; 

 
      for (YY = Y; YY <= Y0; YY++) 
      { 
         DrawArry[j][YY]=CrrentValue; 
         CrrentValue++; 
      }; 
      for (XX = j+1;XX <= Y0; XX++) 
      { 
         DrawArry[XX][Y0]=CrrentValue; 
         CrrentValue++; 
      }; 
      for (YY = Y0-1; YY >= Y; YY--) 
      { 
         DrawArry[Y0][YY]=CrrentValue; 
         CrrentValue++; 
      }; 
      for (XX = Y0-1;XX >= Y+1; XX--) 
      { 
         DrawArry[XX][Y]=CrrentValue; 
         CrrentValue++; 
      }; 

 
      ++Y; 
      --Y0; 
   } 
    
   if(!(pOutPutF = fopen(OUTPUTFILE,"wb+"))) 
   { 
       printf("创建输出文件失败,I/O错误!"); 
       return -1; 
   } 

 
   for (YY = 0;YY < nNum;YY++) 
   { 
      for (XX = 0;XX < nNum; XX++) 
      { 
         sprintf(Fttxt,"%3d",DrawArry[XX][YY]);     

 
         printf("%s ",Fttxt);          
         fwrite(Fttxt,sizeof(char),(size_t)strlen(Fttxt),pOutPutF); 
         fwrite(&SPECK,sizeof(char),1,pOutPutF); 
      } 
      printf("\n");     
      fwrite(&ENTER,sizeof(short int),1,pOutPutF); 
   } 

 
   fclose(pOutPutF); 
   return 0; 
}


[ 本帖最后由 东海一鱼 于 2009-8-11 17:30 编辑 ]

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-08-11 17:25
不是企鹅
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-8-12
收藏
得分:0 
2009-08-12 12:38
快速回复:高难度题
数据加载中...
 
   



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

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