首页 > 解决方案 > 将数字相乘

问题描述

我想构建以下程序:

用户必须插入一个介于 100 和 999 之间的数字(如100 < i < 999),并且这些数字之间必须相乘。例子:

我试图实现第一部分,即通过以下两种方式检查作为输入给出的数字是否在 100 和 999 之间,但我的方法并不优雅:

#include <stdio.h>
int main()
{
    char n[4];    
    scanf("%s", n);
    printf("%d\n", (n[0]-'0')*(n[1]-'0')*(n[2]-'0'));
    return 0;
}

或者

#include<stdio.h>
int main()
{
    int array[3];
    scanf("%1d%1d%1d", &array[0],&array[1],&array[2]);
    for ( int i=0; i<3; i++) {
        printf("%d\n", array[i]);
    }        
    return 0;
}

他们有更好的方法来实现同样的目标吗?

我正在寻找 C++ 解决方案。

标签: c++

解决方案


std::cin您可以在一段时间内作为条件强加:

int x;
while (std::cin >> x && x>=100 && x <=999)
\\ Do what you want

对于数字相乘,只需通过除以 10 时的余数来提取每个数字,将其与当前乘积相乘(设置一个变量,初始值为 1),然后在循环中随后除以 10,直到得到所有数字的乘积. 例如,创建一个返回数字的数字乘积的函数:

int digitproduct(int x) 
{  int product = 1;
   while (x != 0)   
   {
        product *= (n % 10);
        x /= 10; 
    } 
    return product; 
} 

在 while 内调用它:

int x;
while (std::cin >> x && x>=100 && x <=999)
{   cout<< digitproduct(x);
    break;
}

推荐阅读