使用循环,如何找到整数区间[n,m]中每个数字的出现? 例如: INPUT n,m = [19,23] = 19,20,21,22,23 输出应该是: 0次出现:1次 1次出现:2次 2次出现:5次 3次出现:1次等 #include iostreamusing namesp
例如:
> 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"; }