数组中包含若干个0,去掉0,且数组的顺序不变

/*
	int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A,int nSize),
	使A把0移至后面,非0整数移至数组前面并保持有序(按原来顺序),返回值为原数据中第一个
	元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路) 
*/

#include <stdio.h>
#include <stdlib.h>

#define ARRAYSIZE	18

int Func(int *Input, int nSize);

int main (int argc, char **argv)
{
	int ArrayInt[ARRAYSIZE] = {1,2,3,4,0,5,7,0,7,5,3,2,0,234,3,0,2,4};
	
	printf("数组的原始值为:\n");
	for (int i = 0; i < ARRAYSIZE; i++)
	{
		printf("%-4d", ArrayInt[i]);
	}
	printf("\n");

	printf("第一个不为0的下标:%d\n", Func(ArrayInt, ARRAYSIZE));
	printf("去掉0后的值:\n");
	for (int i = 0 ; i < ARRAYSIZE; i ++)
	{
		if (0 != ArrayInt[i])
		{
			printf("%-4d", ArrayInt[i]);
		}
	}
	printf("\n");

	system("pause");
	return 0;
}

int Func(int *Input, int nSize)
{
	bool FlagFirstZero = false;
	int FirstZeroIndex = 0;
	int CountZero = 0;

	for (int i = 0; i < nSize-1; i ++)
	{
		if (0 == Input[i] && !FlagFirstZero)
		{
			FirstZeroIndex = i;
			FlagFirstZero = true;
		}

		if (0 == Input[i] && 0 == Input[i+1])
		{
			CountZero++;
		}
		else if (0 == Input[i] && 0 != Input[i+1])
		{
			Input[i-CountZero] = Input[i+1];
			Input[i+1] = 0;
		}
	}

	return FirstZeroIndex;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要按顺序调用数组中的每个元素,可以使用循环语句,如for循环或while循环。例如,以下代码使用for循环按顺序打印数组中的每个元素: ```java int[] arr = {1, 2, 3, 4, 5}; for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } ``` 在这个例子中,for循环从0开始迭代,直到数组的长度为止。在每次迭代中,使用索引变量i来访问数组中的元素,并将它们打印到控制台上。因此,这段代码将按顺序打印数组中的每个元素。 ### 回答2: 要按顺序调用数组中的每个元素,可以使用for循环来遍历数组。具体步骤如下: 1. 定义一个数组,如int类型的数组arr:int[] arr = {1, 2, 3, 4, 5}; 2. 使用for循环遍历数组元素:for(int i = 0; i < arr.length; i++); 3. 在循环体内,通过索引i获取当前元素的值,如int element = arr[i]; 4. 对当前元素进行相应的操作,如输出到控制台:System.out.println(element); 5. 循环体执行完毕后,继续下一轮迭代。 上述操作可以确保按顺序调用数组中的每个元素。循环从数组的第一个元素开始,到最后一个元素结束。每次循环迭代时,将当前元素的值存储到临时变量中,通过这个临时变量进行后续的操作,如输出或进行其他计算。 需要注意的是,数组Java中是从0开始索引的,所以循环的索引变量i的初始值为0,条件为i < arr.length,每次循环迭代时,索引i递增。循环条件中的arr.length表示数组的长度,保证循环在数组的有效索引范围内进行。 最终,通过使用for循环来遍历数组,按顺序调用数组中的每个元素。 ### 回答3: 在Java中,按顺序调用数组中的每个元素可以通过使用循环结构来实现。其中,最常用的循环结构是for循环。 下面是一个示例代码,展示了如何按顺序调用数组中的每个元素: ```java public class Main { public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5}; // 使用for循环按顺序调用数组中的每个元素 for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } } ``` 在这个示例中,我们定义了一个包含5个整数的数组`array`。然后,使用for循环按顺序遍历数组中的每个元素,将元素打印输出。循环变量`i`初始值为0,每次循环递增1,直到`i`的值大于等于数组长度。 通过这个for循环结构,我们可以确保按顺序调用数组中的每个元素。在每次循环中,我们可以通过`array[i]`来访问当前循环索引`i`对应的元素,并对其进行相应的操作或处理。 上述示例只是演示了一种按顺序调用数组元素的方法,实际上,Java还提供了其他循环结构(如while循环、do-while循环)和方法,供开发者根据具体需求进行选择和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值