每日编程-20170308

本文介绍了一个简单的C++程序,该程序能够统计从1到任意整数N之间所有数字中0-9这十个数字各自出现的次数。通过两次循环实现,首先遍历1到N的所有数字,然后对每个数字进行位操作来统计每位上数字的出现频率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:从1开始到N个自然数中,0-9每个数字出险次数进行统计。(昨天做的牛客网统一考试题)

输入:N

输出要求: 输出10个数字对应的出现次数,以空格为间隔,最后一个数字后面不加空格

解答:

 1 #include <iostream>
 2 using std::cout; using std::endl; using std::cin;
 3 int main() {
 4     int c[10] = { 0 };  //初始化数组用于存放每个数字出现次数,0开始
 5     int number;
 6     cin >> number;  //输入N
 7     for (auto i = 1; i <= number; i++)  //遍历1到N
 8     {
 9         int j = i;  //设置i的副本,避免改变i
10         do {
11             c[j % 10]++;
12             j /= 10;
13         } while (j!= 0);  //页数每次取10的余数,然后除10,直到为0
14     }
15     for (auto i = 0; i < 10;i++) //遍历数组
16     {
17         cout << c[i];  //输出
18         if (i != 9)
19         {
20             cout << " ";  //除了最后一个元素,其他元素后加空格
21         }
22     }
23 }

改进:

do while完全没必要,没有页码0

 1 #include <iostream>
 2 using std::cout; using std::endl; using std::cin;
 3 int main() {
 4     int c[10] = { 0 };
 5     int number;
 6     cin >> number;
 7     for (auto i = 1; i <= number; i++)
 8     {
 9         int j = i;
10         while (j!=0)
11         {
12             c[j % 10]++;
13             j /= 10;
14         }
15     }
16     for (auto i = 0; i < 10;i++)
17     {
18         cout << c[i];
19         if (i != 9)
20         {
21             cout << " ";
22         }
23     }
24 } 

 

转载于:https://www.cnblogs.com/linhaowei0389/p/6518269.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值