旅馆里有一百个房间,从1到100编了号,第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”……,以后都是如此。问第100个服务员来过后,哪几扇门是打开的。
怎么写程序。。好的追加
一楼,有错误,貌似都不对
二楼你理解错了。。
C++ 开关门的问题
答案:3 悬赏:40 手机版
解决时间 2021-01-29 14:40
- 提问者网友:我的未来我做主
- 2021-01-28 23:16
最佳答案
- 五星知识达人网友:詩光轨車
- 2021-01-28 23:29
int main()
{
int a[101]; //定义一百个房间门的状态,a[i]表示第I个房间的
//状态,0关闭,1打开
int i; //服务员编号
int j;
for(i=1;i<=99;i++)
{
for(j=1;;j++)
{
if(i*j<=100)
{
if(a[i*j]==0)
a[i*j]=1;
else if(a[i*j]==1)
a[i*j]=0;
}
else
{
break; //本个服务员开关门完成,跳出循环到下个服务员
}
}
}
for(j=1;j<=100;j++)
{
if(a[j]==1)
printf("%d",j);
}
}
呵呵,电脑重装了系统,没有编译器,不过感觉大体思想就是这样的,有什么问题可以联系我。felixchin007@gmail.com
{
int a[101]; //定义一百个房间门的状态,a[i]表示第I个房间的
//状态,0关闭,1打开
int i; //服务员编号
int j;
for(i=1;i<=99;i++)
{
for(j=1;;j++)
{
if(i*j<=100)
{
if(a[i*j]==0)
a[i*j]=1;
else if(a[i*j]==1)
a[i*j]=0;
}
else
{
break; //本个服务员开关门完成,跳出循环到下个服务员
}
}
}
for(j=1;j<=100;j++)
{
if(a[j]==1)
printf("%d",j);
}
}
呵呵,电脑重装了系统,没有编译器,不过感觉大体思想就是这样的,有什么问题可以联系我。felixchin007@gmail.com
全部回答
- 1楼网友:掌灯师
- 2021-01-29 00:45
楼上的说用i==3;可以执行,因为i的值不确定,所以i==3这个判断语句的值要么为0,要么为1
所以程序最后输出的结果为abcd
switch()里面可以放表达式,case后面不能为表达式.
程序运行结果为bcdabcd
switch(i=3)i=3的表达式的值为3
所以case 2不执行,从case 3开始执行,一直到遇到break或者switch结束为止.所以就输出bcdabcd
准确的应为:
switch(i=3)
{
case 2 :cout<<"a";
case 3 :cout<<"b";
case 4 :cout<<"c";
case 5 :cout<<"d";
default : cout<<"abcd";
}
- 2楼网友:拾荒鲤
- 2021-01-28 23:44
#include
using namespace std;
int main(){
int a[101];
for(int i=1;i<=100;i++)
a[i]=-1;
for(int i=1;i<=100;i++)
for(int j=1;j<=100;j++)
if(j%i==0)a[j]=-a[j];
for(int i=1;i<=100;i++)
if(a[i]==1)
cout<
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯