真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言函數(shù)解決報數(shù)問題 c語言函數(shù)解決報數(shù)問題嗎

c語言 報數(shù)問題

方法一:(推薦)不受人數(shù)限制,因為采用的動態(tài)分配

創(chuàng)新互聯(lián)專業(yè)提供成都IDC機房托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買成都IDC機房托管服務(wù),并享受7*24小時金牌售后服務(wù)。

#include stdio.h

#include malloc.h

/*********************************************************************

*以循環(huán)隊列的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)

*時間復(fù)雜度T(n)

*采用循環(huán)隊列數(shù)據(jù)結(jié)構(gòu),使得每次對數(shù)組的訪問次數(shù)減少到最少

**********************************************************************/

int main(void)

{

//定義并初始化各種變量

int i=0,//控制變量

num=0,//人數(shù)

die=0,//報數(shù)值

front,//隊頭位置

rear,//隊尾位置

temp=0;//中間變量

do

{

printf("\n請輸入人數(shù)(輸入小于0退出):");

scanf("%d",num);

printf("\n請輸入報數(shù)值:");

scanf("%d",die);

int *cycle=(int *)malloc((num+1)*sizeof(int));//多申請一個空間,在循環(huán)過程中方便處理

//依次編號,一號元素為0,暫時閑置

for(i=0;i=num;i++)

{

cycle[i]=i;

}

//置隊頭和隊尾的位置

front=1;

rear=num;

i=1;//報數(shù)器置1,開始報數(shù)

while(front!=rear)//當隊列中元素不止一個時,循環(huán)

{

//備份出隊數(shù)據(jù)

temp=(rear+1)%(num+1);//在位置rear后預(yù)留一個位置,以免有元素入隊

cycle[temp]=cycle[front];

front=(front+1)%(num+1);//隊頭元素出隊,隊頭位置加1

//如果出隊的人報數(shù)符合條件

if(i==die)

{

i=1;//報數(shù)重新置1,開始報數(shù)

printf("%d出隊\n",cycle[temp]);//顯示出隊的元素

}

//如果出隊的人報數(shù)不符合條件

else

{

i++;//報數(shù)值增1

//隊尾插入剛出隊的元素

rear=(rear+1)%(num+1);

cycle[rear]=cycle[temp];

}

}

printf("幸存者是%d\n",cycle[front]);

free(cycle);

}while(num!=0);

return 0;

}

方法二:(按你的要求)

#include stdio.h

/*********************************************************************

*以純粹的思維方法實現(xiàn)

*時間復(fù)雜度T(n)

*過程繁瑣,而且也不容易理解

*********************************************************************/

void main(void)

{

int result(int *p,int n,int m);

int i=0,m=0,n=0;

int num[50];

int *p;

for(;;)

{

printf("輸入人數(shù)和報數(shù)值:");

scanf("%d%d", n, m);

for(i = 0; i n; i++)

num[i] = i + 1;

p = num;

cout"The last one is NO."result(p,n,m)endl;

}

}

int result(int *p,int n,int m)

{

int i=0;

for(i=0;in;i++)

p[i]=i+1;

i=0; // i為每次循環(huán)時計數(shù)變量

int k=0; // k為按1,2,3...m報數(shù)時的計數(shù)變量

int die=0; // die為退出人數(shù)

while (dien-1) // 當退出人數(shù)比n-1少時(即未退出人數(shù)大于1時)執(zhí)行循環(huán)體

{

if (p[i]!=0) k++; //如果編號為0,就不報數(shù);如果編號不為0,報數(shù)加1

if (k==m) // 將退出的人的編號置為0

{

printf("%d退出\n",p[i]);

p[i]=0;

k=0;//重新開始報數(shù)

m++;//退出人數(shù)加1

}

i++;

if (i==n) i=0; // 報數(shù)到尾后,i恢復(fù)為0

}

while(*p==0) p++;

return *p;

}

c語言報數(shù)問題

設(shè)有n個人圍坐一圈并按順時針方向從1到n編號,從第s個人開始進行1到m的報數(shù),報數(shù)到第個m人,此人出圈,再從他的下一個人重新開始1到m的報數(shù),如此進行下去直到所有的人都出圈為止?,F(xiàn)要求按出圈次序,每10人一組,給出這n個人的順序表。請考生編制函數(shù)Josegh()實現(xiàn)此功能并調(diào)用函數(shù)WriteDat()把結(jié)果p輸出到文件OUT.DAT中。

設(shè)n=100,c=1,m=10.

(1)將1到n個人的序號存入一維數(shù)組p中;

(2)若第i個人報數(shù)后出圈,則將p[i]置于數(shù)組的倒數(shù)第i個位置上,而原來第i+1個至倒數(shù)第i個元素依次向前移動一個位置;

(3)重復(fù)第(2)步直至圈中只剩下p[1]為止。

部分源程序已給出。

請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writeDat()的內(nèi)容。 #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()循環(huán)是先對數(shù)組p賦初值。在第二個for()中用i來控制沒出圈的

總?cè)藬?shù),s1=(s1+m-1)%i的作用是找出報數(shù)后出圈人的下標,其中對i求余的作用是使報

數(shù)按圈進行(即報到尾后又從頭報),該算法在很多題目中都用到。由于求余的作用當

報數(shù)正好到最后一個時s1為0,故而要進行if(s1==0)的判斷。內(nèi)嵌的for()循環(huán)是將出圈

以后的人依次往前移。*/

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}

} 這的問題和這個一樣,看看吧,應(yīng)該能解決了

c語言中報數(shù)問題

程序沒具體看

10%99=10不是0因為C語言%是求余 / 才是相除取整(舍余舍小數(shù))

C語言編程,報數(shù)問題!

#include stdio.h

int main()

{

int N,M,*a;

int i,j,position=1,total=0,chage;/*total出隊的人數(shù)*/

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)/*出隊人數(shù)等于N,程序結(jié)束*/

{

for (i=0;iN-1;i++)

printf("%d-",a[N-i-1]);

printf("%d\n",a[0]);

return 0;

}

}

}

c語言函數(shù)題:報數(shù)

#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語言函數(shù)解決報數(shù)問題 c語言函數(shù)解決報數(shù)問題嗎
本文路徑:http://weahome.cn/article/hhopse.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部