一个C++程序,运行不出结果,求大神解答? 20
#include<iostream>usingnamespacestd;intmain(){inta[100],n,i;int*p;p=a;cin>>n;for(i=0;...
#include <iostream>
using namespace std;
int main()
{
int a[100],n,i;
int *p;
p=a;
cin>>n;
for(i=0;i<=n-1;i++)
a[i]=i+1;
int j;
for(i=2;;i=i+3)
{
if(i<=n-1)
{
if(*(p+i)!=0)
{
*(p+i)=0;
j++;
}
else
{
*(p+i+1)=0;
i++;
}
}
if(i>n-1)
{
i=(i+1)%n-3; //让i回到前面
i--;
}
if(j==n-1)
break;
}
for(i=0;i<=n-1;i++)
{
if(a[i]==0)
continue;
else
cout<<a[i];
}
return 0;
}
是一个n个人围成圈,1-3报数,数到三的人退出,再继续数,直到剩一个人,问剩一个人的序号是多少的问题. 展开
using namespace std;
int main()
{
int a[100],n,i;
int *p;
p=a;
cin>>n;
for(i=0;i<=n-1;i++)
a[i]=i+1;
int j;
for(i=2;;i=i+3)
{
if(i<=n-1)
{
if(*(p+i)!=0)
{
*(p+i)=0;
j++;
}
else
{
*(p+i+1)=0;
i++;
}
}
if(i>n-1)
{
i=(i+1)%n-3; //让i回到前面
i--;
}
if(j==n-1)
break;
}
for(i=0;i<=n-1;i++)
{
if(a[i]==0)
continue;
else
cout<<a[i];
}
return 0;
}
是一个n个人围成圈,1-3报数,数到三的人退出,再继续数,直到剩一个人,问剩一个人的序号是多少的问题. 展开
1个回答
展开全部
我把你的程序在我的电脑上运行了一遍,neat.txt文件中输出结果是:
Are yOU tHE best oNe? oNe?
你的这个程序的逻辑错了,你想得到的是Are you the best one
,可是每次while循环的时候处理一个单词,只是把第一个字母变成了小写,后面的字母都不处理,所以是这样个结果。
循环的每一次,读入一个单词,你都是处理str.at(0),就是单词的第一个字母,后面的字符不管,问题出在这里。你应该是在循环内部再写一个循环,遍历整个单词进行处理,这样就对了。
Are yOU tHE best oNe? oNe?
你的这个程序的逻辑错了,你想得到的是Are you the best one
,可是每次while循环的时候处理一个单词,只是把第一个字母变成了小写,后面的字母都不处理,所以是这样个结果。
循环的每一次,读入一个单词,你都是处理str.at(0),就是单词的第一个字母,后面的字符不管,问题出在这里。你应该是在循环内部再写一个循环,遍历整个单词进行处理,这样就对了。
追问
没太看懂...原题是这样的:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.能不用字符串,用数字解释吗?而且我的程序根本运行不出结果...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询