日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实验8-1-8 报数 (20 分)

發布時間:2023/12/29 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实验8-1-8 报数 (20 分) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

浙大版《C語言程序設計實驗與習題指導(第3版)》題目集

實驗8-1-8 報數 (20 分)

報數游戲是這樣的:有n個人圍成一圈,按順序從1到n編好號。從第一個人開始報數,報到m(<n)的人退出圈子;下一個人從1開始報數,報到m的人退出圈子。如此下去,直到留下最后一個人。

本題要求編寫函數,給出每個人的退出順序編號。

函數接口定義:

void CountOff( int n, int m, int out[] );

其中n是初始人數;m是游戲規定的退出位次(保證為小于n的正整數)。函數CountOff將每個人的退出順序編號存在數組out[]中。因為C語言數組下標是從0開始的,所以第i個位置上的人是第out[i-1]個退出的。

裁判測試程序樣例:

#include <stdio.h> #define MAXN 20void CountOff( int n, int m, int out[] );int main() {int out[MAXN], n, m;int i;scanf("%d %d", &n, &m);CountOff( n, m, out ); for ( i = 0; i < n; i++ )printf("%d ", out[i]);printf("\n");return 0; }/* 你的代碼將被嵌在這里 */

輸入樣例:

11 3

輸出樣例:

4 10 1 7 5 2 11 9 3 6 8

我的代碼:

void CountOff( int n, int m, int out[] ){for(int i = 0; i < n; i++){out[i] = 0;}int x = m-1;x %= n;int term = 1;while(1){out[x] = term;//一共n個人,進行了n輪就能結束了if(term == n) break;//算出下一個出局學生的位置for(int i = 0; i < m; i++){x++;x %= n;while(out[x] > 0)//大于0就說明這個玩家已經出局了{x++;x %= n;}}term++;} }

麻煩的地方就是算出下一個出局玩家的位置。原本想構造結構,加一個變量用來記錄玩家是否出局。后來發現其實沒必要,可以初始化out[]為0,只要out[x]>0,就說明x+1已經出局了。

總結

以上是生活随笔為你收集整理的实验8-1-8 报数 (20 分)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。