标题:求助:二维数组的问题,但是不知道怎么改。求教!
只看楼主
shanexia
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-11-17
结帖率:40%
已结贴  问题点数:20 回复次数:12 
求助:二维数组的问题,但是不知道怎么改。求教!
#include<stdio.h>
int main()
{
    int m=3,n=2;
    double average(int x[][n],int ,int );
    double mean;
    int matrix[m][n]={{1,2},{3,4},{5,6}};
    mean=average(matrix,m,n);
    return 0;
}
double average(int x[][n],int m,int n)
{
    int i,j;
    double sum=0.0;
    for(i=0;i<m;i++)
        for(j=1;j<n;j++)
            sum+=x[i][j];
        return(sum/(m*n));
}
编译出现错误,请大神帮忙看下,调试了下,应该是二维数组的问题。但是不知道怎么改,求大神指教。
搜索更多相关主题的帖子: average double return matrix 
2013-11-17 23:01
shanexia
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-11-17
得分:0 
不要沉,大神帮忙看下!
2013-11-17 23:05
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:4 
#include<stdio.h>
#define n 2     //因为下面的函数声明放在了main()函数之前了,而二维数组 列 的值必须确定,所以先给 n 值                        
#define m 3     //m 虽然放在主函数也行   但还是放这里吧
double average(int x[][n],int ,int );  //函数声明需要放在main()函数之前;
int main()
{
    int matrix[m][n]={{1,2},{3,4},{5,6}};   
    double mean;   
    mean=average(matrix,m,n);
    printf("%lf\n",mean);      //你的程序没有输出   我给你加了一个  
    return 0;
}
double average(int x[][n],int m1,int n1) //因为 m n 已经在主函数外部进行宏定义了,所以不能再作为此函数的参数了,改成了m1,n1
{
    int i,j;
    double sum=0.0;
    for(i=0;i<m1;i++)
        for(j=1;j<n1;j++)
            sum+=x[i][j];
        return(sum/(m1*n1));
}

三十年河东,三十年河西,莫欺少年穷!
2013-11-17 23:58
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
得分:4 
撸主,你要看编译器提示你什么错误的啊

埋头做牛,抬头做人,低头做狗
2013-11-18 08:26
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
得分:4 
程序代码:
#include<stdio.h>
#define n 2     //因为下面的函数声明放在了main()函数之前了,而二维数组 列 的值必须确定,所以先给 n 值                       
#define m 3     //m 虽然放在主函数也行   但还是放这里吧
double average(int x[][n],int ,int );  //函数声明需要放在main()函数之前;
int main()
{
    int matrix[m][n]={{1,2},{3,4},{5,6}};   
    double mean;   
    mean=average(matrix,m,n);
    printf("%lf\n",mean);      //你的程序没有输出   我给你加了一个 
    return 0;
}
double average(int x[][n],int m1,int n1) //因为 m n 已经在主函数外部进行宏定义了,所以不能再作为此函数的参数了,改成了m1,n1
{
    int i,j;
    double sum=0.0;
    for(i=0;i<m1;i++)
        for(j=1;j<n1;j++)//j=0
            sum+=x[i][j];
        return(sum/(m1*n1));
}
2013-11-18 09:00
shanexia
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-11-17
得分:0 
回复 3楼 韶志
请问一下你是说我的程序错在函数声明放在main里了吗?如果是的话,那么下面这个程序为何没有错误呢?
#include<stdio.h>
void main()
{
    int m=3,n=2,answer;
    int mul(int m1,int n1);
    answer=mul(m,n);
    printf("%d\n",answer);
}
int mul(int m1,int n1)
{
    int a;
    a=m1*n1;
    return(a);
}

另附:谢谢你的程序,经过调试,程序运行没有错误。但是我想知道我的程序到底哪里出现了语法错误呢?这样方便日后改正。我怎么看也看不出来!
2013-11-18 22:49
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:0 
回复 6楼 shanexia
确实是可以放在主函数里面  
不过我把你的放在外面就正确了...

三十年河东,三十年河西,莫欺少年穷!
2013-11-18 23:00
shanexia
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-11-17
得分:0 
调试后,错误如下。
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(5) : error C2057: expected constant expression
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(5) : error C2466: cannot allocate an array of constant size 0
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(5) : error C2087: '<Unknown>' : missing subscript
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(7) : error C2057: expected constant expression
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(7) : error C2466: cannot allocate an array of constant size 0
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(7) : error C2057: expected constant expression
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(7) : error C2466: cannot allocate an array of constant size 0
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(7) : error C2087: '<Unknown>' : missing subscript
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(7) : error C2078: too many initializers
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(11) : error C2065: 'n' : undeclared identifier
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(11) : error C2057: expected constant expression
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(11) : error C2466: cannot allocate an array of constant size 0
D:\vc++6.0\Microsoft Visual Studio\MyProjects\111\111.cpp(11) : error C2087: '<Unknown>' : missing subscript
2013-11-18 23:07
shanexia
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-11-17
得分:0 
回复 7楼 韶志
double average(int x[][n],int ,int );
那我的语法错误到底出现在哪里呢?
我一个同学说出现在以上的部分,根据预编译原理,应该给二维数组列初始化具体的值。
是不是这样的呢?
2013-11-19 12:11
大脸菜鸟
Rank: 2
等 级:论坛游民
帖 子:12
专家分:36
注 册:2013-10-16
得分:4 
亲,楼上解释很完全。
语法规定,定义数组的时候,数组的下标可以省略,如果标明,那么下标必须是个常量
各位楼上都是用
#define n 2
这时候,n是个常量,代表数字2.
你的是在程序中 int n=2.  这里的n是个变量。 虽然都是2,但是意义是不一样的。
2013-11-19 12:38



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




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

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