计算正整数num的各位上的数字之积。例如:输入315, 则输出应该是15 (315=15)。要求:判断用户输入的是否是数字,如果不是数字,需要让用户重新输入,直到用户输入数字为止。
while True:
num=input('请输入整数:')
if num.isnumeric():break
s=1
for i in num:
s*=int(i)
print(s)
#include<stdio.h>
#include<stdlib.h> //使用atoi()函数
int is_int(char *s) //判断s中是否为整数,如果是返回1,否则返回0
{
char* p = s; //p指向s
if(*p=='+') p++; //如果允许负数,判断条件加上:||*p=='-'
while(*p) //遍历字符串
{
if(*p<'0'||*p>'9') return 0;//出现非法字符,返回0,表示不是整数。
p++; //判断下一个字符。
}
return 1; //所有都是合法字符,返回1,表示为整数
}
int main()
{
char s[100];
int n, t = 1;
printf("请输入一个正整数:\n");
gets(s); //读取输入,存到s中。
while(1) //判断并输出结果
{
if(is_int(s)){
n = atoi(s);
while(n){
t *= n%10;
n /= 10;
}
printf("各位上的数字之积:%d",t);
break;
}
printf("输入的 %s 不是正整数,请重输:\n",s);
gets(s);
}
return 0;
}