/*程序设计题目要求 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3

圈子,问最后留下的是原来第几号的那位。注意:部分程序段已给出,请勿改动仅在两个found中填入你编写的若干语句。本题20分*/#definenmax50main(){in... 圈子,问最后留下的是原来第几号的那位。
注意:部分程序段已给出,请勿改动
仅在两个found中填入你编写的若干语句。本题20分*/
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
/*********found*******/

/*********found*******/
}
展开
 我来答
帐号已注销
2011-06-19 · TA获得超过2807个赞
知道小有建树答主
回答量:559
采纳率:0%
帮助的人:983万
展开全部
#include<stdio.h> //运行检验的话加上
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;

for(i=0;p<num+n;i++,p++)
*p=i+1; //给每个人从未有1开始排个号
p=num;k=n; //从第一个人报数起,k用来计算剩下的人数
for(m=0,i=0;k!=1;i++) //用k来控制出口
{
if(p>(num+n-1)) p=num; //把人围成一个圈那样,最后一人报后,又回到队头
if(*p!=0) m++; //用m不断变为1,2,3,找出m=3者即可
if((m-3)==0) {*p=0;m=0;k--;} //找到数3人后,把他的号值变为0,不用数他了。m变回0再
//重复1,2,3地数
p++; //移动到下一人
}
for(i=0;i<n;i++)
if(num[i]!=0)
printf("the last number id %d\n",num[i]); //号值不是0的那个人就是最后留下的
}
上机测试已通过。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
154vpbuwy
2011-06-19 · TA获得超过3772个赞
知道大有可为答主
回答量:4585
采纳率:0%
帮助的人:907万
展开全部
#include<stdio.h>
#define MAX 500

main()
{
int i,k,m,n,people[MAX],*p;

printf("please input the number of people:");
scanf("%d",&n);
p=people;
for(i=0;i<n;i++)
*(p+i)=i+1;

i=0;
k=0;
m=0;

while(m<n-1)
{
if(*(p+i)!=0)
k++;
if(k==5)
{
*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n)
i=0;
}
while(*p==0)
p++;
printf("The people whose number is %d is left\n",*p);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式