CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

螺旋输出数字 用你熟悉的语言编写一个打印程序输入一个自然数N后,打印1至N的所有自然数,打印结果是环绕方式,效果如下:

楼主Rochery(Rochery)2005-04-11 17:55:31 在 C/C++ / C语言 提问

用你熟悉的语言编写一个打印程序输入一个自然数N后,打印1至N的所有自然数,打印结果是环绕方式,效果如下:    
  21 ... N-1 N  
  20 7 8 9 10  
  19 6 1 2 11  
  18 5 4 3 12  
  17 16 15 14 13  
  问题点数:15、回复次数:11Top

1 楼Rochery(Rochery)回复于 2005-04-11 17:56:43 得分 0

题目如上,多谢指点,急用阿Top

2 楼Rochery(Rochery)回复于 2005-04-11 18:14:50 得分 0

哭!!!!!!怎么没有回答阿   ??????????不会的   帮忙顶下   也   好阿   !!!!!!!!!!!,谢谢!!!!!!!!!!!!!Top

3 楼Rochery(Rochery)回复于 2005-04-11 18:16:44 得分 0

上面说的   不是很清楚!又   想要看图的请加qq:4067756                          
  在线等结果的   阿   。Top

4 楼Kid4you(Kid4you)回复于 2005-04-11 18:26:14 得分 0

晚上给你给程序.Top

5 楼Rochery(Rochery)回复于 2005-04-11 18:37:10 得分 0

to::   Kid4you(Kid4you)  
  谢谢,要看图吗?Top

6 楼Rochery(Rochery)回复于 2005-04-11 20:40:34 得分 0

Kid4you(Kid4you)大哥怎么样   阿   ?急等阿   !Top

7 楼Kid4you(Kid4you)回复于 2005-04-11 22:43:01 得分 0

回来了,马上写,高中做过:>Top

8 楼hcj2002(流浪者·躬自厚而薄责于人 )回复于 2005-04-11 23:12:30 得分 5

螺旋矩阵  
   
  http://blog.csdn.net/hcj2002/archive/2005/01/06/242380.aspxTop

9 楼jackgwf()回复于 2005-04-11 23:21:48 得分 10

#include<iomanip.h>  
  void   main()  
  {  
  int   i,k,n,m,x0,y0,x1,y1,z=0;  
  while(1){  
  cout<<"请输入行数(行数>0):";  
  cin>>n;  
  if(n>0)  
  break;}  
  int   a[20][20];  
  m=n*n;  
   
  if(n%2==0){  
  i=0,k=0,x1=n,y1=n,x0=0,y0=0;  
  while(1){  
              for(k;k<y1;k++)  
  a[i][k]=m--;  
  y1--,i++,k--;  
      for(i;i<x1;i++)  
      a[i][k]=m--;  
      x1--,k--,i--;  
      for(k;k>=y0;k--)  
      a[i][k]=m--;  
      y0++,i--,k++;  
      for(i;i>x0;i--)  
      a[i][k]=m--;  
      x0++,k++,i++;  
  if(m<1)  
  break;}  
  }  
  if(n%2!=0){  
  i=n-1,k=n-1,x1=n,y1=n,x0=0,y0=0;  
  while(1){  
         
      for(k;k>=y0;k--)  
      a[i][k]=m--;  
      y0++,i--,k++;  
      for(i;i>=x0;i--)  
      a[i][k]=m--;  
      x0++,k++,i++;  
            for(k;k<y1;k++)  
  a[i][k]=m--;  
  y1--,i++,k--;  
      for(i;i<x1-1;i++)  
      a[i][k]=m--;  
      x1--,k--,i--;  
  if(m<1)  
  break;}  
  }  
  for(i=0;i<n;i++)  
  {  
  for(k=0;k<n;k++)  
  cout<<setw(4)<<a[i][k];  
  cout<<endl;  
  }  
  cout<<endl;  
  }  
   
  Top

10 楼Kid4you(Kid4you)回复于 2005-04-13 13:43:26 得分 0

#include   <iostream.h>  
  #include   <math.h>  
   
  int   a[100][100];  
   
  void   main()  
  {  
  int   n,   c,   i   =   50,   j   =   50,   temp   =   1,   k   =   1,   num   =   1;  
   
  cin   >>   n;  
  // 模拟螺旋填数  
  a[50][50]   =   1;  
  for   (c=1;   c<=(int)sqrt(n)-1;   ++c)  
  {  
  k   =   temp;  
   
  while   (k>0)   //向右  
  {  
  ++j;  
  a[i][j]   =   ++num;  
  --k;  
  }  
  k   =   temp;  
   
  while   (k>0)   //向下  
  {  
  ++i;  
  a[i][j]   =   ++num;  
  --k;  
  }  
  k   =   ++temp;  
   
  while   (k>0)   //向左  
  {  
  --j;  
  a[i][j]   =   ++num;  
  --k;  
  }  
  k   =   temp;  
   
  while   (k>0)   //向上  
  {  
  --i;  
  a[i][j]   =   ++num;  
  --k;  
  }  
   
  ++temp;  
  }  
  // 输出  
  for (int   ii=i;   ii<=i+(50-i)*2+1;   ++ii)  
  {  
  for(int   jj=j;   jj<=j+(50-j)*2+1;   ++jj)  
  {  
   
  if   (a[ii][jj]>0   &&   a[ii][jj]<=n   )  
  {  
  cout   <<   a[ii][jj]   <<   "   ";  
  if   (a[ii][jj]<10) //   多输出一个空格站位  
  cout   <<   "   ";  
  }  
  else   if(a[ii][jj]   >   n)   {cout   <<   "       ";}    
  }  
  cout   <<   endl;  
  }  
   
  }Top

11 楼Rochery(Rochery)回复于 2005-04-13 23:59:42 得分 0

谢谢大家!!!!!!!!!!!谢谢hcj2002(流浪者·躬自厚而薄责于人)   (毕业ING   &   求职ING)   ,谢谢jackgwf(),   谢谢Kid4you(Kid4you)   。hcj2002(流浪者·躬自厚而薄责于人)   (毕业ING   &   求职ING)   也在找工作啊,我也是啊,好难找啊,我在这里是新手啊,请大家多多指教,Kid4you(Kid4you)对不起啊,我管理帖子的时候你的程序还没有贴上来,我就把分数分给jackgwf和hcj2002(流浪者·躬自厚而薄责于人)   (毕业ING   &   求职ING)   了啊所以虽然你的是最正确的了但是没有分给了,很遗憾啊。Top

相关问题

  • 求N个不连续自然数的所有排列
  • N个自然数的全排列算法
  • 我用Foxmail收sohu的邮件时,怎么总到DELE n(n为一自然数)时就停止收邮件?
  • 输入一个自然数n求n! ,同时统计结果中有多少个0
  • 如何判断n个自然数中相同个数最多的数是多少?
  • 请问VB怎么用辗转相减法求两个自然数M,N的最大公约数和最小公倍数?
  • 关于时间复杂度O的定义,书上这样的:如果存在正的常数和自然数N0,使得当N>=N0时有f(N)<=Cg(N),则称函数f(N)当N充分大时上有界,记为f(N)=O(
  • 关于自然数的内容
  • 一个大于10的自然数,最后一位数值移到最前一位.得到一个新的自然数.新的自然数刚好是这个自然数的两倍.求此自然数为?
  • 一个大于10的自然数,最后一位数值移到最前一位.得到一个新的自然数.求此自然数为?

关键词

  • 打印
  • 自然数
  • 螺旋
  • kid4
  • 结果
  • 阿
  • num
  • temp
  • ii

得分解答快速导航

  • 帖主:Rochery
  • hcj2002
  • jackgwf

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...

社区焦点:

教你怎样用C#搞笑整人
最懒惰的程序员写的Cache
程序员如何掌握专业英语
Java栈与堆
分享:让人懊恼的面试
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo