#include<stdio.h>
//除自身以外数组的乘积
//定义标识符作为元素个数
#define M 4
int main()
{
//定义输入数组与输出数组
int nums[100] = { 0 };
int anwer[100] = { 0 };
//输入元素
int i = 0;
int j = 0;
int m = 0;
int q = 0;
int a = 1;
int tmp = 1;
//输入元素
for (i = 0; i < M; i++)
{
scanf("%d", &nums[i]);
}
for (i = 0; i < M; i++)//从第一个元素开始,依次计算除自身以外的乘积
{
//计算除自身以外数组的乘积
//计算除元素1以外的乘积
for (j = 1; i == 0&&j<M; j++)
{
//将结果放在anwer上
tmp *= nums[j];
anwer[0] = tmp;
}
//停止本轮循环,让i++,计算下一个元素
if (0 == i)
{
continue;
}
//计算除元素M以外的乘积
for (j = M-1; i == M - 1&& j >0; j--)
{
//将结果放在anwer上
a *= nums[j-1];
anwer[M - 1] = a;
}
//计算除元素1和最后元素外的元素情况
for (q=i;q<M-1;q+=M)//q+=M的作用是跳出循环
{
int k = 1;//存放右边元素的乘积
int win = 1;//存放左边元素的乘积
for (m = q, j = q; m > 0 || j < M-1 ; m--, j++)
{
if (m > 0)//当m>0时,表示左边的元素乘积已经算完,无需在计算
{
win *= nums[m - 1];
}
if (j < M - 1)//当j<M-1时,表示右边的元素乘积已经算完,无需在计算
{
k *= nums[j + 1];
}
anwer[i] = win * k;
}
}
}
for (i = 0; i < M; i++)
{
printf("%d,", anwer[i]);
}
return 0;
}
【C语言】除自身以外数组的乘积
于 2023-02-03 19:00:10 首次发布