c语言函数解决报数问题 c语言报数游戏编程

c语言中报数问题程序没具体看
10%99=10不是0因为C语言%是求余/ 才是相除取整(舍余舍小数)
c语言函数题:报数#include
#include
#define n 200
void tian(int(*p)[n])
{
int i, j;
int mn=p[n-1][n-1];
for (i=0; imn; ++i)
{
for (j=0; jmn; ++j)
{
if ((i+j==mn-1))
{
p[i][j]=1;
continue;
}
if ((i+jmn-1))
{
p[i][j]=2;
continue;
}
if ((i+jmn-1))
{
p[i][j]=3;
continue;
}
}
}
}
int main()
{
int a[n][n];
int i, j;
int len;
scanf("%d", len);
a[n-1][n-1]=len;
tian(a);
for (i=0; ilen; ++i)
{
for (j=0; jlen; ++j)
printf("%2d", a[i][j]);
printf("\n");
}
return 0;
}
C语言编程,报数问题!#include stdio.h
int main()
{
int N,M,*a;
int i,j,position=1,total=0,chage;/*total出队c语言函数解决报数问题的人数*/
printf("Enter the N and M\n");
scanf("%d%d",N,M);
a=(int *)malloc(N*sizeof(int));
for (i=0;iN;i++)
a[i]=i+1;
while(1)
{
position+=M-1;
while (positionN-total)
position=position-N+total;
chage=a[position-1];
for (j=position;jN-total;j++)
a[j-1]=a[j];
a[N-total-1]=chage;
total++;
if (total==N)/*出队人数等于Nc语言函数解决报数问题 , 程序结束*/
{
for (i=0;iN-1;i++)
printf("%d-",a[N-i-1]);
【c语言函数解决报数问题 c语言报数游戏编程】printf("%d\n",a[0]);
return 0;
}
}
}
C语言编程报数问题自己写的,完整的程序 , 并附有测试的数据 。
分别用链表和顺序表实现了 。楼主可以好好看看 。
代码我就不重复贴了 。好运!
c语言 报数问题方法一:(推荐)不受人数限制,因为采用的动态分配
#include stdio.h
#include malloc.h
/*********************************************************************
*以循环队列的数据结构实现
*时间复杂度T(n)
*采用循环队列数据结构,使得每次对数组的访问次数减少到最少
**********************************************************************/
int main(void)
{
//定义并初始化各种变量
int i=0,//控制变量
num=0,//人数
die=0,//报数值
front,//队头位置
rear,//队尾位置
temp=0;//中间变量
do
{
printf("\n请输入人数(输入小于0退出):");
scanf("%d",num);
printf("\n请输入报数值:");
scanf("%d",die);
int *cycle=(int *)malloc((num+1)*sizeof(int));//多申请一个空间 , 在循环过程中方便处理
//依次编号 , 一号元素为0,暂时闲置
for(i=0;i=num;i++)
{
cycle[i]=i;
}
//置队头和队尾的位置
front=1;
rear=num;
i=1;//报数器置1 , 开始报数
while(front!=rear)//当队列中元素不止一个时,循环
{
//备份出队数据
temp=(rear+1)%(num+1);//在位置rear后预留一个位置,以免有元素入队
cycle[temp]=cycle[front];
front=(front+1)%(num+1);//队头元素出队 , 队头位置加1
//如果出队的人报数符合条件
if(i==die)
{
i=1;//报数重新置1 , 开始报数
printf("%d出队\n",cycle[temp]);//显示出队的元素
}
//如果出队的人报数不符合条件
else
{
i++;//报数值增1
//队尾插入刚出队的元素
rear=(rear+1)%(num+1);
cycle[rear]=cycle[temp];
}
}
printf("幸存者是%d\n",cycle[front]);
free(cycle);
}while(num!=0);

推荐阅读