【发布时间】:2021-04-16 04:00:26
【问题描述】:
例如,我们有这个
0 1 0 1
0 3 1 0
0 1 5 0
0 0 0 0
矩阵我只想显示非零元素的行和列 最终的矩阵视图应该是这样的
1 0 1
3 1 0
1 5 0
如何删除零元素的行和列 我的代码
#include <stdio.h>
int main()
{
int a[100],row,col,i,j,count=0,k=0;
scanf("%d %d", &row, &col);
int matrix[row][col];
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
scanf("%d", &matrix[i][j]);
}
}
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
if(matrix[i][j]==0)
{
count++;
}
}
}
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
return 0;
}
我应该为count++设置什么条件我是c开发人员的新人。
【问题讨论】:
-
为什么还要使用计数器?只需将条件移动到打印循环,然后翻转它(不)
-
你的代码编译了吗?我相信还有一个额外的
}。 -
要达到您想要的效果,您必须至少进行 2 次通过。 1. 如果行中至少有一个值不是
0,则有一些display_row数组变量不应设置为0。 2.第二遍:只显示display_row[i]不是0的矩阵。 -
@sagi 我做到了,但只处理全零 0 行感谢全零列我需要什么条件?