当前位置 : 主页 > 编程语言 > c++ >

c – 计算整数区间(或int数组)中每个数字的出现次数

来源:互联网 收集:自由互联 发布时间:2021-06-23
使用循环,如何找到整数区间[n,m]中每个数字的出现? 例如: INPUT n,m = [19,23] = 19,20,21,22,23 输出应该是: 0次出现:1次 1次出现:2次 2次出现:5次 3次出现:1次等 #include iostreamusing namesp
使用循环,如何找到整数区间[n,m]中每个数字的出现?

例如:

> INPUT n,m = [19,23] = 19,20,21,22,23
>输出应该是:

0次出现:1次

1次出现:2次

2次出现:5次

3次出现:1次等

#include <iostream>
using namespace std;
int main()
{
 int i, j, z, count, n, m;
cin >>n >>m;

for(int i=0; i<10; i++)   // LOOP FOR DIGITS
    {
    cout << i <<"occurences: ";

    count=0;    
    for(int j=n; j<m; j++)  // LOOP INTEGER INTERVAL  
        {
        while (z!=0)  
            {
                z = j % 10;  // LAST DIGIT OF FIRST NUMBER IN INTERVAL
                if (z == i) count++;
                z /= 10;        
            }
        }
    cout << count <<" times"<< endl;
    }
}

我的代码每个数字返回0次,错误在哪里?

您不需要在范围内循环10次.

int n, m;
   cin >> n >> m;

   counts = int[10];
   for(int i = 0; i < 10; ++i) {
      counts[i] = 0;
   } 

   for(int j = n; j <= m; j++) {
            int z = j; 
            do {
                int digit = z % 10;  // LAST DIGIT OF FIRST NUMBER IN INTERVAL
                counts[digit]++;
                z /= 10;        
            } while (z != 0);
   }

   for(int i = 0; i < 10; ++i) {
      cout << i << " occurrences " << counts[i] << " times";
   }
网友评论