算法设计与分析 | 页码统计

题目:

一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如第6页用6表示而不是06或006。数字统计问题要求对给定书的总页码,计算出书的全部页码中分别用到多少次数字0,1,2,3,.....9。

要求:

输入

书本的页码总数n (0

输出

输出书的全部页码中分别用到多少次数字0,1,2,3,.....9,每个数字占一行

分析

先初始化一个数组来存储出现0~9的页码数字的个数,因为数组刚好是从下标0开始的,则可以在取模后的数字作为arr1的下标。这里使用两个循环,第一个for循环将页码从1~num,然后在while循环里面判断j>0,进入循环,得到取模后的k,然后对应arr1数组中加1,再j=j/10,再判断j。

代码

#define _CRT_SECURE_NO_WARNINGS 
#include 
//页码问题
int main() {
	int num=0;//输入数字
	int i;
	int arr1[10] = { 0 };//统计数组
	scanf("%d", &num);

	for (i = 1; i <= num; i++) {
		int j = i;
		//如果页码数大于0
		while (j > 0) {
			int k = j % 10;//
			//相应页号+1
			arr1[k]++;
			j=j/ 10;
		}
	}
	for (int p = 0; p < 10;p++){
		printf("%d\n", arr1[p]);
	}
	
	return 0;

}

你可能感兴趣的:(算法设计与分析,算法,c++,开发语言)