| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1371 人关注过本帖
标题:新手题 指针倒置3*3矩阵 有大佬看看么?
只看楼主 加入收藏
qq14
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-11-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
新手题 指针倒置3*3矩阵 有大佬看看么?
输入1 2 3 4 5 6 7 8 9 输出:
1 4 7            但我输出了  1 4 7
2 5 8                        4 5 8
3 6 9                        7 8 9
太奇怪了吧,有没有大佬能告诉我那一步做错了和原因呢?


#include <stdio.h>
#include <stdlib.h>
void  Fun(int *p);
int main()
{
    int x[3][3];
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<3;j++)
        {
            scanf("%d",&x[i][j]);
        }
    }
    int *p;
    p=(int *)x;
    Fun(p);
    for(int n=0;n<3;n++)
    {
        for(int m=0;m<3;m++)
        {
            printf("%d ",x[n][m]);
        }
        printf("\n");
    }
    return 0;
}
void  Fun(int *p)
{
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<3;j++)
        {
            *(p+3*i+j)=*(p+3*j+i);
        }
    }
}

搜索更多相关主题的帖子: 矩阵 int 倒置 Fun for 
2020-12-27 10:40
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:20 
一边修改数组元素,一边倒置,那会被覆盖的
得有个数据交换过程   

要不你弄另一个数组做备胎int  y[3][3]

 for(i=0;i<3;i++)
     for(j=0;j<3;j++)
            y[i][j]=x[j][i];

y就是x的倒置

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2020-12-27 11:44
qq14
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-11-23
收藏
得分:0 
回复 2楼 do8do8do8
我听了你说的话,弄了一个有y[3][3],和指向它的指针t来搞,可以运行了!!!!我都没想到这方面的哈哈,谢谢大佬
2020-12-27 18:56
qq14
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-11-23
收藏
得分:0 
回复 2楼 do8do8do8
我能不能问下你下面这个呀?明明用刚刚做的那样可以的结果又出现了这样的问题
输入行数、列数和数倒置矩阵如 3 2 1 2 3 4 5 6 需输出
1 3 5      我得到1 4 2
2 4 6            5 3 6
代码在下边,如果哦如果有空的话,你能告诉下我么?

#include <stdio.h>
#include <stdlib.h>
void Fun(int *p,int *t,int n,int m);
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    int x[n][m],y[m][n];
    int *p;
    p=(int *)x;
    int *t;
    t=(int *)y;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            scanf("%d",&x[i][j]);
        }
    }
    Fun(p,t,n,m);
    for(int a=0;a<m;a++)
    {
        for(int b=0;b<n;b++)
        {
            printf("%d\t",y[a][b]);
        }
        printf("\n");
    }
    return 0;
}
void Fun(int *p,int *t,int m,int n)
{
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            *(t+n*i+j)=*(p+m*j+i);
        }
    }
}
2020-12-27 20:22
快速回复:新手题 指针倒置3*3矩阵 有大佬看看么?
数据加载中...
 
   



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

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