繁体   English   中英

如何在C中的最后一个非零数字后计算零

[英]how to count zero after the last non-zero digit in C

我需要在数字的最后一个非零数字之后计算零的数量

示例输入:20400

示例输出:2

这是我的代码如下:

#include<stdio.h>

int lastZero(int n);
int main()
{
    int number,lastZeroDigit;
    int i;
    scanf("%d",&number);
    lastZeroDigit = lastZero(number);
    
    for(i=number-1 ; i>1 ; i--)
        lastZeroDigit = lastZero(lastZeroDigit * i);
        
    printf(" %d \n",lastZeroDigit);
}

int lastZero(int n) 
{
    if(n%10 != 0)
        return n%10;
    
    else
        return lastZero(n/10);
}

如何在C中的最后一个非零数字后计算零

为什么要从number - 1迭代到>1并检查lastZeroDigit * i number 中的最后一个零? 如果您只想计算最后一个非零数字之后的数字中零的数量,则只需检查number % 10的结果,如果结果为0则增加计数器并执行number = number / 10并再次检查,否则停止。 需要特别注意0输入,即 - 如果输入为0无需检查,因为输入数字中没有非零数字。 你可以做:

#include<stdio.h>

int main (void)
{
    int number;
    unsigned int count = 0;

    printf ("Enter a number:\n");
    scanf ("%d", &number);
    
    while (number && (number % 10 == 0)) {
        ++count;
        number = number / 10;
    }
        
    printf ("Zero's after last non zero digit in number %d are : %u \n", number, count);

    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM