Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124534
  • 博文数量: 52
  • 博客积分: 2200
  • 博客等级: 大尉
  • 技术积分: 580
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-08 15:00
文章分类

全部博文(52)

文章存档

2011年(1)

2009年(51)

我的朋友

分类:

2009-11-05 11:36:54

/*=============================================================
              目的:将5*5的矩阵中最大的元素放在中心,4个角放4个最小的元素,写函数实现,main函数调用
               
             算法分析:1、写一个最小值交换函数,实现四个最小元素的交换
                       2、写一个最大值交换函数
                       3、
                       4、
==============================================================
              作者:最后的村长
              时间:2009年11月5日
              工具:DEV C++ 4.9.9.2
              version:1.0
==============================================================*/

#include <stdio.h>
#include <stdlib.h>
#define N 5
/*=============================================================*/
void exchange_min(int (*p)[N],int start_row,int start_column);
void exchange_max(int (*p)[N],int row,int column);
void exchange(int *p1,int *p2);
int main()
{
    int a[N][N];
    puts("请对5*5的矩阵进行初始化:/n");
    for(int i=0;i<N;i++)
    {
            for(int j=0;j<N;j++)
            {
                    printf("/na[%d][%d]=",i,j);
                    scanf("%d",*(a+i)+j);
                    if(j%4==0)
                    printf("/n");
            }
    }
            //将四个最小的元素放到数组第一排的前四个元素

            exchange_min(a,0,0),
            exchange_min(a,0,1);
            exchange_min(a,0,2);
            exchange_min(a,0,3);
            //将矩阵中的最大值与中心互换

            exchange_max(a,2,2);
            //实现四个角与前四个元素的内容互换

            exchange(&a[0][1],&a[0][N-1]);
            exchange(&a[0][2],&a[N-1][0]);
            exchange(&a[0][3],&a[N-1][N-1]);
            //输出互换后的矩阵值

    for(int i=0;i<N;i++)
    {
            for(int j=0;j<N;j++)
            {
                    printf("/na[%d][%d]=%d",i,j,a[i][j]);
                    if(j%4==0)
                    printf("/n");
                    
            }
    }
    system("PAUSE");
    return 0;
}
        
void exchange_min(int (*p)[N],int start_row,int start_column)
{
     int *temp;
     for(int i=start_row+1;i<N;i++)
     for(int j=start_column+1;j<N;j++)
     {
             if(*(*(p+start_row)+start_column)>*(*(p+i)+j))
             {
                     temp=*(p+start_row)+start_column;
                     *(p+start_row)+start_column=*(p+i)+j;
                     *(p+i)+j=temp;
             }
     }
}

void exchange_max(int (*p)[N],int row,int column)
{
     int *temp;
     for(int i=0;i<N;i++)
     for(int j=0;j<N;j++)
     {
            if(*(*(p+row)+column)<*(*(p+i)+j))
             {
                     temp=*(p+row)+column;
                     *(p+row)+column=*(p+i)+j;
                     *(p+i)+j=temp;
             }
     }
}

void exchange(int *p1,int *p2)
{
     int *temp;
     temp=p1;
     p1=p2;
     p2=temp;
 }
      


阅读(682) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~