回 帖 发 新 帖 刷新版面

主题:程序结果显示一堆乱码,请指教

#include"stdio.h"
void main()
{
    int i,j,k=0,n,m;
    int a[10][10];
    printf("请输入数字\n");
    scanf("%d",&n);
    if(n%2==0)
        m=n/2;
    else
        m=n/2+1;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            k++;
            a[j][i]=k;
        }
        for(j=i+1;j<n;j++)
        {
            k++;
            a[n-i-1][j]=k;
        }
        for(j=n-i-2;j>=i;j--)
        {
            k++;
            a[j][n-i-1]=k;
        }
        for(j=n-i-2;j>i;j--)
        {
            k++;
            a[j][n-i-1]=k;
        }
    }
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    printf("%d\n",a[i][j]);
}


这是想得到的结果
                       1 12 11 10
                       2 13 16  9
                       3 14 15  8
                       4   5   6  7 

但是上边那个程序输出一堆乱码






回复列表 (共4个回复)

沙发


我测试了一下,没什么问题,你输入是多少

板凳


请输入数字
6
    1   21   36-858993460-858993460   16
    2   22   37-858993460   33   20
    3   23   38   45   35   19
    4   24   39   42   43   44
    5   25   40   28   29   30
    6   26   41    9   10   11
Press any key to continue
不知道咋搞,谢谢了

3 楼

主要是这里吧。注意对称就对了。。
for( i = 0; i < m; i++ )
    {
        for( j = i; j < n-i-1; j++ )
        {
            k++;
            a[j][i]=k;
        }
        for( j = i; j < n-i-1; j++ )
        {
            k++;
            a[n-i-1][j]=k;
        }
        for( j = n-i-1; j > i; j-- )
        {
            k++;
            a[j][n-i-1]=k;
        }
        for(j=n-i-1;j>i;j--)
        {
            k++;
            a[i][j]=k;
        }
    }
还有,如果我这么写,当m%2!=0时,a[m-1][m-1] = n * n;要加上的。

4 楼

#include"stdio.h"
#include<cstring>
void main()
{
    int i,j,k=0,n,m;
    int a[10][10];
    while(1){
        printf("请输入数字\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[j][i]=k;
                
            }
            for(j=i+1;j<n-i;j++)
            {
                k++;
                a[n-i-1][j]=k;
                
            }
            
            for(j=n-i-2;j>=i;j--)
            {
                k++;
                a[j][n-i-1]=k;
                
            }
            
            for(j=n-i-2;j>i;j--)
            {
                k++;
                a[i][j]=k;
                
            }
        }
        for(i=0;i<n;i++){
            for(j=0;j<n;j++){
                printf("%d ",a[i][j]);
            }
            printf("\n");
        }
        memset(a,0,n*n);
        k=0;
    }
    
}

。。。你写的还是少。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册