C++ 计算幸运数字-C++;

C++ 计算幸运数字-C++;,c++,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; fo

我想制作一个遵循以下规则的程序:

给定用户输入的“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;
}
#包括
使用名称空间std;
int main()
{
整数位数,n,计数=0;
cout>n;

对于(int i=0;i将整数格式化为字符串。然后,测试字符串中所需的字符


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

@Steven方法非常好,但您也可以将输入替换为字符数组而不是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;
}
intmain()
{
int n;
整数计数=0;
cout>n;

for(int i=1;i我现在正在做这个练习。我接受了您最初的建议,并对其进行了扩展,以获得以下内容(插入到for循环的位置):

for(int i=0;i 1){
如果((j%10==4 | | j%10==7)){
计数++;
打破
}
j=j/10;
}
}

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

这是一个聪明的想法。这甚至没有回答问题,但它有上升投票。Rawrn对我不起作用,上限为10时显示0,上限为14时显示1。你知道为什么吗?@qwerasdzxc,因为这段代码只计算给定n中的4和7不是从1到n的所有数字。@qwerasdzxc我修改了我的答案:)我刚刚在提供练习的网站上记录了一个问题,他们似乎已经确认了我的解决方案是正确的,并相应地调整了他们的检查。我想我的答案已经过了太多时间,无法再对您有用了,但感谢您启发我如何制定解决方案。
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;
        }
    }