C語言-移數字遊戲

將1~8個數隨機的填寫到該數陣的外層圓圈中,只剩下中間的一個空圓圈。規定每個數字只能按照數陣中的直線從一個圓圈移動到另一個空的圓圈中。通過若干步的移動,要求將該數陣中的數字移動成爲圖中所示的狀態

void Print(int m[]) {
    printf("    [%d]--[%d]--[%d]\n", m[0], m[1], m[2]);
    printf("     |  %c | %c  | \n", 92, 47);
    printf("    [%d]--[ ]--[%d]\n", m[7], m[3]);
    printf("     |  %c | %c  | \n", 47, 92);
    printf("    [%d]--[%d]--[%d]\n", m[6], m[5], m[4]);
}
void getStep(int m[]) {
    for (int i = 0; i < 8; ++i) {
        for (int j = 0; j < 8 - i - 1; ++j) {
            if (m[j] > m[j + 1]) {
                int tmp  = m[j];
                m[j]     = m[j + 1];
                m[j + 1] = tmp;
                printf("(%d#  -->  0#)\n", j + 1);
                printf("(%d#  -->  %d#)\n", j + 2, j + 1);
                printf("(0#  -->  %d#)\n", j + 2);
            }
        }
    }
    printf("\n");
}
int main(int argc, const char *argv[]) {
    int i, m[8];
    printf("Please input 8 integer (1~8) to arrange this matrix\n");
    for (i = 0; i < 8; ++i) {
        scanf("%d", &m[i]);
    }
    printf("The initial data matrix is like\n");
    Print(m);
    printf("\nMove Step:\n");
    getStep(m);
    printf("The result of moving is\n");
    Print(m);
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章