| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 486 人关注过本帖
标题:一个关于数组的问题呢!
只看楼主 加入收藏
燃高
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:140
注 册:2011-12-13
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
一个关于数组的问题呢!
输入数字4, 则程序输出:
1  2   3   4
12  13  14  5
11  16  15  6
10   9  8   7


#include<stdio.h>
main()
{
     int a[10][10];
     int i,j,k,t,n;
     int t1,t2;
     printf("请输入你要输入的数字\n");
     scanf("%d",&n);
     t=1;
     t1=n;
     i=0;
     t2=n;
     j=-1;
     k=0;
    while(t<=n*n)
     {
         if(j<t1-k)
            a[i][++j]=t++;
         if(i<t2-k)
             a[++i][(j-1)]=t++;
         if(j>k)
             a[(i-1)][--j]=t++;
         k++;
         if(i>k)
             a[--i][(j+1)]=t++;   
          i++;
     }
     for(i=0;i<n;i++)
     {
        for(j=0;j<n;j++)
           printf("%d",a[i][j]);
           printf("\n");      
     }
}

大家帮帮看看吧!!为什么 只能输入1 才会输出1呢  其余的都没有用呢!!
搜索更多相关主题的帖子: include 
2011-12-29 00:12
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:1 
自己不清楚问题的话,自己一步一步算下吧

我的地盘
2011-12-29 17:37
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:5 
感觉你的算法很混乱,不过我也七拼八凑了个你参考下:
#include <stdio.h>
#include <math.h>

int  main(void)
{
    int i, j, n, k = 1, m;
    int a[100][100] = {0};

    printf("Please input n:");
    scanf("%d", &n);
    for (m = 0; m < (n + 1) / 2; m++)
    {
        i = m; j = m;
         while (j <= n - 2 - m)
        {
           a[i][j] = k++;
           j++;
        }
        while (i <= n - 2 - m)
        {
           a[i][j] = k++;
           i++;
        }
        while (j > m)
        {
          a[i][j] = k++;
           j--;
        }
        while (i > m)
        {
            a[i][j] = k++;
            i--;
        }
   
    }
    a[m - 1][m - 1] = n * n;

    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
            printf("%-6d", a[i][j]);
        printf("\n");
    }
    return  0;
}


梅尚程荀
马谭杨奚







                                                       
2011-12-29 18:48
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
收藏
得分:4 
程序代码:
/*
输入数字4, 则程序输出:
1   2   3   4
12  13  14  5
11  16  15  6
10  9   8   7
*/
#include<stdio.h>
int main(void)
{
    int a[10][10];
    int i = 0, j = 0, t = 1, m, k = 0;
    printf("请输入你要输入的数字\n");
    scanf("%d",&m);

    while(t<=m*m)
    {
        a[i][j] = t++;
        switch(k)
        {
            case 0: 
                    j++;
                    if( i+j == m-1 ) //从上行转到右行拐角特征为i+j=m-1
                        k = 1;
                    break;
            case 1:
                    i++;
                    if( i == j ) //从右行转到下行拐角特征为i=j
                        k = 2;
                    break;
            case 2:
                    j--;
                    if( i+j == m-1 ) //从下行转到左行拐角特征为i+j=m-1
                        k = 3;
                    break;
            case 3:
                    i--;
                    if( i-j == 1) //从左行转到上行拐角特征为i-j=1
                        k = 0;
                    break;
        }
    }

    for(i=0;i<m;i++)
    {
        for(j=0;j<m;j++)
        printf("%5d",a[i][j]);
        printf("\n");
    }
    return 0;
}

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2011-12-29 21:08
快速回复:一个关于数组的问题呢!
数据加载中...
 
   



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

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