计算幸运数字 - C ++

时间:2015-05-05 22:58:53

标签: c++

我想制作一个遵循这条规则的程序:

如果用户输入'n',您需要找到从1到n的所有幸运数字。幸运数字是指数字为4或7或两者的数字。

我做了这个,但无法管理如何对大于10的数字进行操作。

#include<iostream>

using namespace std;

int main()
{
    int digits, n, count=0;
    cout << "Enter upper limit: ";
    cin >> n;

    for (int i=0; i<n; i++){
        if((i==4) || (i==7)){
            count++;
        }
    }
    cout << "Number of lucky numbers in given range is " << count;

    return 0;
}

3 个答案:

答案 0 :(得分:8)

将整数格式化为字符串。然后,测试字符串中的所需字符。

奖励方法(仅限整数):您可以使用对数,除法,模数,减法等来迭代并测试每个数字。

答案 1 :(得分:1)

@Steven方法非常好,但您也可以将输入替换为char数组而不是int并使用cin::getline函数。

int main()
{
    int n;
    int count = 0;

    cout << "Enter upper limit: ";
    cin >> n;

    for (int i = 1; i <= n; i++)
    {
        char szBuffer[100];
        sprintf_s(szBuffer, "%d", i);
        if ( strstr(szBuffer,"4") != NULL || strstr(szBuffer,"7") != NULL )
        {
            count++;
        }
    }
    cout << "Number of lucky numbers in given range is " << count;

    return 0;
}

答案 2 :(得分:0)

我现在正在做这个练习。我接受了你的初步建议并对其进行了扩展以获得以下内容(插入代替你的for循环):

for (int i=0; i<=n; i++){
        int j = i;
        while(j > 1) {
            if((j % 10 == 4 || j % 10 == 7)) {
                count++;
                break;
            }
            j = j / 10;
        }
    }

这似乎得到了预期的答案。然而,当试图检查解决方案时,该网站声称结果是错误的n = 74(它声称正确的答案是15,但手工计数我很确定它是27,这是这个代码还返回什么)。我没弄清楚我做错了什么,所以我试图在网站上记录一张票。