用c语言写:已知一个二维整型数组已初始化a[5][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7},{0,1,2,3,4},{6,7,8,9,0}},请删除此数组中所有等于指定值的元素,删除后,各元素依次前移。
时间: 2023-08-16 08:10:04 浏览: 149
这个问题需要用到双重循环来遍历二维数组,然后判断是否等于指定值,如果等于则删除并前移。以下是一个示例代码:
```c
#include <stdio.h>
void delete_value(int a[][5], int value) {
int i, j, k;
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (a[i][j] == value) {
for (k = j; k < 4; k++) {
a[i][k] = a[i][k+1];
}
a[i][4] = 0;
j--;
}
}
}
}
int main() {
int a[5][5] = {{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7},{0,1,2,3,4},{6,7,8,9,0}};
int value = 3;
delete_value(a, value);
int i, j;
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个示例代码中,我们定义了一个`delete_value`函数,它接受一个二维数组和一个指定值作为参数。在函数中,我们使用两个循环来遍历二维数组,当找到一个等于指定值的元素时,我们使用一个循环将该元素后面的元素依次向前移动一个位置,并将最后一个元素置为0。在移动完元素后,我们将内层循环的计数器j减1,以便再次检查当前位置。最后,我们在主函数中调用`delete_value`函数,并打印删除后的二维数组。
阅读全文