c++程序设计第3版谭浩强课后答案
C++编程,要求用指针或引用方法处理:
有n个人围成一圈 顺序排号 从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。
以下是此题的【c++源代码】,需要【c源代码】请点击进入
#include <iostream>
using namespace std;
int main()
{int i,k,m,n,num[50],*p;
cout<<"input number of person: n=";
cin>>n;
p=num;
for (i=0;i<n;i++)
*(p+i)=i+1; // 以1至n为序给每个人编号
i=0; // i为每次循环时计数变量
k=0; // k为按1,2,3报数时的计数变量
m=0; // m为退出人数
while (m<n-1) // 当退出人数比n-1少时(即未退出人数大于1时)执行循环体
{if (*(p+i)!=0) k++;
if (k==3) // 将退出的人的编号置为0
{*(p+i)=0;
k=0;
m++;
}
i++;
if (i==n) i=0; // 报数到尾后,i恢复为0
}
while(*p==0) p++;
cout<<"The last one is NO."<<*p<<endl;
return 0;
}
本文链接:http://www.wb98.com/cjia/post/cjia_6.5.html
本站文章搜索: