不为零的随机数的乘法

multiplication of random numbers different from zero

我有一个生成 10 个随机数的代码,我需要计算非零数字的总和和乘积,并显示哪些数字已相乘。我已经有了大部分代码,但我不知道如何将非零数字相乘然后显示它们。有人可以帮助我吗?

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <windows.h>

using namespace std;

int main()
{
    cout << "draws 10 numbers:" << endl;
    Sleep(1000);
    cout << endl;

    srand(time(0));
    int sum=0;
    int product=1;

    for(int i=0, value=0; i<10; i++, sum+=value, product*=value) 
    {
        value = rand()%10+0;
        Sleep(1000);
        cout << value << endl;
    }

    Sleep(1000);
    cout << "the sum is " << sum <<endl;
    cout << "the product is " << product <<endl;
    return 0;
  }

首先,如果我们将加法和乘法移出 for 循环,会更容易阅读和理解 header。

int sum = 0;
int value = 1;

for(int i = 0; i < 10; i++) 
{
  int value = rand() % 10;
  sum += value;
  product *= value;
  std::cout << value << std::::endl;
}

接下来,我们只想做乘法ifvalue不等于0

int sum = 0;
int value = 1;

for(int i = 0; i < 10; i++) 
{
  int value = rand() % 10;
  sum += value;

  if(value != 0)
  {
    product *= value;
  }

  std::cout << value << std::::endl;
}

所以整个程序是这样的。

#include <iostream>
#include <cstdlib>
#include <ctime>

int main()
{
  std::cout << "draws 10 numbers:" << std::endl;

  srand(time(0));
  int sum = 0;
  int product = 1;
  int multiplied = 0;

  for(int i = 0; i < 10; i++)
  {
    int value = rand() % 10;
    sum += value;

    if(value != 0)
    {
      product *= value;
      multiplied += 1;
    }

    std::cout << value << " ";
  }

  std::cout << std::endl;
  std::cout << "the sum is " << sum << std::endl;
  std::cout << "the product is " << product << std::endl;
  std::cout << "numbers multiplied is " << multiplied << std::endl;
  return EXIT_SUCCESS;
}