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

题目:

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

要求:
输入

书本的页码总数n (0<n<200)

输出

输出书的全部页码中分别用到多少次数字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 <stdio.h>
//页码问题
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;

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值