c++ - 将数字相乘
问题描述
我想构建以下程序:
用户必须插入一个介于 100 和 999 之间的数字(如100 < i < 999
),并且这些数字之间必须相乘。例子:
- 有效输入:178
- 对应结果:1*7*8 = 72
我试图实现第一部分,即通过以下两种方式检查作为输入给出的数字是否在 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++ 解决方案。
解决方案
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;
}
推荐阅读
- c# - 十进制类型在 .ASP.net Core Razor 绑定中失去精度
- javascript - 使用 ngx-filter-pipe 过滤多个值
- javascript - 反应中时间线组件中步骤的单击应设置为活动状态并更改时间线颜色
- python - django.db.utils.IntegrityError:NOT NULL 约束失败:new__users_personal_detail.husband_adhaarcopy
- c# - 如何检查对象类型变量是否为空?
- android - 将 Gradle 升级到 3.6.0 后找不到本机库
- css - 通过Angular中的插值将css应用于打字稿变量的某些部分
- php - 根据数据库中的单选按钮值显示 div
- python - groupby 表 Python Pandas 有问题吗?
- java - 通知安卓 (FCM)