课堂练习----“在正整数中寻找1的个数”

本文详细介绍了如何通过编程实现计算从1到N之间的所有整数中'1'出现的次数,并探讨了在32位整数范围内满足特定条件的最大N值。通过实际数据计算与总结规律,最终实现了一个简洁高效的算法。

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

一、题目要求

  给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。

   要求: 写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数。例如 f(12) = 5。

  在32位整数范围内,满足条件的“f(N) =N”的最大的N是多少?

二、设计思想

  从个位,十位,百位等一直到最高位寻找1的个数,最终将它们相加即求得其中出现“1”的总个数。首先我们俩从实际数据出发,在课堂上计算了3,13,23,33,43,53,63,73,83,93,103,113,123中各个数字中1出现的个数,然后从中总结出规律然后编程实现了。

三、代码实现

 1 #include<iostream.h>
 2 int main()
 3 {
 4     int count=0,i,N,temp;
 5     cout<<"请输入正整数的值:";
 6     cin>>N;
 7     for(i=1;i<=N;i++)
 8     {
 9         temp=i;//记录i的值
10         while(temp!=0)
11         {
12             if(temp%10==1)
13             {
14                 count=count+1;
15             }
16             temp=temp/10;
17         }
18     }
19     cout<<N<<"包含"<<count<<"个“1”"<<endl;
20     return 0;
21 }

 

四、实现截图

五、个人总结

  这个程序用了temp变量,count统计1的个数,虽然代码较短,但思考的过程是重要的,也是艰难的,刚开始没有思路,后来经过跟同学的讨论才慢慢发现了其中的奥秘,多向他人学习,才能使我们共同进步。

转载于:https://www.cnblogs.com/czl123/p/4465030.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值