使用c语音数组算法实现一本书的页码从自然数1开始顺序编码到自然数n。书的页码按通常习性编排每个页码都不含多余前导数字0数字计数问题要求对给定书的总页码n计算书的全部页码分别用到多少次数字012……9
以下是使用C语言数组算法实现该问题的代码:
#include <stdio.h>
void countDigits(int n, int count[]) {
int i, j, x, y, z, d;
for (i = 1; i <= n; i *= 10) {
x = n / (i * 10);
y = n / i % 10;
z = n % i;
for (j = 0; j < 10; j++) {
count[j] += x * i;
if (j < y) count[j] += i;
if (j == y) count[j] += z + 1;
}
count[0] -= i;
}
}
int main() {
int n, i;
printf("请输入书的总页码n:");
scanf("%d", &n);
int count[10] = {0};
countDigits(n, count);
printf("书的全部页码分别用到的数字0~9的次数为:\n");
for (i = 0; i < 10; i++) {
printf("%d: %d次\n", i, count[i]);
}
return 0;
}
运行程序后,输入书的总页码n,即可得到书的全部页码分别用到的数字0~9的次数。
原文地址: https://www.cveoy.top/t/topic/jb8C 著作权归作者所有。请勿转载和采集!