回覆列表
  • 1 # 使用者5753778326384

    親,這程式碼格式和命名規則看起令人好心累。

    在 func 函式中

    本地變數 p,代表當前下標,被初始化為 0。

    指標引數 k,指向內容代表——陣列中索引 <= p 的數(集合 {s[i]} i <=p)中的最大數的下標,被初始化為 0。

    那麼初始化的正確性就是,p = 0 並且 s[0] 必然是 {s[0]} 中的最大數,所以 *k = 0

    在 for 迴圈中,隨著 p 的向前推進,每次都判斷 s[p] 是否大於 s[0..p - 1] 的 最大值(也就是 s[*k])。如果大於,則 s[0..p] 的最大值是 s[p],且 *k = p。如果不是,則 s[0..p] 的最大值仍然是 s[*k],k 保持不變。

    迴圈不變式證明演算法(邊界)正確性,在這裡也比較類似數學歸納法。

    建議,在網上找個 C 程式碼規範學習下。然後掌握基本的迴圈不變式的含義。

  • 2 # 使用者1844319796352

    #include

    #define N 80

    int input(int *arr)

    {

    int *pnew=arr;

    int count=0;

    printf("請輸入整型資料(按q/Q退出:)\n");

    while(1==scanf("%d",pnew)&&pnew

  • 中秋節和大豐收的關聯?
  • 林海音還寫過哪些作品?