例如数组为 [0, 1, 3],除当前元素的所有元素乘积为 [1 * 3, 0 * 3, 0 * 1],结果为 [3, 0, 0]
输入:3
0 1 3
输出:3 0 0
#include <stdio.h> #define MAX_SIZE 1024 int main(int argc, char **argv) { int n, i, j, temp; int result = 1; // 计算数组arr1所有数的乘积 int count = 0; // 记录0的个数 int arr1[MAX_SIZE]; int arr2[MAX_SIZE]; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &arr1[i]); } for (i = 0; i < n; i++) { if (arr1[i] == 0) { count++; temp = i; } else { result *= arr1[i]; } } if (count == 0) // 数组1的成员中没有0 { for (j = 0; j < n; j++) { arr2[j] = result / arr1[j]; } } else if (count == 1) // 数组1的成员有1个0 { for (j = 0; j < n; j++) { if (j == temp) { arr2[j] = result; } else { arr2[j] = 0; } } } else // 数组1的成员0的个数>1 { for (j = 0; j < n; j++) { arr2[j] = 0; } } for (int j = 0; j < n; j++) { printf("%-2d", arr2[j]); } printf("\n"); return 0; }