Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中声明函数会导致预期的';错误''';或';)'; #包括 #包括 第二名(int&A[m][n],m,n); int main() { int m,n; 做{ scanf(“%d%d”,&m,&n); }而(((m5))和((n5)); int A[m][n],i,j; 对于(i=0;i_C_Function_Multidimensional Array - Fatal编程技术网

在C中声明函数会导致预期的';错误''';或';)'; #包括 #包括 第二名(int&A[m][n],m,n); int main() { int m,n; 做{ scanf(“%d%d”,&m,&n); }而(((m5))和((n5)); int A[m][n],i,j; 对于(i=0;i

在C中声明函数会导致预期的';错误''';或';)'; #包括 #包括 第二名(int&A[m][n],m,n); int main() { int m,n; 做{ scanf(“%d%d”,&m,&n); }而(((m5))和((n5)); int A[m][n],i,j; 对于(i=0;i,c,function,multidimensional-array,C,Function,Multidimensional Array,我正在编写一个函数来查找二维数组中的第二小数,但我在声明函数时遇到了一个问题 下面几行有一个错误: int次最小值(int&A[m][n],m,n); 和 int次最小值(int&A[m][n],m,n){ 错误说明如下: 错误:应在“&”标记之前加“;”、“、”或“)。 这条线还有一个警告: printf(“二维数组中第二小的数字是%d”,第二小的(A[m][n],m,n)); 说: 警告:函数“第二小”的隐式声明 #include <stdio.h> #include <s

我正在编写一个函数来查找二维数组中的第二小数,但我在声明函数时遇到了一个问题

下面几行有一个错误:
int次最小值(int&A[m][n],m,n);
int次最小值(int&A[m][n],m,n){

错误说明如下:
错误:应在“&”标记之前加“;”、“、”或“)。

这条线还有一个警告:
printf(“二维数组中第二小的数字是%d”,第二小的(A[m][n],m,n));

说:
警告:函数“第二小”的隐式声明
#include <stdio.h>
#include <stdlib.h>

int second_smallest(int &A[m][n], m, n);

int main()
{
    int m, n;
    do{
        scanf("%d %d", &m, &n);
    }while(((m < 1) || (m > 5)) && ((n < 1) || (n > 5)));

    int A[m][n], i, j;

    for(i = 0; i < m; i++)
        for(j = 0; j < n; j++)
            scanf("%d", &A[i][j]);

    printf("Second smallest number in the two dimensional array is %d", second_smallest(A[m][n], m, n));

    return 0;
}

int second_smallest(int &A[m][n], m, n){
    int i, j, min, second_min;

    if (A[0][0] > A[0][1]){
        min = A[0][0];
        second_min = A[0][1];
    }
    else{
        min = A[0][1];
        second_min = A[0][0];
    }

    for (int i = 0;i < m; i++)
        for (int j = 0; j < n; j++){
            if (A[i][j] <= min)
                second_min = min;
                min = A[i][j];
            }
            else if (A[i][j] > second_min){
                second_min = A[i][j];
            }
}
#定义n3 第二名(int&A[m][n],m,n); //什么是M,N?在C中你必须声明 //编译前的静态数组大小 //将它们声明为宏 int main() { int m,n; 做{ scanf(“%d%d”,&m,&n); }而(((m<1)| |(m>5))和((n<1)| |(n>5)); int A[m][n],i,j; 对于(i=0;iA[0][1]){ min=A[0][0]; 第二分钟=A[0][1]; } 否则{ min=A[0][1]; 第二分钟=A[0][0]; } 对于(int i=0;i
1.在任何地方使用数组之前声明数组的大小,如果不知道大小,请将指针作为函数参数,并使用sizeof()运算符计算其大小


2.检查代码中的括号;错误在于括号数量不匹配。

函数原型的第一个问题是参数
&a[m][n]
。C不允许通过引用传递。函数原型错误

#define m 4
#define n 3  

int second_smallest(int &A[m][n], m, n);

                                       // WHAT IS M, N ? IN C YOU HAVE TO DECLARE 
                                      // STATIC ARRAY SIZE BEFORE COMPILATION
                                      // DECLARE THEM AS MACROS

int main()

{


int m, n;
do{
    scanf("%d %d", &m, &n);
}while(((m < 1) || (m > 5)) && ((n < 1) || (n > 5)));

int A[m][n], i, j;

for(i = 0; i < m; i++)
    for(j = 0; j < n; j++)
        scanf("%d", &A[i][j]);

printf("Second smallest number in the two dimensional array is %d",   second_smallest(A[m][n], m, n));

 return 0;
}

int second_smallest(int &A[m][n], m, n){

int i, j, min, second_min;

if (A[0][0] > A[0][1]){
    min = A[0][0];
    second_min = A[0][1];
}
else{
    min = A[0][1];
    second_min = A[0][0];
}

for (int i = 0;i < m; i++)    // SOME BRACKETS MISMATCH AFTER THIS , CHECK IT.
    for (int j = 0; j < n; j++){
        if (A[i][j] <= min)
            second_min = min;
            min = A[i][j];
        }
        else if (A[i][j] > second_min){
            second_min = A[i][j];
        }
}
C不允许这种类型的函数原型。
另一个问题是
m
n
在编译器遇到
A[m][n]
时是未知的。 换成

int second_smallest(int &A[m][n], m, n);  
然后更改代码段

int second_smallest(int m, int n,int A[m][n]);  
for(int i=0;i

for(int i=0;i
C没有引用。警告是因为第一个错误。在C(以及从C派生的语言)中,有一个根错误是很常见的,这会导致其他错误和/或警告。您也会有其他错误(或者至少在修复第一个错误时会有其他错误):当您声明
A
参数时,变量
m
n
不会被声明。您也不会正确调用函数,而是传递int
A
数组的单个整数值
A[m][n]
,这也超出了
A
的范围。我认为解释您所做的更改以及为什么需要更改将有助于OP理解答案。是的,缩进确实很重要。
for (int i = 0;i < m; i++)
    for (int j = 0; j < n; j++){
        if (A[i][j] <= min)
            second_min = min;
            min = A[i][j];
        }
        else if (A[i][j] > second_min){
            second_min = A[i][j];
        }  
for (int i = 0;i < m; i++){
    for (int j = 0; j < n; j++){
        if (A[i][j] <= min){
            second_min = min;
            min = A[i][j];
         }
        else if (A[i][j] > second_min){
            second_min = A[i][j];
        }
     } 
 }