3194:【例32.3】 数位积
[例 32.3] 数位积
C代码:
#include <stdio.h>
#include <stdlib.h>
//定义long long类型避免int溢出
typedef long long l;
//函数计算一个数各位数字乘积
l ans(l n)
{
//如果为0直接返回0
if(n == 0) return 0;
//定义临时变量存储乘积
l temp = 1;
//使用while循环遍历n每一位数字
while(n)
{
//提取每一位数字
temp *= (n % 10);
//去掉最后一位准备下一次循环
n /= 10;
}
//返回乘积
return temp;
}
int main()
{
//声明变量存储测试次数和每个数字
l n, t;
//读取测试次数
scanf("%lld",&t);
//使用while循环处理多组测试用例
while(t--)
{
//读取每个数字
scanf("%lld",&n);
//调用函数计算乘积并输出
printf("%lld\n",ans(n));
}
//返回0
return 0;
}
C++源码:
#include<bits/stdc++.h>
using namespace std;
int n;
string a;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
long long mul=1;
for(int i=0;i<a.size();i++)
{
mul*=(a[i]-'0');
}
cout<<mul<<"\n";
}
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int n,a,ans=1;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
if(a==0){
cout<<0<<endl;
continue;
}
while(a){
ans*=a%10;
a/=10;
}
cout<<ans<<endl;
ans=1;
}
return 0;
}
python3程序:
n=int(input())
for i in range(n):
x=int(input())
if x==0:
print(0)
continue
j=1
while x:
j*=x%10
x//=10
if j==0:
break
print(j)
信息学一本通 编程启蒙题解 3167 统计奖牌
信息学一本通 编程启蒙题解 3168_求出e的值
信息学一本通 编程启蒙题解 3172_短信计费
信息学一本通 编程启蒙题解 3174_求阶乘
信息学一本通 编程启蒙题解 3175_ 幂的末尾
信息学一本通 编程启蒙题解 3177 人口增长问题