编写一个显示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;
}
}
答案 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
声明是什么,那么它与else
和if
相结合:
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;
}
}
}