经典c程序(0022)---杂乱的5X5的数组变盘蛇形

本文介绍了一段C语言代码,用于将一个5x5的矩阵进行特定的排列转换,展示了算法实现和逻辑流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**************************************************************************************
* Function     : test
* Create Date  : 2014/04/18
* Author       : NTSK13
* Email        : beijiwei@qq.com
* Copyright    : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。
*                任何单位和个人不经本人允许不得用于商业用途
* Version      : V0.1                    
***************************************************************************************                    
经典c程序(0022)
          
题目:把一个杂乱的5X5的数组  转换成一下形式,例子:

4  25 15  8  7         1  2  3  4  5
13 17 21  3  5        16 17 18 19  6
1  9  14 11 24   ==>  15 24 25 20  7
23  2  6 19 20        14 23 22 21  8
10 12 18 16 22        13 12 11 10  9

**************************************************************************************/  
#include<stdio.h>  
            
#define MY_FUNC  1  
#if MY_FUNC  
      

#define M 5
int data[M][M]={0};

void sort_array();
int main()  
{  
    int i=0,j=0,k=0,ret=0,m=0,result=0,count=0,flag=0;  //i,j 作为循环变量;k 作为自增变量 ; ret 作为函数返回值;
                                                        //m作为输入变量;result作为输出结果;count 计数变量;flag作为标志位
    freopen("input.txt","r",stdin);

    for(i=0;i<M;i++)
    for(j=0;j<M;j++)
        scanf("%d",&data[i][j]);

    //for(i=0;i<M;i++)
        //for(j=0;j<M;j++)
            sort_array();

    
    for(i=0;i<M;i++){
        for(j=0;j<M;j++){
            printf("%d\t",data[i][j]);
            fflush(stdout);//修复Eclipse printf()不能显示的小bug
        }
        printf("\n");
        fflush(stdout);//修复Eclipse printf()不能显示的小bug
    }
    return ret;  
}  
   
void sort_array()
{
    int start=1,right=0,down=1,left=0,up=0;
    int i=0,j=0,k=-1,m=0;
    while(data[M/2][M/2] != M*M)
    {
        while(right<M-i)//to right
        {
            data[i][right]=start++;
            right++;
        }
        right--;

        down=i+1;
        while(down<M-j)//to down
        {
            data[down][right]=start++;
            down++;
        }
        down--;

        left=right-1;
        while(left>k)//to left
        {
            data[down][left]=start++;
            left--;
        }
        left++;

        up=down-1;
        while(up>m)//to up
        {
            data[up][left]=start++;
            up--;
        }
        up++;

        i++;j++;k++;m++;
        right=left+1;
        down=up;
    }
}
/********************************************my function end**************************************************/  
#else  
       
int main()  
{  
   
        
    return 0;  
}
 
#endif  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值