作业帮 > 综合 > 作业

一道有关C语言的问题题目:1. m个人围成一圈,1,2,3循环报数,报到3的人退出,并将退出的序号依次 存到数组p中,包

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 05:31:20
一道有关C语言的问题
题目:1. m个人围成一圈,1,2,3循环报数,报到3的人退出,并将退出的序号依次
存到数组p中,包括最后一个人的序号.到最后只余1人,输出最后留下
的是第几号(最初的序号,以1起始).
若m=6,则输出n=1 3 6 4 2 5 1;
若m=10,则输出n=4 3 6 9 2 7 8 5 10 4;
若m=100,则输出n=91…….
函数int fun(int n ,int *p)实现上述功能,返回n个人中最后余的1人
的起始序号,并将退出的序号顺序写入p指向的数组中.


我编的:#include
#include
void NONO();
int fun(int n,int *p)
{
int k=0,i,a[1000],j=1;
for(i=0;i=n)
i=0;
if(k==n)break;

}
return p[k-1];
}
void main()
{int m,*a,i,num;
scanf("%d",&m);
a=(int *)malloc(sizeof(int)*m);
num=fun(m,a);
printf("n=%d\n",num);
for(i=0;i
while(a[i]==0)i++; //这里会造成数组下标越界 改成 i= (++i)%n;
if(j==3)
{
p[k]=a[i];
a[i]=0;
k++;
j=1;
i++;
}
if(j!=3) //这里要改成 else if 要不然当 j==3 时 执行完 k++ j=1,i++后 由于 j!=3 又要执行一次
//i++; j++;
{
i++;
j++;
}
再问: 谢谢您!!能得出正确的结论了,但为什么运行完程序还是报错?说出了问题,停止工作,注:后面有一个辅助的评分系统。然后下面的警告是:return type of “main” is not “int”
一道有关C语言的问题题目:1. m个人围成一圈,1,2,3循环报数,报到3的人退出,并将退出的序号依次 存到数组p中,包 用C语言编写:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,请输出报数出列圈及最 2:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子, C语言:有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, c语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1~3报数),报到3的人退出圈子,求退出顺序 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出(pascal C语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子 问最后留下 C语言:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子 C语言:有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 100个小朋友围成一圈,并依次编为1-100号.从第1号开始1至2报数,凡是报到1的小朋友退出圈子,这样循环进行到剩下最 有10个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到了的人退出圈子,问最后留下的是原来第几号的那位.