| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 686 人关注过本帖
标题:还是数组作为函数参数的问题
只看楼主 加入收藏
咚呱咚呱
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:29
专家分:2
注 册:2010-4-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
还是数组作为函数参数的问题
上次发过帖子,但版主用的方法我还没学到,自然感到很~~题目如下,还有我自己的编的,希望能指正错误!谢谢!!!!!

    将一个二维数组(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]);
        }
    }
}

希望各位能帮忙找下哪里错了,谢谢!!!!!!!!!!!!!!!!
搜索更多相关主题的帖子: 函数 参数 
2010-05-30 11:30
fhqbgmqj
Rank: 2
等 级:论坛游民
帖 子:26
专家分:57
注 册:2010-5-7
收藏
得分:0 
你好好看看书吧,这个很简单的一个程序,你好好检查下你程序,许多错误都是太粗心了。
2010-05-30 20:20
咚呱咚呱
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:29
专家分:2
注 册:2010-4-13
收藏
得分:0 
回复 2楼 fhqbgmqj
呵呵,那也是。唉,真希望这段杯具的初学生涯快过去,早日成为大侠,哈哈哈!谢咯!
2010-05-30 21:28
gaoce227
Rank: 4
来 自:山东
等 级:业余侠客
帖 子:134
专家分:218
注 册:2008-4-5
收藏
得分:0 
func函数的i,j都没初始化。
func应该设置为有返回值的吧?

2010-05-30 22:13
yuls
Rank: 2
等 级:论坛游民
帖 子:23
专家分:60
注 册:2010-5-28
收藏
得分:10 
输入: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");
        }
    }
}
2010-05-30 23:00
fhqbgmqj
Rank: 2
等 级:论坛游民
帖 子:26
专家分:57
注 册:2010-5-7
收藏
得分:10 
楼上那个也有点错误,输出循环中那个i和j不能用,因为你在输入循环中已经定义了一个i和j,这里再用的话会出现多重定义的错误,可以换个标识符。另外,下边那个换行的判断也不必要,可以直接在内层循环体外加个printf("\n");就行了。
2010-05-31 16:27
fhqbgmqj
Rank: 2
等 级:论坛游民
帖 子:26
专家分:57
注 册:2010-5-7
收藏
得分:0 
这是我根据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";
    }
}
2010-05-31 16:48
yuls
Rank: 2
等 级:论坛游民
帖 子:23
专家分:60
注 册:2010-5-28
收藏
得分:0 
回复 6楼 fhqbgmqj
vs2008  and  vs2010  中可以那样写的
2010-05-31 17:16
fhqbgmqj
Rank: 2
等 级:论坛游民
帖 子:26
专家分:57
注 册:2010-5-7
收藏
得分:0 
回复 8楼 yuls
哦,我没用过……不好意思啊,我收回我上边说的话!呵呵……以后用到2010了就来请教你……呵呵!
2010-06-01 20:15
快速回复:还是数组作为函数参数的问题
数据加载中...
 
   



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

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