我的解决方案: 我正在CodeBlocks中运行此程序。它不起作用,它显示:
//error: array type has incomplete elements type 'int[]'
//warning: return type of 'main' is not 'int'
我想要执行计算每行总和及其总和的功能。该解决方案不起作用,因为它在函数声明中显示了错误。
//function declaration
void findSumEachRowAndTotalSum(int a[][], int c, int r){
int i, j, rowSum, totalSum;
//ask the user to give elements of rows
for(i=0; i<c; i++){
printf("\nGive elements of row %d:\n", i+1);
for(j=0; j<r; j++)
scanf("%d", &a[i][j]);
}
totalSum = 0;
for(i=0; i<c; i++){
rowSum = 0;
for(j=0; j<r; j++){
//calculates the sum of each row and total sums
rowSum = rowSum + a[i][j];
totalSum = totalSum + a[i][j];
}
//displays sum of each row on the screen
printf("\nSum of row %d is %d", i+1, rowSum);
}
//displays the total sum of all rows on the screen
printf("\nTotal sum is %d\n", totalSum);
}
//main function
void main(void){
int col, row, m[50][50], i, j;
//...
//function call
findSumEachRowAndTotalSum(a,c,r);
}
答案 0 :(得分:3)
该错误是由于函数a
的参数findSumEachRowAndTotalSum
的定义引起的:
void findSumEachRowAndTotalSum(int a[][], int c, int r){
当一个以上维度的数组是函数的参数时,只允许将第一维度留为空白。所有其他必须指定。
由于您似乎在使用c
和r
作为维,因此需要首先提供这些参数,然后再将它们用作数组的维:
void findSumEachRowAndTotalSum(int c, int r, int a[c][r]){
然后您将这样调用函数:
findSumEachRowAndTotalSum(50, 50, m);
关于警告,必须定义main
函数以返回类型int
,并且您需要随后返回一个值:
int main(void){
...
return 0;
}
答案 1 :(得分:0)
@Osiris,您必须发表评论作为答案。没错,@ ArselDoe可能错误地忽略了main()
中为数组指定的名称。
@ArselDoe,您已将标识符为m[][]
的数组声明为,但已将a
作为参数传递给函数调用。更改此设置将修复错误。