欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2252|回復: 0
打印 上一主題 下一主題
收起左側

C語言的算法:報數游戲程序

[復制鏈接]
跳轉到指定樓層
樓主
學技術,重在日拱一卒,一點一滴的積累。


今天,我們一起來分析C語言的算法:報數游戲。


算法:假設一共有n個人玩游戲,編號分別為1~n,手動輸入一個小于n的數w,則從1開始查數,當數到w的時候,則此編號的人退出游戲,然后下一個人重新開始從1報數,,直到所有人都退出游戲,求退出玩家的編號依次為什么?

例如:有5人玩游戲,w為2,則退出順序為2 4 1 5 3。



編程思路


編程思路:


1、根據題目要求,需要輸入兩個數n和m,當每次到m的時候,就有人退出,然后再重新開始報數1~m。

2、可以通過要求,理解為將1~n編號從1開始循環,到m之后對應編號退出,再重新開始循環,那么為了達到以上目的,可以通過設置鏈表的方式來存儲編號,同時將鏈表的首位連接,構成閉環的鏈表。

3、通過閉環的鏈表,我們就可以不斷的循環n次,在每次循環里面再循環m次,每次退出一人,然后在while循環中執行n減減操作,直到所有人退出完畢,結束循環。


程序范例
#include <stdio.h>

#include <stdlib.h>

struct ele

{

  int no;

  struct ele *link;

};

int n,m,i;

main()

{

  struct ele *h,*u,*p;

  system("cls");

  printf("請輸入 n (一共有多少人完游戲)和 m(報幾個數出去一個人):\n");

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

  h=u=(struct ele *)malloc(sizeof(struct ele));

  h->no=1;

  for(i=2;i<=n;i++)

  {

    u->link=(struct ele *)malloc(sizeof(struct ele));

    u=u->link;

    u->no=i;

  }

  u->link=h;

  puts("\n依次退出循環的人數是:");


while(n)

{

  for(i=1;i<m;i++)

  u=u->link;

  p=u->link;

  u->link=p->link;

  printf("%4d",p->no);

  free(p);

  n--;

}

printf("\n\n Press any key to quit...\n");

getch();

}

程序運行結果:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表