标题:请问哪里错了 ?利用函数调用进行3*3数列 行 列倒置
只看楼主
隐隐很作痛
Rank: 2
等 级:论坛游民
帖 子:24
专家分:15
注 册:2010-11-1
结帖率:75%
已结贴  问题点数:10 回复次数:4 
请问哪里错了 ?利用函数调用进行3*3数列 行 列倒置
#include <stdio.h>
void main()
{
    int a,x,y;
    int dao(int x,int y);
        int s[3][3]={{1,2,3},{4,5,6},{7,8,9}};
    int i,j;
    for(i=0;i<3;i++)
    {for(j=0;j<3;j++)
    printf("%d",s[i][j]);}
    a=dao(s);
    printf("%d",a);}

    int dao(int x,int y)
    {
        int e[3][3];
        for(x=0;x<3;x++)
        {for(y=0;y<3;y++)
        e[y][x]=e[x][y];}
            return(e);
    }

搜索更多相关主题的帖子: 函数 倒置 
2010-11-25 22:43
五当家
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:2
帖 子:1112
专家分:3674
注 册:2010-10-20
得分:0 
错的离谱,我也没仔细看,反正大问题好几个.
你传的实参是数组地址,你的形参是两个整型变量,你怎么接??
还有你返回的是一个数组地址,你用a接,a也是整型变量,你怎么接???
你最好还是再把书多看看吧.最重要的是理解,不理解的话你即使有可能一次能写对,但下次或下下次就不一定能对了,所以重要是理解呀!

经验积累中............
2010-11-26 07:50
gaochizhen33
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:114
专家分:101
注 册:2010-11-4
得分:0 
的确错误挺多的
2010-11-26 09:10
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
得分:0 
程序代码:
#include<stdio.h>

void
swap(int size,int* q);

int
main(void)
{
      int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
      int i,j;
      int (*q)[3];

      q=a;

      for(i=0;i<3;i++)
      {
            for(j=0;j<3;j++)
            {
                  printf("%d ",(*q)[j]);
            }
            printf("\n");
            q++;
      }

      swap(3,(int*)a);

      q=a;

      for(i=0;i<3;i++)
      {
            for(j=0;j<3;j++)
            {
                  printf("%d ",(*q)[j]);
            }
            printf("\n");
            q++;
      }
      getch();
      return 0;
}

void
swap(int size,int* q)
{
      int i,j,temp;

      for(i=0;i<size;i++)
      {
            for(j=0;j<i;j++)
            {
                  temp = *(q+i*size+j);
                  *(q+i*size+j) = *(q+j*size+i);
                  *(q+j*size+i) = temp;
            }
      }
}

2010-11-26 11:18
林墨哓
Rank: 2
等 级:论坛游民
帖 子:16
专家分:18
注 册:2010-11-6
得分:10 
#include <stdio.h>
void main()
{

    void dao(int s[3][3]);//*你子函数定义时不需要返回值,直接数组本身已作改动*//
        int s[3][3]={{1,2,3},{4,5,6},{7,8,9}};
    int i,j,a;
    for(i=0;i<3;i++)
    {for(j=0;j<3;j++)
    printf("%d  ",s[i][j]);//*每打一个要空格 每打一行要空行*//
    printf("\n");}
    printf("the result is :\n");
    dao(s);
    for(i=0;i<3;i++)
    {for(j=0;j<3;j++)
    printf("%d  ",s[i][j]);
    printf("\n");}
}
void dao(int s[3][3])
    {int x, y,t;
        for(x=0;x<3;x++)
        for(y=x;y<3;y++)//*如果是y=0相当于没有转换 有转换的都转换回去了,还有就是要有个中间变量*//
        {t=s[x][y];
         s[x][y]=s[y][x];
         s[y][x]=t;
        }
           
    }
2010-11-26 17:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-326923-1-1.html




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

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