C 求二维数组中第一行和对角线的和
我需要找到第一行中所有整数的和,以及对角线中所有数字的和。我的代码给了我一个巨大的错误的总数,有人能告诉我正确的方向吗C 求二维数组中第一行和对角线的和,c,algorithm,matrix,C,Algorithm,Matrix,我需要找到第一行中所有整数的和,以及对角线中所有数字的和。我的代码给了我一个巨大的错误的总数,有人能告诉我正确的方向吗 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i,j, matrix [10][10], sum_row[10]; srand(time(NULL)); for (i = 0; i <10;++i) { printf("\n\
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i,j, matrix [10][10], sum_row[10];
srand(time(NULL));
for (i = 0; i <10;++i)
{
printf("\n\n");
for (j = 0; j <10; ++j)
{
matrix [i][j] = rand()%10;
printf("%d\t", matrix[i][j]);
}
}
printf("\n\n");
matrix[i][j]= rand()%10;
for (i = 0; i<10; ++i)
{
for (j = 0; j<10; ++j)
{
sum_row[i] += matrix[i][j];
}
}
printf("%d", sum_row);
return 0;
}
#包括
#包括
#包括
int main()
{
int i,j,矩阵[10][10],求和行[10];
srand(时间(空));
对于(i=0;i您没有初始化sum_行
,自动变量没有初始化为零,它们的值是不确定的。因此sum_行
元素的初始值是不确定的。因此在这一行:
sum_row[i] += matrix[i][j];
您正在向不确定的初始值添加值,这将导致不确定的结束值。您可以将声明更改为:
sum_row[10] = {0}
将所有元素初始化为零
这一行看起来像是打字错误:
printf("%d", sum_row);
可能是为了:
printf("%d\n", sum_row[0]);
^^^
您还应删除最终的:
matrix[i][j]= rand()%10;
在初始循环之后,因为它将对i
和j
使用无效索引
要获得对角线的和,您只需要一个初始化为零的新变量,并且在最后的for循环中,当i==j时,只需向该和添加一个元素。试试这个
为了求一行中的和,保持i为常数,改变j
为了求对角线元素之和,保持i=j
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i,j, matrix [10][10], sum_row=0, sum_diag=0;
srand(time(NULL));
for (i = 0; i <10;++i)
{
printf("\n\n");
for (j = 0; j <10; ++j)
{
matrix [i][j] = rand()%10;
printf("%d\t", matrix[i][j]);
}
}
printf("\n\n");
for (j = 0; j<10; ++j)
{
/* i = 0 indicates row 0 */
sum_row += matrix[0][j];
/* i = j indicates diagnoal */
sum_diag += matrix[j][j];
}
printf("row sum: %d, diag sum: %d", sum_row, sum_diag);
return 0;
}
#包括
#包括
#包括
int main()
{
int i,j,矩阵[10][10],和行=0,和图=0;
srand(时间(空));
对于(i=0;i,您的代码中没有计算对角线元素的和。您只计算了行元素的和。在这方面,似乎有3个错误
您尚未初始化sum_行[10]。必须在使用它之前将其初始化为零
printf(“%d”,sum_行);此语句尝试打印sum_行[]数组的地址。如果要打印值,请使用sum_行['some index']
矩阵[i][j]=rand()%10;此语句可能会给出错误b'caz您已将矩阵声明为大小为10*10的数组,但您正在尝试访问矩阵[10][10],它是第11*11个元素
要计算对角线元素之和,请取一些变量,比如sum,将其初始化为零,并在计算行元素之和时将其递增。如下所示
总和=0
求和行[10]={0}
对于(i=0;i您没有初始化
sum_row[10] = { 0 };
如果您使用了i++,那么就可以跳过这一行
matrix[i][j]= rand()%10; // then second one
for(i=0; i<10; i++)
printf(%d\n, sum_row[i]);
matrix[i][j]=rand()%10;//然后是第二个
对于(i=0;i您应该从尝试较小的矩阵开始,依此类推,printf(“\n\n”);
之后的行应该被删除。它正在写入数组末尾以外的无效位置。
matrix[i][j]= rand()%10; // then second one
for(i=0; i<10; i++)
printf(%d\n, sum_row[i]);