计算正整数num的各位上的数字之积

计算正整数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;
}