| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4543 人关注过本帖
标题:把一个2*3矩阵转置
只看楼主 加入收藏
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
结帖率:82.35%
收藏
已结贴  问题点数:18 回复次数:6 
把一个2*3矩阵转置
程序代码:
#include<stdio.h>
int main()
{
    void sort(int x[][3],int n);
    int a[2][3];
    int i,j;
    printf("请输入一个2*3矩阵\n");
    for(i=0;i<2;i++)
        for(j=0;j<3;j++)
            scanf("%d",&a[i][j]);
        sort(a,2);
        for(i=0;i<2;i++)
        {
            for(j=0;j<3;j++)
                printf("%d ",a[i][j]);
            printf("\n");
        }
}
void sort(int x[][3],int n)
{
    int i,j,t;
    for(i=0;i<n;i++)
        for(j=0;j<3;j++)
            if(i<j)
            {
                t=x[i][j];
                x[i][j]=x[j][i];
                x[j][i]=t;
            }
}


这样做为什么不对啊  怎么改??
2016-06-19 13:44
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:18 
虽然你用a[2][3]这一个数组来完成你所想要达的目的不是说不能实现,比较麻烦,你还是多设一个数组b[3][2],这样就容易多了。
2016-06-19 14:14
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
收藏
得分:0 
以下是引用linlulu001在2016-6-19 14:14:17的发言:

虽然你用a[2][3]这一个数组来完成你所想要达的目的不是说不能实现,比较麻烦,你还是多设一个数组b[3][2],这样就容易多了。


我现在已经改了好多遍了 都没有对 你能不能给我一个正确的代码 让我看看。
2016-06-19 14:29
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
#include<stdio.h>
int main()
{
    void sort(int x[][3],int y[][2]);
    int a[2][3],b[3][2];
    int i,j;
    printf("请输入一个2*3矩阵\n");
    for(i=0;i<2;i++)
        for(j=0;j<3;j++)
            scanf("%d",&a[i][j]);
        sort(a,b);
        for(i=0;i<3;i++)
        {
            for(j=0;j<2;j++)
                printf("%d ",b[i][j]);
            printf("\n");
        }
}
void sort(int x[][3],int y[][2])
{
    int i,j,t;
    for(i=0;i<2;i++)
        for(j=0;j<3;j++)         
                y[j][i]=x[i][j];
            
}
2016-06-19 14:44
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
收藏
得分:0 
回复 4楼 linlulu001
程序代码:
#include<stdio.h>
int main()
{
    void sort(int x[][3],int n);
    int a[3][3];
    int i,j;
    printf("请输入一个2*3矩阵\n");
    for(i=0;i<2;i++)
        for(j=0;j<3;j++)
            scanf("%d",&a[i][j]);
        sort(a,2);
        for(i=0;i<3;i++)
        {
            for(j=0;j<2;j++)
                printf("%d ",a[i][j]);
            printf("\n");
        }
}
void sort(int x[][3],int n)
{
    int i,j,t;
    for(i=0;i<n;i++)
        for(j=0;j<3;j++)
            if(i<j)
            {
                t=x[i][j];
                x[i][j]=x[j][i];
                x[j][i]=t;
            }
}


我改成这样了
2016-06-19 15:04
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
一个数组内想完成交换你就要找出他们的规律,然后完成它的交接。再用指针输出比较容易。
2016-06-19 15:29
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define M 200
#define N 200
int main()
{
    int a[M][N]={0};
    int i=0,j=0;
    int m=0,n=0,T=0;
    int(*p)[M]=NULL;
    p=a;
    printf("先输入矩阵的行数及列数,再输入矩阵:\n\n");    
    printf("例:\t3 3\n");
    printf("\t1 2 3\n\t4 5 6\n\t7 8 9\n\n");    
    scanf("%d %d",&m,&n);
    getchar();
    for(i=0;i<m;i++)
    {    
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    }
//输出已经存入数组a中的数据 
/*
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
        {
            printf("%d ",*(p[i]+j));
            if((j+1)==n)
                printf("\n");
        }
*/
    printf("请选择翻转模式:\n");
    printf("0:左右翻转  1:上下翻转  2:逆时针90°旋转  3:顺时针90°旋转\n");
    getchar();
    scanf("%d",&T);
    switch(T)
    {    
//左右翻转    
        case 0:
            for(i=0;i<m;i++)  
                for(j=n-1;j>=0;j--)
                {   
                    printf("%d ",*(p[i]+j));
                    if(j==0)
                        printf("\n");
                }
            break;
//上下翻转 
        case 1:
            for(i=m-1;i>=0;i--)  
                for(j=0;j<n;j++)
                {       
                    printf("%d ",*(p[i]+j));
                    if((j+1)==n)
                        printf("\n");
                } 
            break;
//逆时针90度旋转    
        case 2:
             for(j=n-1;j>=0;j--)
                for(i=0;i<m;i++)  
                {   
                    printf("%d ",*(p[i]+j));
                    if((i+1)==n)
                        printf("\n");
                }
            break;    
//顺时针90度旋转    
        case 3:
             for(j=0;j<n;j++)
                for(i=m-1;i>=0;i--)  
                {   
                    printf("%d ",*(p[i]+j));
                    if(i==0)
                        printf("\n");
                }    
            break;
    }
    return 0;
} 
2016-06-20 14:18
快速回复:把一个2*3矩阵转置
数据加载中...
 
   



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

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