首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

初学者求看螺旋矩阵 输出除了第一个数 全是乱码

2012-12-30 
菜鸟求看螺旋矩阵 输出除了第一个数 全是乱码#includestdio.hvoid luoxuan(int a[][5],int m,int n)//

菜鸟求看螺旋矩阵 输出除了第一个数 全是乱码
#include<stdio.h>
void luoxuan(int a[][5],int m,int n);//螺旋函数
int main()
{
int a[5][5],m=5,n=5,i,j;
luoxuan(a,m,n);
for(i=0;i<m;i++)

{
{
for(j=0;j<n;j++)
printf("%d",a[i][j]);
}
printf("\n");
}
}
void luoxuan(int a[][5],int m,int n)
{
int right,left,down,up;
int d=1,x=0,y=0;
while(1)
{
    a[x][y]=d++;
//判断能否向着该方向行走
right=(y<n-1)&&(a[x][y+1]==0);
down=(x<m-1)&&(a[x+1][y]==0);
left=(y>0)&&(a[x][y-1]==0);
up=(x>0)&&(a[x-1][y]==0);
//行走的方向
                   if(down)
{
if(right) y++;
else x++;
}
else if(left)
{
if(down) x++;
else y--;
}
else if(up)
{
if(left) y--;
else x--;
}
else if(right)
{
if(up) y--;
else y++;
}
else break;
}
}
[解决办法]
http://blog.csdn.net/xuchao1229/article/details/8117312
http://blog.csdn.net/xuchao1229/article/details/8119261
[解决办法]

#include<stdio.h>
void luoxuan(int a[][5],int m,int n);//螺旋函数
int main()
{
int a[5][5] = {0}/*首先对数组进行初始化,如果不想初始化,就定义全局数组,编译器会对根据数组类型进行相应初始化*/,m=5,n=5,i,j;
luoxuan(a,m,n);
for(i=0;i<m;i++)

{
{
for(j=0;j<n;j++)
printf("%d",a[i][j]);
}
printf("\n");
}
}
void luoxuan(int a[][5],int m,int n)
{
int right,left,down,up;
int d=1,x=0,y=0;
while(1)
{
    a[x][y]=d++;
//判断能否向着该方向行走
right=(y<n-1)&&(a[x][y+1]==0);
down=(x<m-1)&&(a[x+1][y]==0);
left=(y>0)&&(a[x][y-1]==0);
up=(x>0)&&(a[x-1][y]==0);
//行走的方向
        if(down)
{
if(right) y++;
else x++;
}
else if(left)
{
if(down) x++;
else y--;
}
else if(up)
{
if(left) y--;
else x--;
}
else if(right)
{
if(up) y--;
else y++;
}
else break;
}
}

[解决办法]
#include <stdio.h>
#define MAXN 10
char m[MAXN+2][MAXN+2];
char d;
int x,y,k,n;
void main() {
    while (1) {
        printf("Input n(1..%d):",MAXN);
        fflush(stdout);
        rewind(stdin);
        if (1==scanf("%d",&n)) {
            if (1<=n && n<=MAXN) break;
        }
    }
    y=0  ;for (x=0;x<=n+1;x++) m[y][x]=1;
    y=n+1;for (x=0;x<=n+1;x++) m[y][x]=1;
    x=0  ;for (y=0;y<=n+1;y++) m[y][x]=1;


    x=n+1;for (y=0;y<=n+1;y++) m[y][x]=1;
    for (y=1;y<=n;y++) {
        for (x=1;x<=n;x++) {
            m[y][x]=0;
        }
    }
    x=1;
    y=1;
    k=0;
    d='D';
    while (1) {
        k++;
        if (k>n*n) break;
        m[y][x]=k;
        switch (d) {
            case 'D':
                if (0==m[y+1][x])  y++;
                else              {x++;d='R';}
            break;
            case 'R':
                if (0==m[y][x+1])  x++;
                else              {y--;d='U';}
            break;
            case 'U':
                if (0==m[y-1][x])  y--;
                else              {x--;d='L';}
            break;
            case 'L':
                if (0==m[y][x-1])  x--;
                else              {y++;d='D';}
            break;
        }
    }
    for (y=1;y<=n;y++) {
        for (x=1;x<=n;x++) {
            printf("%4d",m[y][x]);
        }
        printf("\n");
    }
}

热点排行