9)现在有如下的一个数组: int oldArr[] = { 1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5 }
要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,
生成的新数组为: int newArr[] = { 1, 3, 4, 5, 6, 6, 5, 4, 7, 6, 7, 5 }
思维导构
1.新建一个长度相同的数组newArr,先把不为0的值往前放,0全放在后面 例:{1, 3, 4, 5, 6, 6, 5,0,0,0,0}
2.计算老数组中不为0的值的个数sum
3.再新建一个长度为sum的新数组newArr1,将newArr不为0的值放入newArr1中
int[] oldArr = { 1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5 };
int[] newArr = new int[oldArr.Length]; //新建一个长度相同的新数组
int sum = 0; //不为0的个数,也就是目标数组的长度
for (int i = 0; i < oldArr.Length; i++) //遍历老数组oldArr
{
if (oldArr[i]!=0)
{
newArr[sum] = oldArr[i]; //巧妙运用sum当新数组newArr的下标,将老数组oldArr不 为0的值赋给newArr
sum++; //每走一个不为0的值sum加1
}
}
int[] newArr1 = new int[sum]; //新建一个目标数组newArr1
for (int k = 0; k < newArr1.Length; k++) //遍历新数组newArr
{
newArr1[k] = newArr[k]; //把新数组newArr赋给目标数组newArr1
}
foreach (var item in newArr1) //打印目标数组
{
Console.WriteLine(item);
}