| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 648 人关注过本帖
标题:输入一个五维矩阵,然后将其中最小的四个元素放到矩阵的四个角,然后输出矩 ...
只看楼主 加入收藏
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
结帖率:96.23%
收藏
已结贴  问题点数:10 回复次数:3 
输入一个五维矩阵,然后将其中最小的四个元素放到矩阵的四个角,然后输出矩阵。求指点。。
#include<stdio.h>                                 
void main()
{
int a[5][5],(*p)[5],i=0,j=0,b[25],k=0,m=0;   真心求指点啊,弄不会呀。。。各种伤心。。
  p=a;
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
            scanf("%d",*(p+i)+j);   输入矩阵
        for(i=0;i<5;i++)
            for(j=0;j<5;j++)
                printf("%d",*(*(p+i)+j));将最初的矩阵显示出来。
            printf("\n");
            for(i=0;i<5;i++)
                for(j=0;j<5;j++)
                    b[5*i+j]=a[i][j];   将五维矩阵的值送到一个一维的矩阵。
                for(k=0;k<25;k++)
                    printf("%d",b[k]);
                printf("\n");
                for(k=0;k<24;k++)
                {    for(m=k+1;m<25;m++)
                    {
                        int temp;
                        if(b[k]>b[m])
                            temp=b[m];
                        b[m]=b[k];
                        b[k]=temp;
                    }
                }                           将这个矩阵由小到大的顺序进行排列。从而b[0]-b[3]是这个矩阵中最小的四个元素。
            for(k=0;k<25;k++)
                    printf("%d",b[k]);
                for(i=0;i<5;i++)               将这四个元素放置在矩阵的四个角。
               {    for(j=0;j<5;j++)
                    {
                        int temp1,temp2,temp3,temp4,temp5;
                        if(*(*(p+i)+j)==b[0])
                            temp1=*(*(p+i)+j);
                            *(*(p+i)+j)=(*(*p));
                            (*(*p))=temp1;
                         if(*(*(p+i)+j)==b[1])
                            temp2=*(*(p+i)+j);
                            *(*(p+i)+j)=(*(*p+4));
                            (*(*p+4))=temp2;
                        if(*(*(p+i)+j)==b[2])
                            temp3=*(*(p+i)+j);
                            *(*(p+i)+j)=*(*(p+4));
                            *(*(p+4))=temp3;
                         if(*(*(p+i)+j)==b[3])
                            temp4=*(*(p+i)+j);
                            *(*(p+i)+j)=*(*(p+4)+4);
                            *(*(p+4)+4)=temp4;
                    }
                }
                    for(i=0;i<5;i++)                   输出改变后的矩阵。
                       for(j=0;j<5;j++)
                            printf("%d",a[i][j]);
                        


}
搜索更多相关主题的帖子: 元素 include 矩阵 
2012-11-01 19:44
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
收藏
得分:10 
程序代码:
#include<stdio.h>                                
void main()
{
    int fun();
    int temp1,temp2,temp3;
    int a[5][5]={1,2,3,4,5,6,7,18,9,10,1,112,1,14,15,116,1,18,19,20,211,22,23,24,25},i=0,j=0,k=0,m=0,l,n,t,b,temp,*p;  // 真心求指点啊,弄不会呀。。。各种伤心。。
    p=a;
for(i=0;i<5;i++)
{
   for(j=0;j<5;j++)
   {
       printf("%d  ",a[i][j]);//将最初的矩阵显示出来。
      
   }
printf("\n");
}
for(k=0;k<25;k++)
{   
    for(m=0;m<5;m++)
      {
        for(n=0;n<5;n++)
        {
        l=(int)k/5,t=(k+5)%5;
        if(a[l][t]<a[m][n])
            {
            temp=a[l][t];
            a[l][t]=a[m][n];
            a[m][n]=temp;
            }
        }
      }
}    
temp1=a[0][1];
a[0][1]=a[0][4];
a[0][4]=temp1;
temp2=a[0][2];
a[0][2]=a[4][0];
a[4][0]=temp2;
temp3=a[0][3];
a[0][3]=a[4][4];
a[4][4]=temp3;

               //  将这个矩阵由小到大的顺序进行排列。从而b[0]-b[3]是这个矩阵中最小的四个元素。            
for(i=0;i<5;i++)   
{               //输出改变后的矩阵。
    for(j=0;j<5;j++)
    {
      printf("%d  ",a[i][j]);
    }
    printf("\n");
}
} 

有心者,千方百计;无心者,千难万难。
2012-11-01 23:39
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:0 
回复 楼主 fl8962
但是,你这么写,是把这个五维矩阵限定死了啊,我是想可以随意的输入矩阵。而且,我不知道我的指针用的有没有错。。

想抽苏烟了。
2012-11-02 10:10
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
收藏
得分:0 
回复 3楼 fl8962
我是闲输入25个数字太麻烦了,你可以加上你的输入语句,运行一样成功。
从你的指针用的地方来看,并没有错误,但是这并不代表你的程序就能成功运行。
尽量不要用指针,只有在必要的时候才用,比如用一个函数将两个数值进行对调,就可以用到指针。

[ 本帖最后由 w527705090 于 2012-11-2 12:32 编辑 ]

有心者,千方百计;无心者,千难万难。
2012-11-02 12:28
快速回复:输入一个五维矩阵,然后将其中最小的四个元素放到矩阵的四个角,然后输 ...
数据加载中...
 
   



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

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