我是新手,我正在做功能练习。执行下面的代码后,我得到了一堆垃圾值的输出。 可能是什么错误? 我是否正确地将2d数组传递给函数?
#include <stdio.h>
void populArray (int array[][6], int rows);
void computtotal (int array[][6], int rows);
int main()
{
int arr[10][6],ave,max;
populArray( arr, 10);
computtotal( arr, 10);
return 0;
}
void populArray (int array[][6],int rows)
{
int i,j;
for (i=0;i++;i<rows)
{
for (j=0;j++;j<6)
{
printf("enter %d and %d th elemnt",i,j);
scanf("%d",&array[i][j]);
}
}
}
void computtotal (int array[][6], int rows)
{
int i,j,sum=0;
for (i=0;i<rows;i++)
{
for (j=0;j<6;j++)
{
sum=sum+array[i][j];
array[i][5]=sum;
sum=0;
}
}
for (i=0;i<rows;i++)
{
for (j=0;j<6;j++)
{
printf("%d",array[i][j]);
}
printf("\n");
}
}
答案 0 :(得分:1)
在populArray()
for (i=0;i++;i<rows)
{
for (j=0;j++;j<6)
您已交换条件检查。它应该是
for (i=0;i<rows;i++)
{
for (j=0;j<6;j++)
注意:强>
使用main()
int main(void) //if no command line arguments.
答案 1 :(得分:1)
for (i=0;i++;i<rows)
永远不会执行,因为条件i++
返回false。
应该是
for (i=0;i<rows;i++)
同样适用于
for (j=0;j++;j<6)
答案 2 :(得分:0)
首先声明变量ave
和max
但未使用。
int arr[10][6],ave,max;
删除它们。
最好使用命名常量,而不是幻数10
和6
。如果编译器支持它们,您可以使用可变长度数组,或者使用#define directice定义常量。例如
#define ROWS 10
#define COLS 6
int main( void )
{
int arr[ROWS][COLS];
//...
函数populArray
包含无效的循环记录
void populArray (int array[][6],int rows)
{
int i,j;
for (i=0;i++;i<rows)
^^^^^^^^^^
{
for (j=0;j++;j<6)
^^^^^^^^
//...
我认为你的意思是以下
void populArray( int array[][6], int rows )
{
int i,j;
for ( i = 0; i < rows; i++ )
{
for ( j = 0; j < 6; j++ )
{
printf( "enter %d and %d th elemnt",i,j );
scanf( "%d", &array[i][j] );
}
}
}
似乎在函数computtotal
中,您试图计算一行中所有元素的总和,并将其写入该行的最后一个元素。否则该功能没有多大意义。
如果我是对的,那么该功能可能看起来像
void computtotal( int array[][6], int rows )
{
int i, j;
for ( i = 0; i < rows; i++ )
{
int sum = 0;
for ( j = 0; j < 6; j++ )
{
sum = sum + array[i][j];
}
array[i][5] = sum;
}
for ( i = 0; i < rows; i++ )
{
for ( j = 0; j < 6; j++ )
{
printf( "%d ", array[i][j] );
// ^^^^^
}
printf( "\n" );
}
}
根据C标准函数main,不带参数应声明为
int main( void )