码迷,mamicode.com
首页 > 其他好文 > 详细

《找“1”》

时间:2015-06-04 15:28:40      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

一 实验要求

给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
要求:
写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数。例如 f(12)  = 5。
在32位整数范围内,满足条件的“f(N) =N”的最大的N是多少。

二 思路

计算从一到这个数有多少个一,只要一个一个数出就可以了,用到for循环一个一个数检验,一个循环内得到这个数的每一位,每得到一个一就将计数加一,for循环完成后输出。

三 代码实现

//康娜
#include<iostream>
using namespace std;

void main()
{
    int i,n,a=0,b,c,length=0;
    cout << "请输入计算的数字";
    cin >> n;
    
    for (i = 1; i <= n; i++){
        b = i;
        while (b != 0)
        {
            c = b % 10;
            if (c== 1)
            {
                a++;
            }
            b = b / 10;
        }

    }
    cout << a;
}


四 效果截图

技术分享技术分享

五 总结

在思考这道题目的时候,本来我陷入了一个死胡同,但是后来我理清思绪,换了一种思考方式就想出了这种方法。以后如果在思考问题时换一种思路,也会得到很好的效果。

 

《找“1”》

标签:

原文地址:http://www.cnblogs.com/lottie021/p/4551595.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!