您的位置:首页 > 其它

《找“1”》

2015-06-04 13:49 190 查看
一 实验要求

给定一个十进制的正整数,写下从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;
}


四 效果截图





五 总结

在思考这道题目的时候,本来我陷入了一个死胡同,但是后来我理清思绪,换了一种思考方式就想出了这种方法。以后如果在思考问题时换一种思路,也会得到很好的效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: