重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我这手头上没有写c的东西,拿java写了一下,其实都差不多:
创新互联-专业网站定制、快速模板网站建设、高性价比安平网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式安平网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖安平地区。费用合理售后完善,十余年实体公司更值得信赖。
public static void main(String[] args) {
//一开始的 6*10 数组
int[][] sz = {
{5, 6, 4, 0, 2, 9, 8, 10, 3, 7},
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
{3, 8, 4, 6, 9, 0, 10, 5, 7, 2},
{3, 6, 0, 10, 4, 7, 5, 2, 8, 9},
{1, 2, 8, 4, 5, 6, 7, 9, 3, 10},
{9, 2, 3, 6, 7, 8, 10, 0, 4, 5}
};
//声明一个 6*10的数组用来存储最终结果
int[][] result = new int[6][10];
int x = 0;
for (int i = 0; i 6; i++) {//遍历sz数组
for (int j = 0; j 10; j++) {
if (j 8) {//每行最后两列不需要比较了,只有前7列可能产生连续
if (sz[i][j + 1] - sz[i][j] == 1) {//如果 (i,j+1) 与 (i,j) 连续
if (sz[i][j + 2] - sz[i][j + 1] == 1) {//又如果 (i,j+2)与(i,j+1)连续
break;//则这一行出现了连续数字,这一行就不要了
}
}
} else {//如果这一行的所有数字都不连续,则将此行复制到result数组中
for (j = 0; j 10; j++) {
result[x][j] = sz[i][j];
}
x++;//result数组行数+1
}
}
}
//完事了,循环输出result数组结果
for (int i = 0; i 6; i++) {
System.out.print(i + ":");
for (int j = 0; j 10; j++) {
System.out.print(result[i][j] + " ");
}
System.out.println("");
}
}
运行结果:
0:5 6 4 0 2 9 8 10 3 7
1:3 8 4 6 9 0 10 5 7 2
2:3 6 0 10 4 7 5 2 8 9
3:0 0 0 0 0 0 0 0 0 0
4:0 0 0 0 0 0 0 0 0 0
5:0 0 0 0 0 0 0 0 0 0
一个文件内的内容加载到内存之后是连续存储的。(至少这种小文件,不超过4KB的)
如果想达到删除一行的效果。至少有三种办法可以实现
一、最简单的办法,建议读到链表里,删除其中一个节点。然后再覆盖写回到文件。
二、找到要删除的位置,fseek到该位置,将之后需要保留的文件内容,从这里开始写。
三、利用内存映射,将文件映射到内存,直接对内存修改,但是对内存修改,也是需要类似于方法2,将需要保留的内容重新移动位置。
综上,方法一最简单。
试一下这个:
#include stdio.h
int main()
{
float I,n;
printf("1234\n");
printf("3456");
printf("\b\b\b\b");
return 0;
}