c ++程序显示编号

时间:2014-06-04 10:14:09

标签: c++ modulo

编写一个显示1到100之间数字的程序

*如果数字可被3整除,则显示aaa
*如果数字可被5整除,则显示bbb
*如果数字可以被3和5整除,那么它会显示ccc
*其他显示号码

*每个号码必须单行显示

我怎样才能在c ++中这样做?到目前为止,我已经写了这个,但它没有按预期工作

 for(int i=1;i<=100;i++)
{
    if(i%3==0)
        cout<<"aaa"<<endl;
    if(i%5==0)
        cout<<"bbb"<<endl;
    if(i%3==0 && i%5==0)
        cout<<"ccc"<<endl;
    else
    {
        cout<<i<<endl;
    }

}

4 个答案:

答案 0 :(得分:2)

如果您想使用某种原创方法,那么您可以通过以下方式编写程序:。)

#include <iostream>

int main() 
{
    for ( int i = 1; i <= 100; i++ )
    {
        unsigned mask = ( i % 3 == 0 ) + ( ( i % 5 == 0 ) << 1 );

        switch ( mask )
        {
        case 1:             
            std::cout << "aaa";
            break;
        case 2:
            std::cout << "bbb";
            break;
        case 3:
            std::cout << "ccc";
            break;
        default:
            std::cout << i;
            break;
        }

        std::cout << std::endl;
    }

    return 0;
}

例如,如果使用范围[1,15]而不是[1,100]那么输出将是

1
2
aaa
4
bbb
aaa
7
8
aaa
bbb
11
aaa
13
14
ccc

或者您甚至可以为可读性引入枚举。例如

#include <iostream>

int main() 
{
    enum { NONE = 0, AAA = 1, BBB = 2, CCC = AAA + BBB };

    for ( int i = 1; i <= 100; i++ )
    {
        //                   AAA       +         BBB             
        unsigned mask = ( i % 3 == 0 ) + ( ( i % 5 == 0 ) << 1 );

        switch ( mask )
        {
        case AAA:               
            std::cout << "aaa";
            break;
        case BBB:
            std::cout << "bbb";
            break;
        case CCC:
            std::cout << "ccc";
            break;
        default:    //  NONE
            std::cout << i;
            break;
        }

        std::cout << std::endl;
    }

    return 0;
}

如果是学校作业,那么我向你保证,没有人会提出我所展示的解决方案。你将是唯一提出这种解决方案的人。:)

答案 1 :(得分:0)

第二个和第三个&#34;如果&#34;应该是&#34;否则如果&#34;, 否则它们是断开连接的if-structures,这意味着if语句被视为不相互了解的单独代码位 - 每次都是每次评估。 因此,每次评估最后一次if,意味着最后一次&#34; else&#34;将比你预期的更频繁地完成并且每次打印数字

此外,第三个if应该是第一个,以避免多个字母打印(aaa bbb ccc东西)

答案 2 :(得分:0)

我认为这应该符合您的期望:

for(int i=1;i<=100;i++)
{
  if(i%3==0 && i%5==0)
    cout<<"ccc"<<endl;
  else if(i%3==0)
    cout<<"aaa"<<endl;
  else if(i%5==0)
    cout<<"bbb"<<endl;
  else
  {
    cout<<i<<endl;
  }
}

答案 3 :(得分:0)

如果有很多选择,我们只选择一个,我们经常写if-else嵌套语句:

if(i%3==0 && i%5==0)
    cout<<"ccc"<<endl;
else if(i%3==0)
    cout<<"aaa"<<endl;
else if(i%5==0)
    cout<<"bbb"<<endl;
else
    cout<<i<<endl;

如果您无法弄清楚else if声明是什么,那么它与elseif相结合:

if(i%3==0 && i%5==0)
{
    cout<<"ccc"<<endl;
}
else
{
    if(i%3==0)
    {
        cout<<"aaa"<<endl;
    }
    else
    {
        if(i%5==0)
        {
            cout<<"bbb"<<endl;
        }
        else
        {
            cout<<i<<endl;
        }
    }
}