c语言报数函数问题 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语言报数问题设有n个人围坐一圈并按顺时针方向从1到n编号 , 从第s个人开始进行1到m的报数,报数到第个m人,此人出圈 , 再从他的下一个人重新开始1到m的报数 , 如此进行下去直到所有的人都出圈为止 。现要求按出圈次序,每10人一组 , 给出这n个人的顺序表 。请考生编制函数Josegh()实现此功能并调用函数WriteDat()把结果p输出到文件OUT.DAT中 。
设n=100,c=1,m=10.
(1)将1到n个人的序号存入一维数组p中;
(2)若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;
(3)重复第(2)步直至圈中只剩下p[1]为止 。
部分源程序已给出 。
请勿改动主函数main()和输出数据函数writeDat()的内容 。#include stdio.h
#define N 100
#define S 1
#define M 10int p[100],n,s,m;
void WriteDat(void);void Josegh(void)
{}void main()
{
m=M;
n=N;
s=S;
Josegh();
WriteDat();
}void WriteDat(void)
{
int i;
FILE *fp;
fp=fopen("out.dat" ," w" );
for(i=N-1;i=0;i--){
printf(" %4d" ,p[i]);
fprintf(fp," %4d" ,p[i]);
if(i % 10==0){
printf("\n" );
fprintf(fp, "\n" );
}
}
fclose(fp);
}
/* 注:题中第一个for()循环是先对数组p赋初值 。在第二个for()中用i来控制没出圈的
总人数 , s1=(s1+m-1)%i的作用是找出报数后出圈人的下标,其中对i求余的作用是使报
数按圈进行(即报到尾后又从头报),该算法在很多题目中都用到 。由于求余的作用当
报数正好到最后一个时s1为0,故而要进行if(s1==0)的判断 。内嵌的for()循环是将出圈
以后的人依次往前移 。*/
void Josegh(void)
{
int i,j,s1,w;
s1=s;
for(i=1;i=n;i++)
p[i-1]=i;
for(i=n;i=2;i--)
{s1=(s1+m-1)%i;brif(s1==0)brs1=i;brw=p[s1-1];brfor(j=s1;ji;j++)brp[j-1]=p[j];brp[i-1]=w;br}
} 这的问题和这个一样,看看吧 , 应该能解决了
c语言中报数问题程序没具体看
10%99=10不是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);

推荐阅读