注册 登录
编程论坛 C++教室

还是数组作为函数参数的问题

咚呱咚呱 发布于 2010-05-30 11:30, 686 次点击
上次发过帖子,但版主用的方法我还没学到,自然感到很~~题目如下,还有我自己的编的,希望能指正错误!谢谢!!!!!

    将一个二维数组(5*3)中的数据行列互换。【算法分析】:行列互换,即a[i][j]=b[j][i]。
算分描述:
    输入:5行3列的二维数组。
    输出:互换后3行5列的二维数组。
  1、输出提示语句。
  2、输入二维函数(主函数中进行)。
  3、调用互换函数,进行行列值的互换。
  4、输出行列互换后的数组(主函数中进行)。

我的代码:
#include <stdio.h>

void func(int a[][],int m,int n)
{
    int b[n][m];
    for(int i;i<n;i++)
    {
        for(int j;j<m;j++)
        {
            b[i][j]=a[j][i];
        }
    }
}
void main()
{
    int a[5][3];
    int p=5,int q=3;
    printf("Please input the number:\n");
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<3;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    func(a,p,q);
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<3;j++)
        {
            printf("%d",a[i][j]);
        }
    }
}

希望各位能帮忙找下哪里错了,谢谢!!!!!!!!!!!!!!!!
8 回复
#2
fhqbgmqj2010-05-30 20:20
你好好看看书吧,这个很简单的一个程序,你好好检查下你程序,许多错误都是太粗心了。
#3
咚呱咚呱2010-05-30 21:28
回复 2楼 fhqbgmqj
呵呵,那也是。唉,真希望这段杯具的初学生涯快过去,早日成为大侠,哈哈哈!谢咯!
#4
gaoce2272010-05-30 22:13
func函数的i,j都没初始化。
func应该设置为有返回值的吧?

#5
yuls2010-05-30 23:00
输入:1 2 3 4 5 6 7 8 9 1 2 3 4 5 6
输出:1 4 7 1 4
      2 5 8 2 5
      3 6 9 3 6
#include <stdio.h>

void swap(int b1[5][3],int b2[3][5] ,int p,int q)
{
    for(int i=0;i<q;i++)
    {
        for(int j=0;j<p;j++)
        {
            b2[i][j]=b1[j][i];
        }
    }
}
void main()
{   
    int p=5;
    int q=3;
    int Array1[5][3];
    int Array2[3][5];
    printf("Please input the number:\n");
    for(int i=0;i<p;i++)
        for(int j=0;j<q;j++)
            scanf("%d",&Array1[i][j]);
    swap(Array1,Array2,p,q);
    for(int i=0;i<q;i++)
    {
        for(int j=0;j<p;j++)
        {
            printf("%d  ",Array2[i][j]);
            if((j+1)%5==0)
                printf("\n");
        }
    }
}
#6
fhqbgmqj2010-05-31 16:27
楼上那个也有点错误,输出循环中那个i和j不能用,因为你在输入循环中已经定义了一个i和j,这里再用的话会出现多重定义的错误,可以换个标识符。另外,下边那个换行的判断也不必要,可以直接在内层循环体外加个printf("\n");就行了。
#7
fhqbgmqj2010-05-31 16:48
这是我根据5楼改的程序,我不习惯用C,我用的是C++,你应该能看懂的,只有输入输出语句不一样。
#include <iostream.h>

void swap(int b1[5][3],int b2[3][5] ,int p,int q)
{
    for(int i=0;i<p;i++)
    {
        for(int j=0;j<q;j++)
        {
            b2[j][i]=b1[i][j];
        }
    }
}
int main(void)
{   
    int p=5;
    int q=3;
    int Array1[5][3];
    int Array2[3][5];
    cout<<"Please input the number:\n";
    for(int i=0;i<p;i++)
        for(int j=0;j<q;j++)
            cin>>Array1[i][j];
    swap(Array1,Array2,p,q);
    for(int h=0;h<q;h++)
    {
        for(int k=0;k<p;k++)
        {
            cout<<Array2[h][k]<<"\t";
        }
    cout<<"\n";
    }
}
#8
yuls2010-05-31 17:16
回复 6楼 fhqbgmqj
vs2008  and  vs2010  中可以那样写的
#9
fhqbgmqj2010-06-01 20:15
回复 8楼 yuls
哦,我没用过……不好意思啊,我收回我上边说的话!呵呵……以后用到2010了就来请教你……呵呵!
1