-
2003-12-02
报数退出问题
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://hawkman2k.blogbus.com/logs/54591.html
〔题目〕有15个人围成一圈,顺序从1到15编号。从第一个人开始报数,凡报到n的人退出圈子。用C语言写出程序。
#include "stdio.h"
int main(int argc, char* argv[])
{
bool a[15]; //判断是否已经退出
int sum=15,i,count=0,n;for(i=0;i<15;i++) //数组初始化
a[i]=true;printf("有15个人围成一圈,顺序从1到15编号。从第一个人开始报数,凡报到n的人退出圈子。\
\n请输入n: "); //获取报数单位n
scanf("%d",&n);for(i=0;;i++)
{
if(i==15) i=0; //如果到了队尾则回到队头
if(a[i]) count++; //如果这个位置的还没退出则报数的数目加一
if(count==n)
{
a[i]=false; //退出
sum--; //队中现有人数减一
printf("No.%d ",i+1); //输出退出的人的号码
count=0; //重新报数
if(sum==0)
{
printf("\n"); //输入结束换行,美观起见 ~_~
return 0; //如果最后一个人退出,结束程序
}
}
}
}随机文章:
模拟键盘响应 2003-12-11计数排序(count sorting) 2003-12-02部落格s 2019-02-07经典C++双向冒泡排序算法 2003-12-09求100以内的素数 2003-12-02
收藏到:Del.icio.us







