zoz○zo女人和另类zoz0,freeⅹ性欧美xvideos,中文字幕人妻一区二区三区熟女,97四房播播,av狼最新网址

大學(xué)生新聞網(wǎng),大學(xué)生新聞發(fā)布平臺
大學(xué)生新聞網(wǎng)
大學(xué)生新聞大學(xué)生活校園文學(xué)大學(xué)生村官
社會實(shí)踐活動社會實(shí)踐經(jīng)歷社會實(shí)踐報(bào)告社會實(shí)踐總結(jié)社會實(shí)踐心得
全國排名校友會版軟科排名分類排名本科排名一本排名二本排名專科排名學(xué)校地址
求職簡歷職場法則面試技巧職場故事求職招聘大學(xué)生就業(yè)
英語學(xué)習(xí)計(jì)算機(jī)學(xué)習(xí)電氣工程機(jī)械工程經(jīng)濟(jì)管理建筑設(shè)計(jì)財(cái)務(wù)會計(jì)
申請書證明書檢討書自薦信演講稿心得體會調(diào)查報(bào)告讀后感求職信推薦信其它范文

C語言約瑟夫環(huán)問題

編號為 1,2,3,…,n 的 n 個(gè)人圍坐一圈,任選一個(gè)正整數(shù) m 作為報(bào)數(shù)上限值,從第一個(gè)人開始按順時(shí)針方向報(bào)數(shù),報(bào)數(shù)到 m 時(shí)停止,報(bào)數(shù)為 m 的人出列。從出列人的順時(shí)針方向的下一個(gè)人開始又從 1 重新報(bào)數(shù),如此下去,直到所有人都全部出列為止。

算法思想
每個(gè)人的編號存放在一個(gè)數(shù)組 a 中,主函數(shù)中決定人數(shù)的個(gè)數(shù)以及報(bào)數(shù)的上限值 m,設(shè)計(jì)一個(gè)函數(shù)實(shí)現(xiàn)對應(yīng)的操作。函數(shù)的形參有整型數(shù)組 a、整數(shù) n 和 m,n 用來接收傳遞的人數(shù),m 用來接收報(bào)數(shù)上限,函數(shù)的返回值為空;函數(shù)體中輸出出列人的順序。

函數(shù)中利用循環(huán)訪問數(shù)組中 n 個(gè)元素,每次訪問元素,設(shè)定內(nèi)循環(huán)連續(xù)訪問 m 個(gè)元素,元素訪問的下標(biāo)為 k,訪問到第 m 個(gè)元素時(shí),如果元素不是 0,此時(shí)輸出元素 a[k],再設(shè)定 a[k] 為 0,繼續(xù)訪問后面的元素。


主函數(shù)中設(shè)定數(shù)組 a,從鍵盤輸入 n 和 m,利用循環(huán)產(chǎn)生 n 的位置序號存放到數(shù)組 a 中,調(diào)用函數(shù)實(shí)現(xiàn)相應(yīng)的操作。

程序代碼

#include <stdio.h>
#define N 100
int josef(int a[],int n,int m)
{
    int i,j,k=0;
    for(i=0;i<n;i++)
    {
        j=1;
        while(j<m)
        {
            while(a[k]==0)
            k=(k+1)%n;
            j++;
            k=(k+1)%n;
        }
        while(a[k]==0)
        k=(k+1)%n;
        printf("%d ",a[k]);
        a[k]=0;
    }
    return 0;
}
 
int main()
{
    int a[100];
    int i,j,m,n;
    printf("input n and m:");
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
        a[i]=i+1;
    printf("\n output:\n");
    josef(a,n,m);
    printf("\n");
    return 0;
}
調(diào)試運(yùn)行結(jié)果
15 個(gè)人圍坐在一起,報(bào)數(shù)上限為 4 時(shí)的出列順序如下所示:
input n and m:15 4

output:
4 8 12 1 6 11 2 9 15 10 5 3 7 14 13
100 個(gè)人圍坐在一 起,報(bào)數(shù)上限為 9 時(shí)的出列順序如下所示:
input n and m:100 9

output:
9 18 27 36 45 54 63 72 81 90 99 8 19 29 39 49 59 69 79 89 100 11 22 33 44 56 67
78 91 2 14 26 40 52 65 77 92 4 17 32 47 61 75 88 5 21 37 53 70 85 1 20 38 57 74
94 12 31 51 73 95 15 41 62 84 7 34 60 86 13 43 71 98 30 66 97 35 76 10 50 93 42
83 28 87 48 6 68 46 23 3 96 16 25 64 55 58 24 80 82

總結(jié)
① 程序由 main() 函數(shù)和 josef() 函數(shù)組成,main() 函數(shù)調(diào)用 josef() 函數(shù),用數(shù)組名作為函數(shù)參數(shù),在主函數(shù)和被調(diào)用函數(shù)中分別定義數(shù)組。主函數(shù)執(zhí)行到 josef(a,n,m) 語句時(shí),將數(shù)組 a 的首元素的地址傳遞給形參數(shù)組 a,程序轉(zhuǎn)去執(zhí)行 josef(),形參數(shù)組 a 中的元素發(fā)生逆序排列,則實(shí)參數(shù)組 a 也隨之改變,當(dāng) josef() 執(zhí)行完后,返回到主函數(shù)中繼續(xù)執(zhí)行被調(diào)函數(shù)后面的語句。

② 實(shí)例中定義函數(shù) josef() 解決問題的難點(diǎn)有兩個(gè):一是如何求下一個(gè)出圈的人的位置;二是此人出圈后對這個(gè)人的位置如何處理。從第一個(gè)人開始報(bào)數(shù),報(bào)到 m 時(shí),此人出圈,設(shè)定變量 j,每次統(tǒng)計(jì)出圈的人數(shù),當(dāng)出圈人數(shù)到 m 時(shí),重新開始統(tǒng)計(jì)。n 個(gè)人圍坐一圈,可看作環(huán)狀,設(shè)定 k 表示出圈人的下標(biāo),則出圈人的下標(biāo)的計(jì)算可用“(k+l)%n”表示。對于第二個(gè)問題,首先將出圈人的位置打印輸出,然后將其位置元素設(shè)置為 0。


③ 數(shù)組名作函數(shù)參數(shù)時(shí),要求在被調(diào)用函數(shù)和調(diào)用函數(shù)中分別定義數(shù)組,且形參和實(shí)參必須是類型相同的數(shù)組。實(shí)參和形參數(shù)組是指向同一段地址空間的,當(dāng)主函數(shù)執(zhí)行時(shí),這段空間由實(shí)參數(shù)組控制,當(dāng)被調(diào)用函數(shù)執(zhí)行時(shí),這段空間由形參數(shù)組使用,被調(diào)函數(shù)執(zhí)行結(jié)束后,該空間又交回給實(shí)參數(shù)組。


用數(shù)組名作為函數(shù)參數(shù)時(shí),形參與實(shí)參之間的傳遞方式為地址傳遞,因此,形參數(shù)組的改變會影響實(shí)參數(shù)組的內(nèi)容。



C 編譯系統(tǒng)對形參數(shù)組的大小不做檢查,只是將實(shí)參數(shù)組的首地址傳給形參數(shù)組,所以形參數(shù)組可以不用指定大小。如實(shí)例中被調(diào)用函數(shù)的首部定義為 void josef(int a[], int n,int m),其中的整型數(shù)組 a 的定義為 int a[],沒有給出數(shù)組的具體大小。



④ 一維數(shù)組名、多維數(shù)組名都可以作為函數(shù)的參數(shù),進(jìn)行地址傳遞。
    作者:大學(xué)生新聞網(wǎng)    來源:大學(xué)生新聞網(wǎng)
    發(fā)布時(shí)間:2025-03-10    閱讀:
    掃一掃 分享悅讀
  • C語言整數(shù)逆序輸出
  • 將一個(gè)從鍵盤輸入的整數(shù)存放到一個(gè)數(shù)組中,通過程序的運(yùn)行按照數(shù)組中的逆序輸出該整數(shù),利用遞歸的方法解決問題。
  • 03-10 關(guān)注:0
  • C語言約瑟夫環(huán)問題
  • 編號為 1,2,3,…,n 的 n 個(gè)人圍坐一圈,任選一個(gè)正整數(shù) m 作為報(bào)數(shù)上限值,從第一個(gè)人開始按順時(shí)針方向報(bào)數(shù),報(bào)數(shù)到 m 時(shí)停止,報(bào)
  • 03-10 關(guān)注:0
  • C語言輸出等腰三角形
  • 本實(shí)例要求從鍵盤輸入任意整數(shù) n,通過程序運(yùn)行輸出對應(yīng)高度為 n 的等腰三角形。
  • 03-10 關(guān)注:0
  • C語言字符串加密和解密算法
  • 在本實(shí)例中要求設(shè)計(jì)一個(gè)加密和解密算法。在對一個(gè)指定的字符串加密之后,利用解密函數(shù)能夠?qū)γ芪慕饷埽@示明文信息。
  • 03-09 關(guān)注:3
  • C語言獲取矩陣的最大值及其下標(biāo)
  • 本實(shí)例要求使用二維數(shù)組將一個(gè) 3×4 的矩陣中所有元素的最大值及其下標(biāo)獲取,通過該程序,掌握二維數(shù)組的引用知識。
  • 03-09 關(guān)注:4
  • C語言誰家孩子跑得最慢
  • 張、王、李三家各有三個(gè)小孩。一天,三家的九個(gè)孩子在一起比賽短跑,規(guī)定不分年齡大小,跑第一得 9 分,跑第二得 8 分,依次類推。
  • 03-09 關(guān)注:3
  • C語言狼追兔子問題
  • 一只兔子躲進(jìn)了 10 個(gè)環(huán)形分布的洞的某一個(gè),狼在第一個(gè)洞沒有找到兔子,就隔一個(gè)洞,到第三個(gè)洞去找
  • 03-09 關(guān)注:2