计算C ++中以数字为0的数字

我们提供了一个数字N。目标是查找数字为0且范围为[1,N]的数字。

我们将通过从10到N遍历数字来完成此操作(无需从1到9进行校验),对于每个数字,我们将使用while循环检查每个数字。如果发现任何数字为零增量计数,然后移至下一个数字,否则将数字减少10以检查数字,直到数字> 0。

让我们通过示例来理解。

输入值 

N=11

输出结果 

Numbers from 1 to N with 0 as digit: 1

说明 

Starting from i=10 to i<=11

Only 10 has 0 as a digit. No need to check the range [1,9].

输入值 

N=100

输出结果 

Numbers from 1 to N with 0 as digit: 10

说明 

10, 20, 30, 40, 50, 60, 70, 80, 90, 100. Ten numbers have 0 as digits.

以下程序中使用的方法如下

  • 我们取整数N。

  • 函数haveZero(int n)以n为参数并返回以0为数字的数字的计数

  • 对于此类数字,将初始变量计数设为0。

  • 使用for循环遍历数字范围。i = 10到i = n

  • 现在,对于每个数字num = i,使用while循环检查num%10 == 0,是否将num除以10,然后移至下一位直到num> 0

  • 如果为true,则停止进一步检查,增加计数并在while循环中中断。

  • 在所有循环的末尾,计数将是一个总数,其中1到N之间的数字为0。

  • 返回计数结果。

示例

#include <bits/stdc++.h>

using namespace std;

int haveZero(int n){

   int count = 0;

   for (int i = 1; i <= n; i++) {

      int num = i;

      while(num>1){

         int digit=num%10;

         if (digit == 0){

            count++;

            break;

         }

         else

            { num=num/10; }

      }

   }

   return count;

}

int main(){

   int N = 200;

   cout <<"Numbers from 1 to N with 0 as digit: "<<haveZero(N);

   return 0;

}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Numbers from 1 to N with 0 as digit: 29

以上是 计算C ++中以数字为0的数字 的全部内容, 来源链接: utcz.com/z/321884.html

回到顶部