程序检查数字是否包含数字或该数字可除的数字

这是一个游戏,您必须将数字从0到1000进行计数。但是,如果数字中包含6,或者可以被6整除,则应打印“ Shaggy”,否则应打印数字。 / p>

Rules:

  1. 您不能对数字进行硬编码。

  2. 该号码仅需满足以下至少一项要求

    • 可被6整除
    • 数字包含6
  3. 某些分隔符是必需的(12345Shaggy7 ..不计算在内)

  4. 您必须精确地从1算到1000。

  5. 必须输出数字,但无论如何(例如,stdout,写入文本文件等)都无关紧要。

这是我尝试的代码:

#include <iostream>
#include <conio.h>

bool is_digitPresent(int x,int d)
{
    while (x > 0)
    {
        if (x % 10 == d)
            break;
        x = x / 10;
    }
}

int main()
{
    int i,n,x;
    clrscr();
    std::cout << "----------------Let's play The Shaggy Game....Are you ready..?------------------\n";
    std::cout << "Enter a number!";
    std::cin >> n;
    for (i = 0; i < n; i++)
    {
        if (i % 6 == 0 || is_digitPresent(i,6))
            std::cout << "Shaggy!\t";
        else
            std::cout << i << "\t";
    }
    getch();
    return 0;
}

但是它没有按预期工作,我在做什么错了?

iCMS 回答:程序检查数字是否包含数字或该数字可除的数字

问题是is_digitPresent不返回任何内容,以后在布尔表达式中使用它会引发未定义的行为。

您将需要以下内容:

bool is_digitPresent(int x,int d)
{
    while (x > 0)        
    {                     
        if (x % 10 == d)   
            return true;   
        x = x / 10;        
    }                    
    return false;
}

固定的,主要是周期:

for (i = 0; i < n; i++){ /*...*/}

使输出具有极限,这是输入数字本身的限制,只需将其删除一次即可执行。

如果目标是创建一个循环,使程序不断询问用户输入,或者希望输入的值有上限,则完全需要其他东西。

此外,i不是您要测试的值,而是n,它是输入的值。

删除for循环,请执行以下操作:

if (n % 6 == 0 || is_digitPresent(n,6))
    std::cout << "Shaggy!\t";
else
    std::cout << n << "\t";

Live demo

请注意,此答案只是一个错误修复,其中未提及您提到的某些规则,也不是该论坛的目标,目标是让您自己完成练习,如果有的话需要。

本文链接:https://www.f2er.com/2007504.html

大家都在问