1.源代码
#include <stdio.h>
int main(){
int i,j,count=0,num;
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}};
scanf("%d",&num);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]!=num){
count++;
a[(count-1)/5][(count-1)%5]=a[i][j];
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(count==0)
return 0;
else
{
printf("%3d",a[i][j]);
count--;
}
}
printf("\n");
}
return 0;
}
2.代码思路
这段代码的功能是从标准输入读取一个整数num,然后在一个5x5的二维数组a中删除所有等于num的元素,并将剩余的元素向左上角移动,最后在标准输出打印出新的数组a。
这段代码的逻辑是:
- 首先,定义了四个整型变量i,j,count和num,以及一个5x5的整型二维数组a,初始化为{{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}}。
- 然后,使用scanf函数从标准输入读取一个整数,并赋值给num变量。
- 接着,使用两层for循环遍历数组a中的每个元素,如果元素不等于num,就将count变量加一,并将元素赋值给a[(count-1)/5][(count-1)%5],这样就相当于将元素向左上角移动,覆盖掉之前等于num的元素。
- 最后,使用另外两层for循环打印出新的数组a,如果count变量为0,说明数组a中所有元素都等于num,就直接返回0,否则就使用printf函数打印出每个元素,并将count变量减一,直到count变量为0为止。
例如,如果您输入的num为3,那么这段代码的输出样例是:
3
1 2 4 5 6
2 4 5 6 7
0 1 2 3 4
6 7 8 9 0
如果您输入的num为0,那么这段代码的输出样例是:
0
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
6 7 8 9