C语言习题——除自身以外数组的乘积

原题链接:238. 除自身以外数组的乘积 - 力扣(LeetCode) (leetcode-cn.com)

这是LeetCode上的一道题,在此处我实现了它的功能,但是最后一步把所求出的数字存进一个数组没写出来,可以创建一个存储len个元素的数组,然后每求出一个ret就存进数组中去,记得设置循环变量哦!

先上代码:

void get_result(int* arr, int len)
{
	int i = 0;
	for (i = 0; i < len; i++)
	{
		int ret = 0;
		int leftNum = 1;
		int rightNum = 1;
		int j = 0;
		int k = 0;
		for (j = 0; j < i; j++)
		{
			leftNum *= arr[j];
		}
		for (k = i + 1; k < len; k++)
		{
			rightNum *= arr[k];
		}
		ret = leftNum * rightNum;
		printf("%d ", ret);

	}
}
int main()
{
	int arr[100000] = { 0 };
	int num = 0;
	int i = 0;
	int count = 0;
	scanf("%d", &num);
	while (num != 31)
	{
		count++;
		arr[i] = num;
		i++;
		scanf("%d", &num);
	}
	get_result(arr, count);
	return 0;
}

写的过程都是基于原题条件:

在此处,首先我们创建一个可以存放10的五次方个元素的数组,然后我们开始向数组中录入数字,范围是-31到31,所以我们设置一个终止条件,当不想输的时候,就输入31作为终止条件。

而count变量是用来统计这次输入你一共录入了几个数字,用一个get_result函数来解决问题,我所做的是打印,所以不需要返回值,传进去的是数组和你输入的数字的个数。

我的思路是将arr[i]元素左边所有元素的乘积算出来,再把arr[i]元素右边所有元素的乘积算出来,最终的结果就是两者的乘积。

在函数get_result中,我们首先要遍历数组,然后用leftNum变量来记录arr[i]元素左边所有元素的乘积,用rightNum变量来记录arr[i]元素右边所有元素的乘积,用ret变量来表示最后的总乘积,再打印出来。这是一次的过程,一共有len个元素,所以有len次,也可以把这个值存进一个数组。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值