加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 09:22:03 所属栏目:百科 来源:网络整理
导读:使用循环,如何找到整数区间[n,m]中每个数字的出现? 例如: INPUT n,m = [19,23] = 19,20,21,22,23 输出应该是: 0次出现:1次 1次出现:2次 2次出现:5次 3次出现:1次等 #include iostreamusing namespace std;int main(){ int i,j,z,count,n,m;cin n m;fo
使用循环,如何找到整数区间[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";
   }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读