/*程序设计题目要求 题目:有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*******/
} 展开
注意:部分程序段已给出,请勿改动
仅在两个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*******/
} 展开
2个回答
展开全部
#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的那个人就是最后留下的
}
上机测试已通过。
#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的那个人就是最后留下的
}
上机测试已通过。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询