1. 程式人生 > 其它 >Etcd資料庫備份與恢復

Etcd資料庫備份與恢復

e1.

#include<stdio.h>
const int N = 3;
int main() {
 int a[N] = { 1,2,3 };
    int i;
    printf("通過陣列名及下標直接訪問陣列元素:\n");
    for (i = 0; i < N; i++)
        printf("%d:%d\n", &a[i], a[i]);
    printf("通過地址間接訪問陣列元素:\n");
        for (i = 0; i < N; i++)
            printf("%d:%d\n", a + i, *(a + i));

        
return 0; }

1,連續存放。

2作用相同但不等價。

e2

#include<stdio.h>
const int LINE = 2;
const int COL = 3;
int main() {
    int a[LINE][COL] = { 1, 2, 3, 4, 5, 6 };
    int i, j;
    printf("通過陣列名及下標直接訪問陣列元素");
    for (i = 0; i < LINE; i++)
        for (j = 0; j < COL; j++)
            printf("%d:%d\n"
, &a[i][j], a[i][j]); printf("通過地址間接訪問陣列元素"); for (i = 0; i < LINE; i++) for (j = 0; j < COL; j++) printf("%d:%d\n", a[i]+j, *(a[i] + j)); printf("二維地址中a+i表示的地址:\n"); for (i = 0; i < LINE; i++) printf("a+%d: %d\n", i, a + i); return 0; }

1.是

2.不等價

3是,是

e3

#include<stdio.h>
#include<stdlib.h>
const int N = 3;
int main(){

        int a[N];
        int* p, i;

        for (p = a; p < a + N; p++)
            scanf("%d", p);

        for (p = a; p < a + N; p++)
            printf("%d", *p);
        printf("\n");


        p = a;

        for (i = 0; i < N; i++)
            scanf("%d", p + i);

        for (i = 0; i < N; i++)
            printf("%d", *(p + i));

        printf("\n");
        return 0;
    }
    

1.指向p+2和a[2]

2指向a[0]

3這種方式更靈活

e4

#include<stdio.h>
int main()
{
    int a[2][3] = { 1, 2, 3, 4, 5, 6 };
    int i, j;
    int* p;
    int(*q)[3];
    for (p = a[0]; p < a[0] + 6; p++)
        printf("%d", *p);
    printf("\n");
    for (q = a; q < a + 2; q++)
        for (j = 0; j < 3; j++)
            printf("%d", *(*q + j));
            printf("\n");
    return 0;
}

1.可以

2a[0]+j的地址和a[0]+j的值

e5.1

#include<stdio.h>
const int N = 5;
int binarySearch(int x[], int n,int item);
int main()
{
    int a[N] = { 2,7,19,45,66 };
    int i, index, key;
    printf("陣列a中的資料:\n");
    for (i = 0; i < N; i++)
        printf("%d ", a[i]);
    printf("\n");
    printf("輸入待查詢的資料項:");
    scanf("%d", &key);
    index=binarySearch(a, N, key);
    if (index >= 0)
        printf("%d在陣列中,下標為%d\n",key,index);
    else
        printf("%d不在陣列中\n", key);
    return 0;
}
int binarySearch(int x[], int n, int item)
{
    int low, high, mid;
    low = 0;
    high = n - 1;
    while (low <= high)
    {
        mid = (low + high) / 2;
        if (x[mid]==item)
            return mid;
        else if (x[mid]>item)
            high = mid - 1;
        else
            low = mid + 1;
    }
    return -1;
}

e5.2

#include<stdio.h>
const int N = 5;
int binarySearch(int *x, int n, int item);
int main()
{
    int a[N] = { 2,7,19,45,66 };
    int i, index, key;
    printf("陣列a中的資料:\n");
    for (i = 0; i < N; i++)
        printf("%d ", a[i]);
    printf("\n");
    printf("輸入待查詢的資料項:");
    scanf("%d", &key);
    index = binarySearch(a, N, key);
    if (index >= 0)
        printf("%d在陣列中,下標為%d\n", key, index);
    else
        printf("%d不在陣列中\n", key);
    return 0;
}
int binarySearch(int *x, int n, int item)
{
    int low, high, mid;
    low = 0;
    high = n - 1;
    while (low <= high)
    {
        mid = (low + high) / 2;
        if (*(x+mid) == item)
            return mid;
        else if (*(x + mid) > item)
            high = mid - 1;
        else
            low = mid + 1;
    }
    return -1;
}

e6.2

#include<stdio.h>
const int N = 5;
void selectSort(char str[][20] ,int n);
int main() {
    char name[][20] = { "Bob","Bill","Joseph","Taylor","George" };
    int i;
    printf("輸出初始名單:\n");
    for (i = 0; i < N; i++)
        printf("%s\n", name[i]);
     selectSort(name, N);
     printf("按字典序輸出名單:\n");
     for (i = 0; i < N; i++)
     printf("%s\n", name[i]);
}
void selectSort(char str[][20], int n) {
    char temp[20];
    int a,j,k;
    int x, y;
    x = 0;
    y = 0;
    for (a = 0; a < 4; a++) 
    {
        k = a;
        for (j = a + 1; j < n; j++)
            for (y = 0; y < 20; )
            {
                if (str[j][y] < str[k][y])
                {
                    k = j; break;
                }
                else if (str[j][y] > str[k][y])
                    break;
                else
                    y++;
            }
        if (k != a)
        {
            while ((temp[x] = str[a][x] )!= '\0')
            {
                x++;
            }
            x = 0;
            while ((str[a][x] = str[k][x] )!= '\0')
            {
                x++;
            }
            x = 0;
            while ((str[k][x] = temp[x])!= '\0')
            {
                x++;
            }
            x = 0;
        }
    }
}

唯一不明白的就是實驗六比較兩個字串大小直接用><為什麼也可以?