| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 826 人关注过本帖
标题:有意思的顺转数组输出
只看楼主 加入收藏
wang155423
Rank: 6Rank: 6
等 级:侠之大者
帖 子:216
专家分:408
注 册:2011-9-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
有意思的顺转数组输出
今天看到的一个研究生复试题目:这能写出任意n的程序吗,能给个思路吗?谢谢
顺转数组
输入一个数字n,输出一个n阶顺转数组。。。
如输入:5
输出:
1   2  3  4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
搜索更多相关主题的帖子: 研究生复试 
2013-03-17 21:09
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
收藏
得分:20 
不就是螺旋方阵吗,楼主自己看
#include <stdio.h>
#define N 100
main()
{
    int a[N][N],i,j,k=0,m,n;
    printf("please enter n(n<100):\n");
    scanf("%d",&n);
    if(n%2==0)  m=n/2;
    else m=n/2+1;
    for(i=0;i<m;i++)
    {
        for(j=i;j<n-i;j++)
        {k++;a[i][j]=k;}
        for(j=i+1;j<n-i;j++)
        {k++;a[j][n-i-1]=k;}
        for(j=n-i-2;j>=i;j--)
        {k++;a[n-i-1][j]=k;}
        for(j=n-i-2;j>=i+1;j--)
        {k++;a[j][i]=k;}
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        printf("%5d",a[i][j]);
        printf("\n");
    }
}
2013-03-17 22:08
小xiong
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:388
专家分:1722
注 册:2013-2-8
收藏
得分:0 
呵呵,学习啦
2013-03-18 19:39
wang155423
Rank: 6Rank: 6
等 级:侠之大者
帖 子:216
专家分:408
注 册:2011-9-4
收藏
得分:0 
回复 2楼 tompobing
谢谢了
2013-03-22 18:24
wlguyu1985
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-3-22
收藏
得分:0 
#include <stdio.h>



int main()
{
    int n;
    int a[100][100]={0};
    printf("input num:");
    scanf("%d",&n);

    int t=n/2+n%2;        //t 表示轮数
    int i=0,j=0,k=0;
    int temp=1;  //用来计值
    for(k=0;k<t;k++)
    {
        i=k;j=k;
        
        while(j<n-k)
        {
            
            a[i][j]=temp++;
            j++;
        }
        j--;temp--;
        
        while(i<n-k)
        {
            
            a[i][j]=temp++;
            i++;
        }
        i--;temp--;

        while(j>=k)
        {
            
            a[i][j]=temp++;
            j--;
        }
        j++;temp--;
        while(i>=k+1)
        {
            
            a[i][j]=temp++;
            i--;
        }
        i++;

    }


    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            printf("%3d",a[i][j]);
        printf("\n");
    }
}
————————————————这两天准备复试,刚写了一个,看能不能用的上!

[ 本帖最后由 wlguyu1985 于 2013-3-23 13:20 编辑 ]
2013-03-23 13:19
w5688414
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-9-18
收藏
得分:0 
谢谢,跟我提供了一个思路,这是我的代码
#include <stdio.h>
#define N 100

int main(){
  int n;
  scanf("%d",&n);
  int a[N][N];
  int i,j;
  int m;
  int k=0;
  if(n%2==0) m=n/2;
  else m=n/2+1;
  for(i=0;i<m;i++){
    for(j=i;j<n-i-1;j++){
      k++;a[i][j]=k;
    }
    for(j=i;j<n-i-1;j++){
      k++;a[j][n-i-1]=k;
    }
    for(j=n-i-1;j>i;j--){
      k++;a[n-i-1][j]=k;
    }
    for(j=n-i-1;j>i;j--){
      k++;a[j][i]=k;
    }
  }

  if(n%2==1){
    k++;
    a[n/2][n/2]=k;
  }

  for(i=0;i<n;i++){
    for(j=0;j<n;j++){
      printf("%5d",a[i][j]);
    }
    printf("\n");
  }
  return 0;
}
2016-03-08 21:23
快速回复:有意思的顺转数组输出
数据加载中...
 
   



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

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